
/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int sqlite3_db_status(sqlite3 *db,int op,int *pCurrent,int *pHighwater,int resetFlag)

{
  ushort uVar1;
  Btree *pBVar2;
  Schema *pSVar3;
  _ht *p_Var4;
  Vdbe *p;
  LookasideSlot *pLVar5;
  Pager *pPVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  Db *pDVar10;
  LookasideSlot *pLVar11;
  int iVar12;
  HashElem *pHVar13;
  int iVar14;
  int in_GS_OFFSET;
  sqlite3 *in_stack_ffffffb4;
  Vdbe *in_stack_ffffffb8;
  int local_40;
  int local_34;
  int nByte;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (db->mutex == (sqlite3_mutex *)0x0) {
    switch(op) {
    case 0:
      goto _L14445;
    case 1:
    case 0xb:
      goto _L14439;
    case 2:
      goto _L14444;
    case 3:
      goto _L14443;
    case 4:
    case 5:
    case 6:
      goto _L14442;
    case 7:
    case 8:
    case 9:
      goto _L14446;
    case 10:
      goto _L14440;
    case 0xc:
      goto _L14437;
    default:
      iVar14 = 1;
      goto LAB_00065957;
    }
  }
  (*sqlite3Config.mutex.xMutexEnter)(db->mutex);
  switch(op) {
  case 0:
    goto _L14445;
  case 1:
  case 0xb:
_L14439:
    if (db->noSharedCache == '\0') {
      btreeEnterAll(db);
      if (0 < db->nDb) goto LAB_00065c55;
      local_34 = 0;
LAB_00065ce4:
      if (db->noSharedCache == '\0') {
        btreeLeaveAll(db);
      }
    }
    else {
      if (0 < db->nDb) {
LAB_00065c55:
        if (op == 0xb) {
          local_40 = 0;
          local_34 = 0;
          do {
            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {
              local_40 = local_40 + 1;
              if (db->nDb <= local_40) goto LAB_00065ce4;
            }
            pPVar6 = pBVar2->pBt->pPager;
            uVar1 = pPVar6->nExtra;
            iVar14 = pPVar6->pageSize;
            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);
            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);
            local_40 = local_40 + 1;
            local_34 = local_34 +
                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /
                       pBVar2->pBt->nRef;
          } while (local_40 < db->nDb);
        }
        else {
          iVar14 = 0;
          local_34 = 0;
          do {
            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {
              iVar14 = iVar14 + 1;
              if (db->nDb <= iVar14) goto LAB_00065ce4;
            }
            iVar14 = iVar14 + 1;
            pPVar6 = pBVar2->pBt->pPager;
            uVar1 = pPVar6->nExtra;
            iVar12 = pPVar6->pageSize;
            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);
            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);
            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;
          } while (iVar14 < db->nDb);
        }
        goto LAB_00065ce4;
      }
      local_34 = 0;
    }
    iVar14 = 0;
    *pCurrent = local_34;
    *pHighwater = 0;
    break;
  case 2:
_L14444:
    nByte = 0;
    if (db->noSharedCache == '\0') {
      btreeEnterAll(db);
    }
    iVar14 = db->nDb;
    local_40 = 0;
    db->pnBytesFreed = &nByte;
    if (0 < iVar14) {
      do {
        pSVar3 = db->aDb[local_40].pSchema;
        if (pSVar3 != (Schema *)0x0) {
          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);
          nByte = iVar14 * ((pSVar3->idxHash).count +
                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +
                           (pSVar3->fkeyHash).count) + nByte;
          p_Var4 = (pSVar3->tblHash).ht;
          if (p_Var4 != (_ht *)0x0) {
            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);
            nByte = iVar14 + nByte;
          }
          p_Var4 = (pSVar3->trigHash).ht;
          if (p_Var4 != (_ht *)0x0) {
            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);
            nByte = iVar14 + nByte;
          }
          p_Var4 = (pSVar3->idxHash).ht;
          if (p_Var4 != (_ht *)0x0) {
            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);
            nByte = iVar14 + nByte;
          }
          p_Var4 = (pSVar3->fkeyHash).ht;
          if (p_Var4 != (_ht *)0x0) {
            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);
            nByte = iVar14 + nByte;
          }
          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;
              pHVar13 = pHVar13->next) {
            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {
              pHVar13 = pHVar13->next;
              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;
            }
            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);
          }
LAB_00065ae9:
          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;
              pHVar13 = pHVar13->next) {
            sqlite3DeleteTable(db,(Table *)pHVar13->data);
          }
          iVar14 = db->nDb;
        }
        local_40 = local_40 + 1;
      } while (local_40 < iVar14);
    }
    db->pnBytesFreed = (int *)0x0;
    if (db->noSharedCache == '\0') {
      btreeLeaveAll(db);
    }
    iVar14 = 0;
    *pHighwater = 0;
    *pCurrent = nByte;
    break;
  case 3:
_L14443:
    p = db->pVdbe;
    nByte = 0;
    db->pnBytesFreed = &nByte;
    for (; p != (Vdbe *)0x0; p = p->pNext) {
      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);
      sqlite3DbFreeNN(db,p);
    }
    db->pnBytesFreed = (int *)0x0;
    iVar14 = 0;
    *pHighwater = 0;
    *pCurrent = nByte;
    break;
  case 4:
  case 5:
  case 6:
_L14442:
    *pCurrent = 0;
    *pHighwater = (db->lookaside).anStat[op + -4];
    if (resetFlag != 0) {
      (db->lookaside).anStat[op + -4] = 0;
      iVar14 = 0;
      break;
    }
    goto LAB_00065c08;
  case 10:
_L14440:
    *pHighwater = 0;
    uVar8 = 1;
    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {
      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;
      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -
              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;
    }
    iVar14 = 0;
    *pCurrent = uVar8;
    break;
  case 0xc:
_L14437:
    op = 10;
  case 7:
  case 8:
  case 9:
_L14446:
    iVar14 = db->nDb;
    if (iVar14 < 1) {
      iVar12 = 0;
    }
    else if (resetFlag == 0) {
      iVar7 = 0;
      iVar12 = 0;
      do {
        pBVar2 = db->aDb[iVar7].pBt;
        if (pBVar2 != (Btree *)0x0) {
          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];
        }
        iVar7 = iVar7 + 1;
      } while (iVar7 != iVar14);
    }
    else {
      pDVar10 = db->aDb;
      iVar12 = 0;
      iVar7 = 0;
      do {
        pBVar2 = pDVar10[iVar7].pBt;
        while (pBVar2 != (Btree *)0x0) {
          iVar7 = iVar7 + 1;
          pPVar6 = pBVar2->pBt->pPager;
          iVar12 = iVar12 + pPVar6->aStat[op + -7];
          pPVar6->aStat[op + -7] = 0;
          iVar14 = db->nDb;
          if (iVar14 <= iVar7) goto LAB_00065931;
          pDVar10 = db->aDb;
          pBVar2 = pDVar10[iVar7].pBt;
        }
        iVar7 = iVar7 + 1;
      } while (iVar7 < iVar14);
    }
LAB_00065931:
    iVar14 = 0;
    *pHighwater = 0;
    *pCurrent = iVar12;
    break;
  default:
    iVar14 = 1;
  }
LAB_00065943:
  if (db->mutex != (sqlite3_mutex *)0x0) {
    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);
  }
LAB_00065957:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar14;
_L14445:
  iVar14 = 0;
  for (pLVar5 = (db->lookaside).pInit; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {
    iVar14 = iVar14 + 1;
  }
  iVar12 = 0;
  for (pLVar5 = (db->lookaside).pFree; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {
    iVar12 = iVar12 + 1;
  }
  if (pHighwater != (int *)0x0) {
    *pHighwater = (db->lookaside).nSlot - iVar14;
  }
  *pCurrent = ((db->lookaside).nSlot - iVar14) - iVar12;
  if ((resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)) {
LAB_00065c08:
    iVar14 = 0;
  }
  else {
    do {
      pLVar11 = pLVar5;
      pLVar5 = pLVar11->pNext;
    } while (pLVar5 != (LookasideSlot *)0x0);
    iVar14 = 0;
    pLVar11->pNext = (db->lookaside).pInit;
    pLVar5 = (db->lookaside).pFree;
    (db->lookaside).pFree = (LookasideSlot *)0x0;
    (db->lookaside).pInit = pLVar5;
  }
  goto LAB_00065943;
}



/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)

{
  ushort uVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  uint uVar9;
  undefined4 *puVar10;
  int iVar11;
  undefined4 uVar12;
  int in_GS_OFFSET;
  int iStack_40;
  uint uStack_34;
  uint uStack_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)(param_1 + 0xc) == 0) {
    switch(param_2) {
    case 0:
      goto code_r0x00065ba0;
    case 1:
    case 0xb:
      goto code_r0x00065c40;
    case 2:
      goto code_r0x000659e0;
    case 3:
      goto code_r0x00065b10;
    case 4:
    case 5:
    case 6:
      goto code_r0x00065b70;
    case 7:
    case 8:
    case 9:
      goto code_r0x000658e5;
    case 10:
      goto code_r0x00065990;
    case 0xc:
      goto code_r0x000658e0;
    default:
      uVar12 = 1;
      goto LAB_00065957;
    }
  }
  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));
  switch(param_2) {
  case 0:
    goto code_r0x00065ba0;
  case 1:
  case 0xb:
code_r0x00065c40:
    if (*(char *)(param_1 + 0x55) == '\0') {
      FUN_0004de50();
      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;
      uStack_34 = 0;
code_r0x00065ce4:
      if (*(char *)(param_1 + 0x55) == '\0') {
        FUN_0004b0d0();
      }
    }
    else {
      if (0 < *(int *)(param_1 + 0x14)) {
code_r0x00065c55:
        if (param_2 == 0xb) {
          iStack_40 = 0;
          uStack_34 = 0;
          do {
            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)
            {
              iStack_40 = iStack_40 + 1;
              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;
            }
            iVar4 = **(int **)(iVar11 + 4);
            uVar1 = *(ushort *)(iVar4 + 0x88);
            iVar7 = *(int *)(iVar4 + 0x94);
            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));
            iVar6 = (*DAT_001bb418)(iVar4);
            iStack_40 = iStack_40 + 1;
            uStack_34 = uStack_34 +
                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))
                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);
          } while (iStack_40 < *(int *)(param_1 + 0x14));
        }
        else {
          iVar11 = 0;
          uStack_34 = 0;
          do {
            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {
              iVar11 = iVar11 + 1;
              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;
            }
            iVar11 = iVar11 + 1;
            iVar4 = **(int **)(iVar4 + 4);
            uVar1 = *(ushort *)(iVar4 + 0x88);
            iVar7 = *(int *)(iVar4 + 0x94);
            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));
            iVar6 = (*DAT_001bb418)(iVar4);
            uStack_34 = uStack_34 +
                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);
          } while (iVar11 < *(int *)(param_1 + 0x14));
        }
        goto code_r0x00065ce4;
      }
      uStack_34 = 0;
    }
    uVar12 = 0;
    *param_3 = uStack_34;
    *param_4 = 0;
    break;
  case 2:
code_r0x000659e0:
    uStack_24 = 0;
    if (*(char *)(param_1 + 0x55) == '\0') {
      FUN_0004de50();
    }
    iVar11 = *(int *)(param_1 + 0x14);
    iStack_40 = 0;
    *(uint **)(param_1 + 0x1e0) = &uStack_24;
    if (0 < iVar11) {
      do {
        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);
        if (iVar4 != 0) {
          iVar11 = (*DAT_001bb41c)(0x10);
          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +
                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +
                               *(int *)(iVar4 + 0x3c)) + uStack_24;
          if (*(int *)(iVar4 + 0x14) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));
            uStack_24 = iVar11 + uStack_24;
          }
          if (*(int *)(iVar4 + 0x34) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));
            uStack_24 = iVar11 + uStack_24;
          }
          if (*(int *)(iVar4 + 0x24) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));
            uStack_24 = iVar11 + uStack_24;
          }
          if (*(int *)(iVar4 + 0x44) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));
            uStack_24 = iVar11 + uStack_24;
          }
          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;
              puVar10 = (undefined4 *)*puVar10) {
            while (puVar10[2] == 0) {
              puVar10 = (undefined4 *)*puVar10;
              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;
            }
            FUN_000657a0();
          }
code_r0x00065ae9:
          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;
              puVar10 = (undefined4 *)*puVar10) {
            FUN_00063870();
          }
          iVar11 = *(int *)(param_1 + 0x14);
        }
        iStack_40 = iStack_40 + 1;
      } while (iStack_40 < iVar11);
    }
    *(undefined4 *)(param_1 + 0x1e0) = 0;
    if (*(char *)(param_1 + 0x55) == '\0') {
      FUN_0004b0d0();
    }
    uVar12 = 0;
    *param_4 = 0;
    *param_3 = uStack_24;
    break;
  case 3:
code_r0x00065b10:
    iVar11 = *(int *)(param_1 + 4);
    uStack_24 = 0;
    *(uint **)(param_1 + 0x1e0) = &uStack_24;
    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {
      FUN_00062a60();
      FUN_00044090();
    }
    *(undefined4 *)(param_1 + 0x1e0) = 0;
    uVar12 = 0;
    *param_4 = 0;
    *param_3 = uStack_24;
    break;
  case 4:
  case 5:
  case 6:
code_r0x00065b70:
    *param_3 = 0;
    iVar11 = param_1 + param_2 * 4;
    *param_4 = *(int *)(iVar11 + 0x110);
    if (param_5 != 0) {
      *(undefined4 *)(iVar11 + 0x110) = 0;
      uVar12 = 0;
      break;
    }
    goto code_r0x00065c08;
  case 10:
code_r0x00065990:
    *param_4 = 0;
    uVar9 = 1;
    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {
      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;
      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>
              0x1f;
    }
    uVar12 = 0;
    *param_3 = uVar9;
    break;
  case 0xc:
code_r0x000658e0:
    param_2 = 10;
  case 7:
  case 8:
  case 9:
code_r0x000658e5:
    iVar11 = *(int *)(param_1 + 0x14);
    if (iVar11 < 1) {
      uVar9 = 0;
    }
    else if (param_5 == 0) {
      iVar4 = 0;
      uVar9 = 0;
      do {
        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);
        if (iVar7 != 0) {
          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);
        }
        iVar4 = iVar4 + 1;
      } while (iVar4 != iVar11);
    }
    else {
      iVar4 = *(int *)(param_1 + 0x10);
      uVar9 = 0;
      iVar7 = 0;
      do {
        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);
        while (iVar5 != 0) {
          iVar7 = iVar7 + 1;
          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);
          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);
          *(undefined4 *)(iVar11 + 0x98) = 0;
          iVar11 = *(int *)(param_1 + 0x14);
          if (iVar11 <= iVar7) goto code_r0x00065931;
          iVar4 = *(int *)(param_1 + 0x10);
          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);
        }
        iVar7 = iVar7 + 1;
      } while (iVar7 < iVar11);
    }
code_r0x00065931:
    uVar12 = 0;
    *param_4 = 0;
    *param_3 = uVar9;
    break;
  default:
    uVar12 = 1;
  }
LAB_00065943:
  if (*(int *)(param_1 + 0xc) != 0) {
    (*DAT_001bb444)(*(int *)(param_1 + 0xc));
  }
LAB_00065957:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00153870();
  }
  return uVar12;
code_r0x00065ba0:
  iVar11 = 0;
  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;
      puVar10 = (undefined4 *)*puVar10) {
    iVar11 = iVar11 + 1;
  }
  iVar4 = 0;
  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;
      puVar10 = (undefined4 *)*puVar10) {
    iVar4 = iVar4 + 1;
  }
  if (param_4 != (int *)0x0) {
    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;
  }
  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;
  if ((param_5 == 0) ||
     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {
code_r0x00065c08:
    uVar12 = 0;
  }
  else {
    do {
      piVar8 = piVar2;
      piVar2 = (int *)*piVar8;
    } while (piVar2 != (int *)0x0);
    uVar12 = 0;
    *piVar8 = *(int *)(param_1 + 300);
    uVar3 = *(undefined4 *)(param_1 + 0x130);
    *(undefined4 *)(param_1 + 0x130) = 0;
    *(undefined4 *)(param_1 + 300) = uVar3;
  }
  goto LAB_00065943;
}


PUSH EBP
PUSH EDI
PUSH ESI
CALL 0x00152e6c
ADD ESI,0x1555b0
PUSH EBX
SUB ESP,0x3c
MOV EAX,dword ptr [ESP + 0x58]
MOV EBX,dword ptr [ESP + 0x50]
MOV EDI,dword ptr [ESP + 0x54]
MOV EBP,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [ESP + 0x5c]
MOV dword ptr [ESP + 0x14],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EBX + 0xc]
TEST EAX,EAX
JZ 0x00065978
SUB ESP,0xc
PUSH EAX
CALL dword ptr [ESI + 0x614]
ADD ESP,0x10
CMP EDI,0xc
JA 0x00065eab
MOV EAX,dword ptr [ESI + EDI*0x4 + 0xfffa55f4]
ADD EAX,ESI
JMP EAX
MOV EDX,dword ptr [EBX + 0xc]
TEST EDX,EDX
JZ 0x00065957
SUB ESP,0xc
PUSH EDX
CALL dword ptr [ESI + 0x61c]
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x2c]
XOR ESI,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x00065e9c
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP EDI,0xc
JA 0x00065ea1
MOV EAX,dword ptr [ESI + EDI*0x4 + 0xfffa5628]
ADD EAX,ESI
JMP EAX
CALL 0x00153870
MOV EDI,0x1
JMP 0x00065957
MOV EDI,0x1
JMP 0x00065943
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nundefined4 FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)\n\n{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}\n\n" comment (function_definition "undefined4 FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)\n\n{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}" type_identifier (function_declarator "FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)" identifier (parameter_list "(int param_1,int param_2,uint *param_3,int *param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "uint uStack_34;" type_identifier identifier ;) (declaration "uint uStack_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) == 0)" ( (binary_expression "*(int *)(param_1 + 0xc) == 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }" { (switch_statement "switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }" { (case_statement "case 0:\n      goto code_r0x00065ba0;" case number_literal : (goto_statement "goto code_r0x00065ba0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0xb:\n      goto code_r0x00065c40;" case number_literal : (goto_statement "goto code_r0x00065c40;" goto statement_identifier ;)) (case_statement "case 2:\n      goto code_r0x000659e0;" case number_literal : (goto_statement "goto code_r0x000659e0;" goto statement_identifier ;)) (case_statement "case 3:\n      goto code_r0x00065b10;" case number_literal : (goto_statement "goto code_r0x00065b10;" goto statement_identifier ;)) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\n      goto code_r0x00065b70;" case number_literal : (goto_statement "goto code_r0x00065b70;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:\n      goto code_r0x000658e5;" case number_literal : (goto_statement "goto code_r0x000658e5;" goto statement_identifier ;)) (case_statement "case 10:\n      goto code_r0x00065990;" case number_literal : (goto_statement "goto code_r0x00065990;" goto statement_identifier ;)) (case_statement "case 0xc:\n      goto code_r0x000658e0;" case number_literal : (goto_statement "goto code_r0x000658e0;" goto statement_identifier ;)) (case_statement "default:\n      uVar12 = 1;\n      goto LAB_00065957;" default : (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00065957;" goto statement_identifier ;)) })) })) (expression_statement "(*DAT_001bb43c)(*(int *)(param_1 + 0xc));" (call_expression "(*DAT_001bb43c)(*(int *)(param_1 + 0xc))" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(*(int *)(param_1 + 0xc))" ( (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (switch_statement "switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }" { (case_statement "case 0:\n    goto code_r0x00065ba0;" case number_literal : (goto_statement "goto code_r0x00065ba0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;" case number_literal : (labeled_statement "code_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }" { (expression_statement "FUN_0004de50();" (call_expression "FUN_0004de50()" identifier (argument_list "()" ( ))) ;) (if_statement "if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;" if (parenthesized_expression "(0 < *(int *)(param_1 + 0x14))" ( (binary_expression "0 < *(int *)(param_1 + 0x14)" number_literal < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto code_r0x00065c55;" goto statement_identifier ;)) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (labeled_statement "code_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0004b0d0();\n      }" { (expression_statement "FUN_0004b0d0();" (call_expression "FUN_0004b0d0()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" else (compound_statement "{\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" { (if_statement "if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0x14))" ( (binary_expression "0 < *(int *)(param_1 + 0x14)" number_literal < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }" { (labeled_statement "code_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" statement_identifier : (if_statement "if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" if (parenthesized_expression "(param_2 == 0xb)" ( (binary_expression "param_2 == 0xb" identifier == number_literal) )) (compound_statement "{\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }" { (expression_statement "iStack_40 = 0;" (assignment_expression "iStack_40 = 0" identifier = number_literal) ;) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (do_statement "do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));" do (compound_statement "{\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          }" { (while_statement "while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }" while (parenthesized_expression "(iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)" ( (comma_expression "iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0" (assignment_expression "iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" ( (binary_expression "*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) + (binary_expression "iStack_40 * 0x10" identifier * number_literal)) ))))) , (binary_expression "iVar11 == 0" identifier == number_literal)) )) (compound_statement "{\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }" { (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" identifier = (binary_expression "iStack_40 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;" if (parenthesized_expression "(*(int *)(param_1 + 0x14) <= iStack_40)" ( (binary_expression "*(int *)(param_1 + 0x14) <= iStack_40" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto code_r0x00065ce4;" goto statement_identifier ;)) })) (expression_statement "iVar4 = **(int **)(iVar11 + 4);" (assignment_expression "iVar4 = **(int **)(iVar11 + 4)" identifier = (pointer_expression "**(int **)(iVar11 + 4)" * (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))))) ;) (expression_statement "uVar1 = *(ushort *)(iVar4 + 0x88);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0x88)" identifier = (pointer_expression "*(ushort *)(iVar4 + 0x88)" * (cast_expression "(ushort *)(iVar4 + 0x88)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x88)" ( (binary_expression "iVar4 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar4 + 0x94);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x94)" identifier = (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));" (assignment_expression "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" identifier = (call_expression "(*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (parenthesized_expression "(*DAT_001bb468)" ( (pointer_expression "*DAT_001bb468" * identifier) )) (argument_list "(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" ( (pointer_expression "*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (binary_expression "*(int *)(iVar4 + 0xd0) + 0x2c" (pointer_expression "*(int *)(iVar4 + 0xd0)" * (cast_expression "(int *)(iVar4 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xd0)" ( (binary_expression "iVar4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "iVar6 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar6 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" identifier = (binary_expression "iStack_40 + 1" identifier + number_literal)) ;) (expression_statement "uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);" (assignment_expression "uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" identifier = (binary_expression "uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" identifier + (binary_expression "(int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" (cast_expression "(int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))" ( (binary_expression "iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94)" (binary_expression "iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5" identifier + (binary_expression "((uint)uVar1 + iVar7 + 0x3c) * iVar5" (parenthesized_expression "((uint)uVar1 + iVar7 + 0x3c)" ( (binary_expression "(uint)uVar1 + iVar7 + 0x3c" (binary_expression "(uint)uVar1 + iVar7" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) )) * identifier)) + (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) ))))) ))) / (pointer_expression "*(int *)(*(int *)(iVar11 + 4) + 0x40)" * (cast_expression "(int *)(*(int *)(iVar11 + 4) + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x40)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x40" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) ))))))) ;) }) while (parenthesized_expression "(iStack_40 < *(int *)(param_1 + 0x14))" ( (binary_expression "iStack_40 < *(int *)(param_1 + 0x14)" identifier < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) ;) }) (else_clause "else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" else (compound_statement "{\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (do_statement "do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));" do (compound_statement "{\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          }" { (while_statement "while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }" while (parenthesized_expression "(iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0)" ( (comma_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0" (assignment_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" ( (binary_expression "*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar11 * 0x10" identifier * number_literal)) ))))) , (binary_expression "iVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;" if (parenthesized_expression "(*(int *)(param_1 + 0x14) <= iVar11)" ( (binary_expression "*(int *)(param_1 + 0x14) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto code_r0x00065ce4;" goto statement_identifier ;)) })) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = **(int **)(iVar4 + 4);" (assignment_expression "iVar4 = **(int **)(iVar4 + 4)" identifier = (pointer_expression "**(int **)(iVar4 + 4)" * (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 "uVar1 = *(ushort *)(iVar4 + 0x88);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0x88)" identifier = (pointer_expression "*(ushort *)(iVar4 + 0x88)" * (cast_expression "(ushort *)(iVar4 + 0x88)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x88)" ( (binary_expression "iVar4 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar4 + 0x94);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x94)" identifier = (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));" (assignment_expression "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" identifier = (call_expression "(*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (parenthesized_expression "(*DAT_001bb468)" ( (pointer_expression "*DAT_001bb468" * identifier) )) (argument_list "(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" ( (pointer_expression "*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (binary_expression "*(int *)(iVar4 + 0xd0) + 0x2c" (pointer_expression "*(int *)(iVar4 + 0xd0)" * (cast_expression "(int *)(iVar4 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xd0)" ( (binary_expression "iVar4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "iVar6 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar6 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);" (assignment_expression "uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94)" identifier = (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94)" (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6" (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5" identifier + (binary_expression "((uint)uVar1 + iVar7 + 0x3c) * iVar5" (parenthesized_expression "((uint)uVar1 + iVar7 + 0x3c)" ( (binary_expression "(uint)uVar1 + iVar7 + 0x3c" (binary_expression "(uint)uVar1 + iVar7" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) )) * identifier)) + identifier) + (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) )))))) ;) }) while (parenthesized_expression "(iVar11 < *(int *)(param_1 + 0x14))" ( (binary_expression "iVar11 < *(int *)(param_1 + 0x14)" identifier < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) ;) })))) (goto_statement "goto code_r0x00065ce4;" goto statement_identifier ;) })) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) })))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = uStack_34;" (assignment_expression "*param_3 = uStack_34" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;" case number_literal : (labeled_statement "code_r0x000659e0:\n    uStack_24 = 0;" statement_identifier : (expression_statement "uStack_24 = 0;" (assignment_expression "uStack_24 = 0" identifier = number_literal) ;)) (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0004de50();\n    }" { (expression_statement "FUN_0004de50();" (call_expression "FUN_0004de50()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iStack_40 = 0;" (assignment_expression "iStack_40 = 0" identifier = number_literal) ;) (expression_statement "*(uint **)(param_1 + 0x1e0) = &uStack_24;" (assignment_expression "*(uint **)(param_1 + 0x1e0) = &uStack_24" (pointer_expression "*(uint **)(param_1 + 0x1e0)" * (cast_expression "(uint **)(param_1 + 0x1e0)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = (pointer_expression "&uStack_24" & identifier)) ;) (if_statement "if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }" { (do_statement "do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);" do (compound_statement "{\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      }" { (expression_statement "iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);" (assignment_expression "iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" identifier = (pointer_expression "*(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc" (binary_expression "iStack_40 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iStack_40 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }" { (expression_statement "iVar11 = (*DAT_001bb41c)(0x10);" (assignment_expression "iVar11 = (*DAT_001bb41c)(0x10)" identifier = (call_expression "(*DAT_001bb41c)(0x10)" (parenthesized_expression "(*DAT_001bb41c)" ( (pointer_expression "*DAT_001bb41c" * identifier) )) (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;" (assignment_expression "uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24" identifier = (binary_expression "iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24" (binary_expression "iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c))" identifier * (parenthesized_expression "(*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c))" ( (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)" (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc)" (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c)" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar4 + 0x2c)" * (cast_expression "(int *)(iVar4 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2c)" ( (binary_expression "iVar4 + 0x2c" identifier + number_literal) ))))) + (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) + (pointer_expression "*(int *)(iVar4 + 0x3c)" * (cast_expression "(int *)(iVar4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) ))))) ))) + identifier)) ;) (if_statement "if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x14) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x14) != 0" (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x14))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x14))" ( (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (if_statement "if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x34) != 0" (pointer_expression "*(int *)(iVar4 + 0x34)" * (cast_expression "(int *)(iVar4 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x34)" ( (binary_expression "iVar4 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x34))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x34))" ( (pointer_expression "*(int *)(iVar4 + 0x34)" * (cast_expression "(int *)(iVar4 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x34)" ( (binary_expression "iVar4 + 0x34" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (if_statement "if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x24) != 0" (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x24))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x24))" ( (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (if_statement "if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x44) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x44) != 0" (pointer_expression "*(int *)(iVar4 + 0x44)" * (cast_expression "(int *)(iVar4 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x44)" ( (binary_expression "iVar4 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x44))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x44))" ( (pointer_expression "*(int *)(iVar4 + 0x44)" * (cast_expression "(int *)(iVar4 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x44)" ( (binary_expression "iVar4 + 0x44" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (for_statement "for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }" for ( (assignment_expression "puVar10 = *(undefined4 **)(iVar4 + 0x30)" identifier = (pointer_expression "*(undefined4 **)(iVar4 + 0x30)" * (cast_expression "(undefined4 **)(iVar4 + 0x30)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x30)" ( (binary_expression "iVar4 + 0x30" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }" { (while_statement "while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }" while (parenthesized_expression "(puVar10[2] == 0)" ( (binary_expression "puVar10[2] == 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }" { (expression_statement "puVar10 = (undefined4 *)*puVar10;" (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (if_statement "if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;" if (parenthesized_expression "(puVar10 == (undefined4 *)0x0)" ( (binary_expression "puVar10 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00065ae9;" goto statement_identifier ;)) })) (expression_statement "FUN_000657a0();" (call_expression "FUN_000657a0()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "code_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }" statement_identifier : (for_statement "for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }" for ( (assignment_expression "puVar10 = *(undefined4 **)(iVar4 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar4 + 0x10)" * (cast_expression "(undefined4 **)(iVar4 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n            FUN_00063870();\n          }" { (expression_statement "FUN_00063870();" (call_expression "FUN_00063870()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" identifier = (binary_expression "iStack_40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iStack_40 < iVar11)" ( (binary_expression "iStack_40 < iVar11" identifier < identifier) )) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x1e0) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1e0) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1e0)" * (cast_expression "(undefined4 *)(param_1 + 0x1e0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0004b0d0();\n    }" { (expression_statement "FUN_0004b0d0();" (call_expression "FUN_0004b0d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "*param_3 = uStack_24;" (assignment_expression "*param_3 = uStack_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;" case number_literal : (labeled_statement "code_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);" statement_identifier : (expression_statement "iVar11 = *(int *)(param_1 + 4);" (assignment_expression "iVar11 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;)) (expression_statement "uStack_24 = 0;" (assignment_expression "uStack_24 = 0" identifier = number_literal) ;) (expression_statement "*(uint **)(param_1 + 0x1e0) = &uStack_24;" (assignment_expression "*(uint **)(param_1 + 0x1e0) = &uStack_24" (pointer_expression "*(uint **)(param_1 + 0x1e0)" * (cast_expression "(uint **)(param_1 + 0x1e0)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = (pointer_expression "&uStack_24" & identifier)) ;) (for_statement "for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }" for ( ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = *(int *)(iVar11 + 8)" identifier = (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n      FUN_00062a60();\n      FUN_00044090();\n    }" { (expression_statement "FUN_00062a60();" (call_expression "FUN_00062a60()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00044090();" (call_expression "FUN_00044090()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x1e0) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1e0) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1e0)" * (cast_expression "(undefined4 *)(param_1 + 0x1e0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "*param_3 = uStack_24;" (assignment_expression "*param_3 = uStack_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;" case number_literal : (labeled_statement "code_r0x00065b70:\n    *param_3 = 0;" statement_identifier : (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" * identifier) = number_literal) ;)) (expression_statement "iVar11 = param_1 + param_2 * 4;" (assignment_expression "iVar11 = param_1 + param_2 * 4" identifier = (binary_expression "param_1 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal))) ;) (expression_statement "*param_4 = *(int *)(iVar11 + 0x110);" (assignment_expression "*param_4 = *(int *)(iVar11 + 0x110)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(int *)(iVar11 + 0x110)" * (cast_expression "(int *)(iVar11 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x110)" ( (binary_expression "iVar11 + 0x110" identifier + number_literal) ))))) ;) (if_statement "if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }" { (expression_statement "*(undefined4 *)(iVar11 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(iVar11 + 0x110) = 0" (pointer_expression "*(undefined4 *)(iVar11 + 0x110)" * (cast_expression "(undefined4 *)(iVar11 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x110)" ( (binary_expression "iVar11 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (break_statement "break;" break ;) })) (goto_statement "goto code_r0x00065c08;" goto statement_identifier ;)) (case_statement "case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;" case number_literal : (labeled_statement "code_r0x00065990:\n    *param_4 = 0;" statement_identifier : (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;)) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (if_statement "if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }" if (parenthesized_expression "((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc))" ( (binary_expression "(int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)" (cast_expression "(int)(uint)(*(int *)(param_1 + 0x1d8) != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(*(int *)(param_1 + 0x1d8) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 0x1d8) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1d8) != 0" (pointer_expression "*(int *)(param_1 + 0x1d8)" * (cast_expression "(int *)(param_1 + 0x1d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) != number_literal) )))) <= (unary_expression "-*(int *)(param_1 + 0x1dc)" - (pointer_expression "*(int *)(param_1 + 0x1dc)" * (cast_expression "(int *)(param_1 + 0x1dc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1dc)" ( (binary_expression "param_1 + 0x1dc" identifier + number_literal) )))))) )) (compound_statement "{\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }" { (expression_statement "uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;" (assignment_expression "uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f" identifier = (binary_expression "*(int *)(param_1 + 0x1d4) >> 0x1f" (pointer_expression "*(int *)(param_1 + 0x1d4)" * (cast_expression "(int *)(param_1 + 0x1d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d4)" ( (binary_expression "param_1 + 0x1d4" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;" (assignment_expression "uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f" identifier = (binary_expression "(uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f" (binary_expression "(uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0))" (parenthesized_expression "(uVar9 - *(int *)(param_1 + 0x1d4))" ( (binary_expression "uVar9 - *(int *)(param_1 + 0x1d4)" identifier - (pointer_expression "*(int *)(param_1 + 0x1d4)" * (cast_expression "(int *)(param_1 + 0x1d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d4)" ( (binary_expression "param_1 + 0x1d4" identifier + number_literal) ))))) )) - (call_expression "(uint)(uVar9 < *(uint *)(param_1 + 0x1d0))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < *(uint *)(param_1 + 0x1d0))" ( (binary_expression "uVar9 < *(uint *)(param_1 + 0x1d0)" identifier < (pointer_expression "*(uint *)(param_1 + 0x1d0)" * (cast_expression "(uint *)(param_1 + 0x1d0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) ))))) )))) >> number_literal)) ;) })) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = uVar9;" (assignment_expression "*param_3 = uVar9" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;" case number_literal : (labeled_statement "code_r0x000658e0:\n    param_2 = 10;" statement_identifier : (expression_statement "param_2 = 10;" (assignment_expression "param_2 = 10" identifier = number_literal) ;))) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;" case number_literal : (labeled_statement "code_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);" statement_identifier : (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;)) (if_statement "if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" if (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) (compound_statement "{\n      uVar9 = 0;\n    }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }) (else_clause "else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" else (if_statement "if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);" do (compound_statement "{\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      }" { (expression_statement "iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);" (assignment_expression "iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" ( (binary_expression "*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar4 * 0x10" identifier * number_literal)) ))))) ;) (if_statement "if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }" { (expression_statement "uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);" (assignment_expression "uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" identifier = (binary_expression "uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" identifier + (pointer_expression "*(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" * (cast_expression "(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" ( (binary_expression "**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4" (binary_expression "**(int **)(iVar7 + 4) + 4" (pointer_expression "**(int **)(iVar7 + 4)" * (pointer_expression "*(int **)(iVar7 + 4)" * (cast_expression "(int **)(iVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) + number_literal) + (binary_expression "(param_2 + 0x25) * 4" (parenthesized_expression "(param_2 + 0x25)" ( (binary_expression "param_2 + 0x25" identifier + number_literal) )) * number_literal)) )))))) ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != iVar11)" ( (binary_expression "iVar4 != iVar11" identifier != identifier) )) ;) }) (else_clause "else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" else (compound_statement "{\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" { (expression_statement "iVar4 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);" do (compound_statement "{\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      }" { (expression_statement "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);" (assignment_expression "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10)" identifier = (pointer_expression "*(int *)(iVar4 + 4 + iVar7 * 0x10)" * (cast_expression "(int *)(iVar4 + 4 + iVar7 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4 + iVar7 * 0x10)" ( (binary_expression "iVar4 + 4 + iVar7 * 0x10" (binary_expression "iVar4 + 4" identifier + number_literal) + (binary_expression "iVar7 * 0x10" identifier * number_literal)) ))))) ;) (while_statement "while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }" while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);" (assignment_expression "iVar11 = param_2 * 4 + **(int **)(iVar5 + 4)" identifier = (binary_expression "param_2 * 4 + **(int **)(iVar5 + 4)" (binary_expression "param_2 * 4" identifier * number_literal) + (pointer_expression "**(int **)(iVar5 + 4)" * (pointer_expression "*(int **)(iVar5 + 4)" * (cast_expression "(int **)(iVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))))) ;) (expression_statement "uVar9 = uVar9 + *(int *)(iVar11 + 0x98);" (assignment_expression "uVar9 = uVar9 + *(int *)(iVar11 + 0x98)" identifier = (binary_expression "uVar9 + *(int *)(iVar11 + 0x98)" identifier + (pointer_expression "*(int *)(iVar11 + 0x98)" * (cast_expression "(int *)(iVar11 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x98)" ( (binary_expression "iVar11 + 0x98" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(iVar11 + 0x98) = 0;" (assignment_expression "*(undefined4 *)(iVar11 + 0x98) = 0" (pointer_expression "*(undefined4 *)(iVar11 + 0x98)" * (cast_expression "(undefined4 *)(iVar11 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x98)" ( (binary_expression "iVar11 + 0x98" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 <= iVar7) goto code_r0x00065931;" if (parenthesized_expression "(iVar11 <= iVar7)" ( (binary_expression "iVar11 <= iVar7" identifier <= identifier) )) (goto_statement "goto code_r0x00065931;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);" (assignment_expression "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10)" identifier = (pointer_expression "*(int *)(iVar4 + 4 + iVar7 * 0x10)" * (cast_expression "(int *)(iVar4 + 4 + iVar7 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4 + iVar7 * 0x10)" ( (binary_expression "iVar4 + 4 + iVar7 * 0x10" (binary_expression "iVar4 + 4" identifier + number_literal) + (binary_expression "iVar7 * 0x10" identifier * number_literal)) ))))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 < iVar11)" ( (binary_expression "iVar7 < iVar11" identifier < identifier) )) ;) }))))) (labeled_statement "code_r0x00065931:\n    uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "*param_3 = uVar9;" (assignment_expression "*param_3 = uVar9" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "default:\n    uVar12 = 1;" default : (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;)) })) (labeled_statement "LAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) != 0)" ( (binary_expression "*(int *)(param_1 + 0xc) != 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" { (expression_statement "(*DAT_001bb444)(*(int *)(param_1 + 0xc));" (call_expression "(*DAT_001bb444)(*(int *)(param_1 + 0xc))" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(*(int *)(param_1 + 0xc))" ( (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00153870();\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_00153870();\n  }" { comment (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar12;" return identifier ;) (labeled_statement "code_r0x00065ba0:\n  iVar11 = 0;" statement_identifier : (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;)) (for_statement "for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }" for ( (assignment_expression "puVar10 = *(undefined4 **)(param_1 + 300)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 300)" * (cast_expression "(undefined4 **)(param_1 + 300)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n    iVar11 = iVar11 + 1;\n  }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (for_statement "for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }" for ( (assignment_expression "puVar10 = *(undefined4 **)(param_1 + 0x130)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x130)" * (cast_expression "(undefined4 **)(param_1 + 0x130)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n    iVar4 = iVar4 + 1;\n  }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) })) (if_statement "if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }" if (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }" { (expression_statement "*param_4 = *(int *)(param_1 + 0x11c) - iVar11;" (assignment_expression "*param_4 = *(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*param_4" * identifier) = (binary_expression "*(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*(int *)(param_1 + 0x11c)" * (cast_expression "(int *)(param_1 + 0x11c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11c)" ( (binary_expression "param_1 + 0x11c" identifier + number_literal) )))) - identifier)) ;) })) (expression_statement "*param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;" (assignment_expression "*param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4" (pointer_expression "*param_3" * identifier) = (binary_expression "(*(int *)(param_1 + 0x11c) - iVar11) - iVar4" (parenthesized_expression "(*(int *)(param_1 + 0x11c) - iVar11)" ( (binary_expression "*(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*(int *)(param_1 + 0x11c)" * (cast_expression "(int *)(param_1 + 0x11c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11c)" ( (binary_expression "param_1 + 0x11c" identifier + number_literal) )))) - identifier) )) - identifier)) ;) (if_statement "if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" if (parenthesized_expression "((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0))" ( (binary_expression "(param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)" (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) || (parenthesized_expression "(piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)" ( (comma_expression "piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0" (assignment_expression "piVar2 = *(int **)(param_1 + 0x130)" identifier = (pointer_expression "*(int **)(param_1 + 0x130)" * (cast_expression "(int **)(param_1 + 0x130)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) , (binary_expression "*(int **)(param_1 + 0x130) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 0x130)" * (cast_expression "(int **)(param_1 + 0x130)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\ncode_r0x00065c08:\n    uVar12 = 0;\n  }" { (labeled_statement "code_r0x00065c08:\n    uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" else (compound_statement "{\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" { (do_statement "do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);" do (compound_statement "{\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    }" { (expression_statement "piVar8 = piVar2;" (assignment_expression "piVar8 = piVar2" identifier = identifier) ;) (expression_statement "piVar2 = (int *)*piVar8;" (assignment_expression "piVar2 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*piVar8 = *(int *)(param_1 + 300);" (assignment_expression "*piVar8 = *(int *)(param_1 + 300)" (pointer_expression "*piVar8" * identifier) = (pointer_expression "*(int *)(param_1 + 300)" * (cast_expression "(int *)(param_1 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined4 *)(param_1 + 0x130);" (assignment_expression "uVar3 = *(undefined4 *)(param_1 + 0x130)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x130)" * (cast_expression "(undefined4 *)(param_1 + 0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x130) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x130) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x130)" * (cast_expression "(undefined4 *)(param_1 + 0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 300) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 300) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 300)" * (cast_expression "(undefined4 *)(param_1 + 300)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) }))) (goto_statement "goto LAB_00065943;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */\n\nint sqlite3_db_status(sqlite3 *db,int op,int *pCurrent,int *pHighwater,int resetFlag)\n\n{\n  ushort uVar1;\n  Btree *pBVar2;\n  Schema *pSVar3;\n  _ht *p_Var4;\n  Vdbe *p;\n  LookasideSlot *pLVar5;\n  Pager *pPVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  Db *pDVar10;\n  LookasideSlot *pLVar11;\n  int iVar12;\n  HashElem *pHVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  sqlite3 *in_stack_ffffffb4;\n  Vdbe *in_stack_ffffffb8;\n  int local_40;\n  int local_34;\n  int nByte;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (db->mutex == (sqlite3_mutex *)0x0) {\n    switch(op) {\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*sqlite3Config.mutex.xMutexEnter)(db->mutex);\n  switch(op) {\n  case 0:\n    goto _L14445;\n  case 1:\n  case 0xb:\n_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }\n    iVar14 = 0;\n    *pCurrent = local_34;\n    *pHighwater = 0;\n    break;\n  case 2:\n_L14444:\n    nByte = 0;\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }\n    iVar14 = db->nDb;\n    local_40 = 0;\n    db->pnBytesFreed = &nByte;\n    if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 3:\n_L14443:\n    p = db->pVdbe;\n    nByte = 0;\n    db->pnBytesFreed = &nByte;\n    for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 4:\n  case 5:\n  case 6:\n_L14442:\n    *pCurrent = 0;\n    *pHighwater = (db->lookaside).anStat[op + -4];\n    if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }\n    goto LAB_00065c08;\n  case 10:\n_L14440:\n    *pHighwater = 0;\n    uVar8 = 1;\n    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }\n    iVar14 = 0;\n    *pCurrent = uVar8;\n    break;\n  case 0xc:\n_L14437:\n    op = 10;\n  case 7:\n  case 8:\n  case 9:\n_L14446:\n    iVar14 = db->nDb;\n    if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }\nLAB_00065931:\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = iVar12;\n    break;\n  default:\n    iVar14 = 1;\n  }\nLAB_00065943:\n  if (db->mutex != (sqlite3_mutex *)0x0) {\n    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar14;\n_L14445:\n  iVar14 = 0;\n  for (pLVar5 = (db->lookaside).pInit; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar14 = iVar14 + 1;\n  }\n  iVar12 = 0;\n  for (pLVar5 = (db->lookaside).pFree; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar12 = iVar12 + 1;\n  }\n  if (pHighwater != (int *)0x0) {\n    *pHighwater = (db->lookaside).nSlot - iVar14;\n  }\n  *pCurrent = ((db->lookaside).nSlot - iVar14) - iVar12;\n  if ((resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)) {\nLAB_00065c08:\n    iVar14 = 0;\n  }\n  else {\n    do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);\n    iVar14 = 0;\n    pLVar11->pNext = (db->lookaside).pInit;\n    pLVar5 = (db->lookaside).pFree;\n    (db->lookaside).pFree = (LookasideSlot *)0x0;\n    (db->lookaside).pInit = pLVar5;\n  }\n  goto LAB_00065943;\n}\n\n" comment (function_definition "int sqlite3_db_status(sqlite3 *db,int op,int *pCurrent,int *pHighwater,int resetFlag)\n\n{\n  ushort uVar1;\n  Btree *pBVar2;\n  Schema *pSVar3;\n  _ht *p_Var4;\n  Vdbe *p;\n  LookasideSlot *pLVar5;\n  Pager *pPVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  Db *pDVar10;\n  LookasideSlot *pLVar11;\n  int iVar12;\n  HashElem *pHVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  sqlite3 *in_stack_ffffffb4;\n  Vdbe *in_stack_ffffffb8;\n  int local_40;\n  int local_34;\n  int nByte;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (db->mutex == (sqlite3_mutex *)0x0) {\n    switch(op) {\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*sqlite3Config.mutex.xMutexEnter)(db->mutex);\n  switch(op) {\n  case 0:\n    goto _L14445;\n  case 1:\n  case 0xb:\n_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }\n    iVar14 = 0;\n    *pCurrent = local_34;\n    *pHighwater = 0;\n    break;\n  case 2:\n_L14444:\n    nByte = 0;\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }\n    iVar14 = db->nDb;\n    local_40 = 0;\n    db->pnBytesFreed = &nByte;\n    if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 3:\n_L14443:\n    p = db->pVdbe;\n    nByte = 0;\n    db->pnBytesFreed = &nByte;\n    for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 4:\n  case 5:\n  case 6:\n_L14442:\n    *pCurrent = 0;\n    *pHighwater = (db->lookaside).anStat[op + -4];\n    if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }\n    goto LAB_00065c08;\n  case 10:\n_L14440:\n    *pHighwater = 0;\n    uVar8 = 1;\n    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }\n    iVar14 = 0;\n    *pCurrent = uVar8;\n    break;\n  case 0xc:\n_L14437:\n    op = 10;\n  case 7:\n  case 8:\n  case 9:\n_L14446:\n    iVar14 = db->nDb;\n    if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }\nLAB_00065931:\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = iVar12;\n    break;\n  default:\n    iVar14 = 1;\n  }\nLAB_00065943:\n  if (db->mutex != (sqlite3_mutex *)0x0) {\n    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar14;\n_L14445:\n  iVar14 = 0;\n  for (pLVar5 = (db->lookaside).pInit; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar14 = iVar14 + 1;\n  }\n  iVar12 = 0;\n  for (pLVar5 = (db->lookaside).pFree; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar12 = iVar12 + 1;\n  }\n  if (pHighwater != (int *)0x0) {\n    *pHighwater = (db->lookaside).nSlot - iVar14;\n  }\n  *pCurrent = ((db->lookaside).nSlot - iVar14) - iVar12;\n  if ((resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)) {\nLAB_00065c08:\n    iVar14 = 0;\n  }\n  else {\n    do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);\n    iVar14 = 0;\n    pLVar11->pNext = (db->lookaside).pInit;\n    pLVar5 = (db->lookaside).pFree;\n    (db->lookaside).pFree = (LookasideSlot *)0x0;\n    (db->lookaside).pInit = pLVar5;\n  }\n  goto LAB_00065943;\n}" primitive_type (function_declarator "sqlite3_db_status(sqlite3 *db,int op,int *pCurrent,int *pHighwater,int resetFlag)" identifier (parameter_list "(sqlite3 *db,int op,int *pCurrent,int *pHighwater,int resetFlag)" ( (parameter_declaration "sqlite3 *db" type_identifier (pointer_declarator "*db" * identifier)) , (parameter_declaration "int op" primitive_type identifier) , (parameter_declaration "int *pCurrent" primitive_type (pointer_declarator "*pCurrent" * identifier)) , (parameter_declaration "int *pHighwater" primitive_type (pointer_declarator "*pHighwater" * identifier)) , (parameter_declaration "int resetFlag" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  Btree *pBVar2;\n  Schema *pSVar3;\n  _ht *p_Var4;\n  Vdbe *p;\n  LookasideSlot *pLVar5;\n  Pager *pPVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  Db *pDVar10;\n  LookasideSlot *pLVar11;\n  int iVar12;\n  HashElem *pHVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  sqlite3 *in_stack_ffffffb4;\n  Vdbe *in_stack_ffffffb8;\n  int local_40;\n  int local_34;\n  int nByte;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (db->mutex == (sqlite3_mutex *)0x0) {\n    switch(op) {\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*sqlite3Config.mutex.xMutexEnter)(db->mutex);\n  switch(op) {\n  case 0:\n    goto _L14445;\n  case 1:\n  case 0xb:\n_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }\n    iVar14 = 0;\n    *pCurrent = local_34;\n    *pHighwater = 0;\n    break;\n  case 2:\n_L14444:\n    nByte = 0;\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }\n    iVar14 = db->nDb;\n    local_40 = 0;\n    db->pnBytesFreed = &nByte;\n    if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 3:\n_L14443:\n    p = db->pVdbe;\n    nByte = 0;\n    db->pnBytesFreed = &nByte;\n    for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 4:\n  case 5:\n  case 6:\n_L14442:\n    *pCurrent = 0;\n    *pHighwater = (db->lookaside).anStat[op + -4];\n    if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }\n    goto LAB_00065c08;\n  case 10:\n_L14440:\n    *pHighwater = 0;\n    uVar8 = 1;\n    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }\n    iVar14 = 0;\n    *pCurrent = uVar8;\n    break;\n  case 0xc:\n_L14437:\n    op = 10;\n  case 7:\n  case 8:\n  case 9:\n_L14446:\n    iVar14 = db->nDb;\n    if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }\nLAB_00065931:\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = iVar12;\n    break;\n  default:\n    iVar14 = 1;\n  }\nLAB_00065943:\n  if (db->mutex != (sqlite3_mutex *)0x0) {\n    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar14;\n_L14445:\n  iVar14 = 0;\n  for (pLVar5 = (db->lookaside).pInit; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar14 = iVar14 + 1;\n  }\n  iVar12 = 0;\n  for (pLVar5 = (db->lookaside).pFree; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar12 = iVar12 + 1;\n  }\n  if (pHighwater != (int *)0x0) {\n    *pHighwater = (db->lookaside).nSlot - iVar14;\n  }\n  *pCurrent = ((db->lookaside).nSlot - iVar14) - iVar12;\n  if ((resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)) {\nLAB_00065c08:\n    iVar14 = 0;\n  }\n  else {\n    do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);\n    iVar14 = 0;\n    pLVar11->pNext = (db->lookaside).pInit;\n    pLVar5 = (db->lookaside).pFree;\n    (db->lookaside).pFree = (LookasideSlot *)0x0;\n    (db->lookaside).pInit = pLVar5;\n  }\n  goto LAB_00065943;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "Btree *pBVar2;" type_identifier (pointer_declarator "*pBVar2" * identifier) ;) (declaration "Schema *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "_ht *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "Vdbe *p;" type_identifier (pointer_declarator "*p" * identifier) ;) (declaration "LookasideSlot *pLVar5;" type_identifier (pointer_declarator "*pLVar5" * identifier) ;) (declaration "Pager *pPVar6;" type_identifier (pointer_declarator "*pPVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "Db *pDVar10;" type_identifier (pointer_declarator "*pDVar10" * identifier) ;) (declaration "LookasideSlot *pLVar11;" type_identifier (pointer_declarator "*pLVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "HashElem *pHVar13;" type_identifier (pointer_declarator "*pHVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "sqlite3 *in_stack_ffffffb4;" type_identifier (pointer_declarator "*in_stack_ffffffb4" * identifier) ;) (declaration "Vdbe *in_stack_ffffffb8;" type_identifier (pointer_declarator "*in_stack_ffffffb8" * identifier) ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int nByte;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (db->mutex == (sqlite3_mutex *)0x0) {\n    switch(op) {\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }\n  }" if (parenthesized_expression "(db->mutex == (sqlite3_mutex *)0x0)" ( (binary_expression "db->mutex == (sqlite3_mutex *)0x0" (field_expression "db->mutex" identifier -> field_identifier) == (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    switch(op) {\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }\n  }" { (switch_statement "switch(op) {\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }" switch (parenthesized_expression "(op)" ( identifier )) (compound_statement "{\n    case 0:\n      goto _L14445;\n    case 1:\n    case 0xb:\n      goto _L14439;\n    case 2:\n      goto _L14444;\n    case 3:\n      goto _L14443;\n    case 4:\n    case 5:\n    case 6:\n      goto _L14442;\n    case 7:\n    case 8:\n    case 9:\n      goto _L14446;\n    case 10:\n      goto _L14440;\n    case 0xc:\n      goto _L14437;\n    default:\n      iVar14 = 1;\n      goto LAB_00065957;\n    }" { (case_statement "case 0:\n      goto _L14445;" case number_literal : (goto_statement "goto _L14445;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0xb:\n      goto _L14439;" case number_literal : (goto_statement "goto _L14439;" goto statement_identifier ;)) (case_statement "case 2:\n      goto _L14444;" case number_literal : (goto_statement "goto _L14444;" goto statement_identifier ;)) (case_statement "case 3:\n      goto _L14443;" case number_literal : (goto_statement "goto _L14443;" goto statement_identifier ;)) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\n      goto _L14442;" case number_literal : (goto_statement "goto _L14442;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:\n      goto _L14446;" case number_literal : (goto_statement "goto _L14446;" goto statement_identifier ;)) (case_statement "case 10:\n      goto _L14440;" case number_literal : (goto_statement "goto _L14440;" goto statement_identifier ;)) (case_statement "case 0xc:\n      goto _L14437;" case number_literal : (goto_statement "goto _L14437;" goto statement_identifier ;)) (case_statement "default:\n      iVar14 = 1;\n      goto LAB_00065957;" default : (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00065957;" goto statement_identifier ;)) })) })) (expression_statement "(*sqlite3Config.mutex.xMutexEnter)(db->mutex);" (call_expression "(*sqlite3Config.mutex.xMutexEnter)(db->mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexEnter)" ( (pointer_expression "*sqlite3Config.mutex.xMutexEnter" * (field_expression "sqlite3Config.mutex.xMutexEnter" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(db->mutex)" ( (field_expression "db->mutex" identifier -> field_identifier) ))) ;) (switch_statement "switch(op) {\n  case 0:\n    goto _L14445;\n  case 1:\n  case 0xb:\n_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }\n    iVar14 = 0;\n    *pCurrent = local_34;\n    *pHighwater = 0;\n    break;\n  case 2:\n_L14444:\n    nByte = 0;\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }\n    iVar14 = db->nDb;\n    local_40 = 0;\n    db->pnBytesFreed = &nByte;\n    if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 3:\n_L14443:\n    p = db->pVdbe;\n    nByte = 0;\n    db->pnBytesFreed = &nByte;\n    for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 4:\n  case 5:\n  case 6:\n_L14442:\n    *pCurrent = 0;\n    *pHighwater = (db->lookaside).anStat[op + -4];\n    if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }\n    goto LAB_00065c08;\n  case 10:\n_L14440:\n    *pHighwater = 0;\n    uVar8 = 1;\n    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }\n    iVar14 = 0;\n    *pCurrent = uVar8;\n    break;\n  case 0xc:\n_L14437:\n    op = 10;\n  case 7:\n  case 8:\n  case 9:\n_L14446:\n    iVar14 = db->nDb;\n    if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }\nLAB_00065931:\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = iVar12;\n    break;\n  default:\n    iVar14 = 1;\n  }" switch (parenthesized_expression "(op)" ( identifier )) (compound_statement "{\n  case 0:\n    goto _L14445;\n  case 1:\n  case 0xb:\n_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }\n    iVar14 = 0;\n    *pCurrent = local_34;\n    *pHighwater = 0;\n    break;\n  case 2:\n_L14444:\n    nByte = 0;\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }\n    iVar14 = db->nDb;\n    local_40 = 0;\n    db->pnBytesFreed = &nByte;\n    if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 3:\n_L14443:\n    p = db->pVdbe;\n    nByte = 0;\n    db->pnBytesFreed = &nByte;\n    for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;\n  case 4:\n  case 5:\n  case 6:\n_L14442:\n    *pCurrent = 0;\n    *pHighwater = (db->lookaside).anStat[op + -4];\n    if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }\n    goto LAB_00065c08;\n  case 10:\n_L14440:\n    *pHighwater = 0;\n    uVar8 = 1;\n    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }\n    iVar14 = 0;\n    *pCurrent = uVar8;\n    break;\n  case 0xc:\n_L14437:\n    op = 10;\n  case 7:\n  case 8:\n  case 9:\n_L14446:\n    iVar14 = db->nDb;\n    if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }\nLAB_00065931:\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = iVar12;\n    break;\n  default:\n    iVar14 = 1;\n  }" { (case_statement "case 0:\n    goto _L14445;" case number_literal : (goto_statement "goto _L14445;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0xb:\n_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }\n    iVar14 = 0;\n    *pCurrent = local_34;\n    *pHighwater = 0;\n    break;" case number_literal : (labeled_statement "_L14439:\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }" statement_identifier : (if_statement "if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }\n    else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }" if (parenthesized_expression "(db->noSharedCache == '\0')" ( (binary_expression "db->noSharedCache == '\0'" (field_expression "db->noSharedCache" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      btreeEnterAll(db);\n      if (0 < db->nDb) goto LAB_00065c55;\n      local_34 = 0;\nLAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }\n    }" { (expression_statement "btreeEnterAll(db);" (call_expression "btreeEnterAll(db)" identifier (argument_list "(db)" ( identifier ))) ;) (if_statement "if (0 < db->nDb) goto LAB_00065c55;" if (parenthesized_expression "(0 < db->nDb)" ( (binary_expression "0 < db->nDb" number_literal < (field_expression "db->nDb" identifier -> field_identifier)) )) (goto_statement "goto LAB_00065c55;" goto statement_identifier ;)) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00065ce4:\n      if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }" statement_identifier : (if_statement "if (db->noSharedCache == '\0') {\n        btreeLeaveAll(db);\n      }" if (parenthesized_expression "(db->noSharedCache == '\0')" ( (binary_expression "db->noSharedCache == '\0'" (field_expression "db->noSharedCache" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        btreeLeaveAll(db);\n      }" { (expression_statement "btreeLeaveAll(db);" (call_expression "btreeLeaveAll(db)" identifier (argument_list "(db)" ( identifier ))) ;) }))) }) (else_clause "else {\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }" else (compound_statement "{\n      if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }\n      local_34 = 0;\n    }" { (if_statement "if (0 < db->nDb) {\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }" if (parenthesized_expression "(0 < db->nDb)" ( (binary_expression "0 < db->nDb" number_literal < (field_expression "db->nDb" identifier -> field_identifier)) )) (compound_statement "{\nLAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }\n        goto LAB_00065ce4;\n      }" { (labeled_statement "LAB_00065c55:\n        if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }" statement_identifier : (if_statement "if (op == 0xb) {\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }\n        else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }" if (parenthesized_expression "(op == 0xb)" ( (binary_expression "op == 0xb" identifier == number_literal) )) (compound_statement "{\n          local_40 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);\n        }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (do_statement "do {\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          } while (local_40 < db->nDb);" do (compound_statement "{\n            while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar14 = pPVar6->pageSize;\n            iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar7 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_40 = local_40 + 1;\n            local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;\n          }" { (while_statement "while (pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0) {\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }" while (parenthesized_expression "(pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0)" ( (comma_expression "pBVar2 = db->aDb[local_40].pBt, pBVar2 == (Btree *)0x0" (assignment_expression "pBVar2 = db->aDb[local_40].pBt" identifier = (field_expression "db->aDb[local_40].pBt" (subscript_expression "db->aDb[local_40]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier)) , (binary_expression "pBVar2 == (Btree *)0x0" identifier == (cast_expression "(Btree *)0x0" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n              local_40 = local_40 + 1;\n              if (db->nDb <= local_40) goto LAB_00065ce4;\n            }" { (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (if_statement "if (db->nDb <= local_40) goto LAB_00065ce4;" if (parenthesized_expression "(db->nDb <= local_40)" ( (binary_expression "db->nDb <= local_40" (field_expression "db->nDb" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_00065ce4;" goto statement_identifier ;)) })) (expression_statement "pPVar6 = pBVar2->pBt->pPager;" (assignment_expression "pPVar6 = pBVar2->pBt->pPager" identifier = (field_expression "pBVar2->pBt->pPager" (field_expression "pBVar2->pBt" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar1 = pPVar6->nExtra;" (assignment_expression "uVar1 = pPVar6->nExtra" identifier = (field_expression "pPVar6->nExtra" identifier -> field_identifier)) ;) (expression_statement "iVar14 = pPVar6->pageSize;" (assignment_expression "iVar14 = pPVar6->pageSize" identifier = (field_expression "pPVar6->pageSize" identifier -> field_identifier)) ;) (expression_statement "iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);" (assignment_expression "iVar12 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache)" identifier = (call_expression "(*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache)" (parenthesized_expression "(*sqlite3Config.pcache2.xPagecount)" ( (pointer_expression "*sqlite3Config.pcache2.xPagecount" * (field_expression "sqlite3Config.pcache2.xPagecount" (field_expression "sqlite3Config.pcache2" identifier . field_identifier) . field_identifier)) )) (argument_list "(pPVar6->pPCache->pCache)" ( (field_expression "pPVar6->pPCache->pCache" (field_expression "pPVar6->pPCache" identifier -> field_identifier) -> field_identifier) )))) ;) (expression_statement "iVar7 = (*sqlite3Config.m.xSize)(pPVar6);" (assignment_expression "iVar7 = (*sqlite3Config.m.xSize)(pPVar6)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pPVar6)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pPVar6)" ( identifier )))) ;) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) (expression_statement "local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef;" (assignment_expression "local_34 = local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef" identifier = (binary_expression "local_34 +\n                       (int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef" identifier + (binary_expression "(int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize) /\n                       pBVar2->pBt->nRef" (cast_expression "(int)(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize)" ( (binary_expression "iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12 + pPVar6->pageSize" (binary_expression "iVar7 + ((uint)uVar1 + iVar14 + 0x3c) * iVar12" identifier + (binary_expression "((uint)uVar1 + iVar14 + 0x3c) * iVar12" (parenthesized_expression "((uint)uVar1 + iVar14 + 0x3c)" ( (binary_expression "(uint)uVar1 + iVar14 + 0x3c" (binary_expression "(uint)uVar1 + iVar14" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) )) * identifier)) + (field_expression "pPVar6->pageSize" identifier -> field_identifier)) ))) / (field_expression "pBVar2->pBt->nRef" (field_expression "pBVar2->pBt" identifier -> field_identifier) -> field_identifier)))) ;) }) while (parenthesized_expression "(local_40 < db->nDb)" ( (binary_expression "local_40 < db->nDb" identifier < (field_expression "db->nDb" identifier -> field_identifier)) )) ;) }) (else_clause "else {\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }" else (compound_statement "{\n          iVar14 = 0;\n          local_34 = 0;\n          do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);\n        }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (do_statement "do {\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          } while (iVar14 < db->nDb);" do (compound_statement "{\n            while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }\n            iVar14 = iVar14 + 1;\n            pPVar6 = pBVar2->pBt->pPager;\n            uVar1 = pPVar6->nExtra;\n            iVar12 = pPVar6->pageSize;\n            iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);\n            iVar9 = (*sqlite3Config.m.xSize)(pPVar6);\n            local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;\n          }" { (while_statement "while (pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0) {\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }" while (parenthesized_expression "(pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0)" ( (comma_expression "pBVar2 = db->aDb[iVar14].pBt, pBVar2 == (Btree *)0x0" (assignment_expression "pBVar2 = db->aDb[iVar14].pBt" identifier = (field_expression "db->aDb[iVar14].pBt" (subscript_expression "db->aDb[iVar14]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier)) , (binary_expression "pBVar2 == (Btree *)0x0" identifier == (cast_expression "(Btree *)0x0" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n              iVar14 = iVar14 + 1;\n              if (db->nDb <= iVar14) goto LAB_00065ce4;\n            }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (if_statement "if (db->nDb <= iVar14) goto LAB_00065ce4;" if (parenthesized_expression "(db->nDb <= iVar14)" ( (binary_expression "db->nDb <= iVar14" (field_expression "db->nDb" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_00065ce4;" goto statement_identifier ;)) })) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "pPVar6 = pBVar2->pBt->pPager;" (assignment_expression "pPVar6 = pBVar2->pBt->pPager" identifier = (field_expression "pBVar2->pBt->pPager" (field_expression "pBVar2->pBt" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar1 = pPVar6->nExtra;" (assignment_expression "uVar1 = pPVar6->nExtra" identifier = (field_expression "pPVar6->nExtra" identifier -> field_identifier)) ;) (expression_statement "iVar12 = pPVar6->pageSize;" (assignment_expression "iVar12 = pPVar6->pageSize" identifier = (field_expression "pPVar6->pageSize" identifier -> field_identifier)) ;) (expression_statement "iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);" (assignment_expression "iVar7 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache)" identifier = (call_expression "(*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache)" (parenthesized_expression "(*sqlite3Config.pcache2.xPagecount)" ( (pointer_expression "*sqlite3Config.pcache2.xPagecount" * (field_expression "sqlite3Config.pcache2.xPagecount" (field_expression "sqlite3Config.pcache2" identifier . field_identifier) . field_identifier)) )) (argument_list "(pPVar6->pPCache->pCache)" ( (field_expression "pPVar6->pPCache->pCache" (field_expression "pPVar6->pPCache" identifier -> field_identifier) -> field_identifier) )))) ;) (expression_statement "iVar9 = (*sqlite3Config.m.xSize)(pPVar6);" (assignment_expression "iVar9 = (*sqlite3Config.m.xSize)(pPVar6)" identifier = (call_expression "(*sqlite3Config.m.xSize)(pPVar6)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(pPVar6)" ( identifier )))) ;) (expression_statement "local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize;" (assignment_expression "local_34 = local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize" identifier = (binary_expression "local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9 + pPVar6->pageSize" (binary_expression "local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7 + iVar9" (binary_expression "local_34 + ((uint)uVar1 + iVar12 + 0x3c) * iVar7" identifier + (binary_expression "((uint)uVar1 + iVar12 + 0x3c) * iVar7" (parenthesized_expression "((uint)uVar1 + iVar12 + 0x3c)" ( (binary_expression "(uint)uVar1 + iVar12 + 0x3c" (binary_expression "(uint)uVar1 + iVar12" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) )) * identifier)) + identifier) + (field_expression "pPVar6->pageSize" identifier -> field_identifier))) ;) }) while (parenthesized_expression "(iVar14 < db->nDb)" ( (binary_expression "iVar14 < db->nDb" identifier < (field_expression "db->nDb" identifier -> field_identifier)) )) ;) })))) (goto_statement "goto LAB_00065ce4;" goto statement_identifier ;) })) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) })))) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "*pCurrent = local_34;" (assignment_expression "*pCurrent = local_34" (pointer_expression "*pCurrent" * identifier) = identifier) ;) (expression_statement "*pHighwater = 0;" (assignment_expression "*pHighwater = 0" (pointer_expression "*pHighwater" * identifier) = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 2:\n_L14444:\n    nByte = 0;\n    if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }\n    iVar14 = db->nDb;\n    local_40 = 0;\n    db->pnBytesFreed = &nByte;\n    if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;" case number_literal : (labeled_statement "_L14444:\n    nByte = 0;" statement_identifier : (expression_statement "nByte = 0;" (assignment_expression "nByte = 0" identifier = number_literal) ;)) (if_statement "if (db->noSharedCache == '\0') {\n      btreeEnterAll(db);\n    }" if (parenthesized_expression "(db->noSharedCache == '\0')" ( (binary_expression "db->noSharedCache == '\0'" (field_expression "db->noSharedCache" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      btreeEnterAll(db);\n    }" { (expression_statement "btreeEnterAll(db);" (call_expression "btreeEnterAll(db)" identifier (argument_list "(db)" ( identifier ))) ;) })) (expression_statement "iVar14 = db->nDb;" (assignment_expression "iVar14 = db->nDb" identifier = (field_expression "db->nDb" identifier -> field_identifier)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "db->pnBytesFreed = &nByte;" (assignment_expression "db->pnBytesFreed = &nByte" (field_expression "db->pnBytesFreed" identifier -> field_identifier) = (pointer_expression "&nByte" & identifier)) ;) (if_statement "if (0 < iVar14) {\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }" if (parenthesized_expression "(0 < iVar14)" ( (binary_expression "0 < iVar14" number_literal < identifier) )) (compound_statement "{\n      do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);\n    }" { (do_statement "do {\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      } while (local_40 < iVar14);" do (compound_statement "{\n        pSVar3 = db->aDb[local_40].pSchema;\n        if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }\n        local_40 = local_40 + 1;\n      }" { (expression_statement "pSVar3 = db->aDb[local_40].pSchema;" (assignment_expression "pSVar3 = db->aDb[local_40].pSchema" identifier = (field_expression "db->aDb[local_40].pSchema" (subscript_expression "db->aDb[local_40]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (pSVar3 != (Schema *)0x0) {\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }" if (parenthesized_expression "(pSVar3 != (Schema *)0x0)" ( (binary_expression "pSVar3 != (Schema *)0x0" identifier != (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar14 = (*sqlite3Config.m.xRoundup)(0x10);\n          nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;\n          p_Var4 = (pSVar3->tblHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->trigHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->idxHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          p_Var4 = (pSVar3->fkeyHash).ht;\n          if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }\n          for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }\nLAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }\n          iVar14 = db->nDb;\n        }" { (expression_statement "iVar14 = (*sqlite3Config.m.xRoundup)(0x10);" (assignment_expression "iVar14 = (*sqlite3Config.m.xRoundup)(0x10)" identifier = (call_expression "(*sqlite3Config.m.xRoundup)(0x10)" (parenthesized_expression "(*sqlite3Config.m.xRoundup)" ( (pointer_expression "*sqlite3Config.m.xRoundup" * (field_expression "sqlite3Config.m.xRoundup" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte;" (assignment_expression "nByte = iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte" identifier = (binary_expression "iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count) + nByte" (binary_expression "iVar14 * ((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count)" identifier * (parenthesized_expression "((pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count)" ( (binary_expression "(pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count +\n                           (pSVar3->fkeyHash).count" (binary_expression "(pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count + (pSVar3->tblHash).count" (binary_expression "(pSVar3->idxHash).count +\n                            (pSVar3->trigHash).count" (field_expression "(pSVar3->idxHash).count" (parenthesized_expression "(pSVar3->idxHash)" ( (field_expression "pSVar3->idxHash" identifier -> field_identifier) )) . field_identifier) + (field_expression "(pSVar3->trigHash).count" (parenthesized_expression "(pSVar3->trigHash)" ( (field_expression "pSVar3->trigHash" identifier -> field_identifier) )) . field_identifier)) + (field_expression "(pSVar3->tblHash).count" (parenthesized_expression "(pSVar3->tblHash)" ( (field_expression "pSVar3->tblHash" identifier -> field_identifier) )) . field_identifier)) + (field_expression "(pSVar3->fkeyHash).count" (parenthesized_expression "(pSVar3->fkeyHash)" ( (field_expression "pSVar3->fkeyHash" identifier -> field_identifier) )) . field_identifier)) ))) + identifier)) ;) (expression_statement "p_Var4 = (pSVar3->tblHash).ht;" (assignment_expression "p_Var4 = (pSVar3->tblHash).ht" identifier = (field_expression "(pSVar3->tblHash).ht" (parenthesized_expression "(pSVar3->tblHash)" ( (field_expression "pSVar3->tblHash" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" if (parenthesized_expression "(p_Var4 != (_ht *)0x0)" ( (binary_expression "p_Var4 != (_ht *)0x0" identifier != (cast_expression "(_ht *)0x0" ( (type_descriptor "_ht *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" { (expression_statement "iVar14 = (*sqlite3Config.m.xSize)(p_Var4);" (assignment_expression "iVar14 = (*sqlite3Config.m.xSize)(p_Var4)" identifier = (call_expression "(*sqlite3Config.m.xSize)(p_Var4)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_Var4)" ( identifier )))) ;) (expression_statement "nByte = iVar14 + nByte;" (assignment_expression "nByte = iVar14 + nByte" identifier = (binary_expression "iVar14 + nByte" identifier + identifier)) ;) })) (expression_statement "p_Var4 = (pSVar3->trigHash).ht;" (assignment_expression "p_Var4 = (pSVar3->trigHash).ht" identifier = (field_expression "(pSVar3->trigHash).ht" (parenthesized_expression "(pSVar3->trigHash)" ( (field_expression "pSVar3->trigHash" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" if (parenthesized_expression "(p_Var4 != (_ht *)0x0)" ( (binary_expression "p_Var4 != (_ht *)0x0" identifier != (cast_expression "(_ht *)0x0" ( (type_descriptor "_ht *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" { (expression_statement "iVar14 = (*sqlite3Config.m.xSize)(p_Var4);" (assignment_expression "iVar14 = (*sqlite3Config.m.xSize)(p_Var4)" identifier = (call_expression "(*sqlite3Config.m.xSize)(p_Var4)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_Var4)" ( identifier )))) ;) (expression_statement "nByte = iVar14 + nByte;" (assignment_expression "nByte = iVar14 + nByte" identifier = (binary_expression "iVar14 + nByte" identifier + identifier)) ;) })) (expression_statement "p_Var4 = (pSVar3->idxHash).ht;" (assignment_expression "p_Var4 = (pSVar3->idxHash).ht" identifier = (field_expression "(pSVar3->idxHash).ht" (parenthesized_expression "(pSVar3->idxHash)" ( (field_expression "pSVar3->idxHash" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" if (parenthesized_expression "(p_Var4 != (_ht *)0x0)" ( (binary_expression "p_Var4 != (_ht *)0x0" identifier != (cast_expression "(_ht *)0x0" ( (type_descriptor "_ht *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" { (expression_statement "iVar14 = (*sqlite3Config.m.xSize)(p_Var4);" (assignment_expression "iVar14 = (*sqlite3Config.m.xSize)(p_Var4)" identifier = (call_expression "(*sqlite3Config.m.xSize)(p_Var4)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_Var4)" ( identifier )))) ;) (expression_statement "nByte = iVar14 + nByte;" (assignment_expression "nByte = iVar14 + nByte" identifier = (binary_expression "iVar14 + nByte" identifier + identifier)) ;) })) (expression_statement "p_Var4 = (pSVar3->fkeyHash).ht;" (assignment_expression "p_Var4 = (pSVar3->fkeyHash).ht" identifier = (field_expression "(pSVar3->fkeyHash).ht" (parenthesized_expression "(pSVar3->fkeyHash)" ( (field_expression "pSVar3->fkeyHash" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (p_Var4 != (_ht *)0x0) {\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" if (parenthesized_expression "(p_Var4 != (_ht *)0x0)" ( (binary_expression "p_Var4 != (_ht *)0x0" identifier != (cast_expression "(_ht *)0x0" ( (type_descriptor "_ht *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar14 = (*sqlite3Config.m.xSize)(p_Var4);\n            nByte = iVar14 + nByte;\n          }" { (expression_statement "iVar14 = (*sqlite3Config.m.xSize)(p_Var4);" (assignment_expression "iVar14 = (*sqlite3Config.m.xSize)(p_Var4)" identifier = (call_expression "(*sqlite3Config.m.xSize)(p_Var4)" (parenthesized_expression "(*sqlite3Config.m.xSize)" ( (pointer_expression "*sqlite3Config.m.xSize" * (field_expression "sqlite3Config.m.xSize" (field_expression "sqlite3Config.m" identifier . field_identifier) . field_identifier)) )) (argument_list "(p_Var4)" ( identifier )))) ;) (expression_statement "nByte = iVar14 + nByte;" (assignment_expression "nByte = iVar14 + nByte" identifier = (binary_expression "iVar14 + nByte" identifier + identifier)) ;) })) (for_statement "for (pHVar13 = (pSVar3->trigHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }" for ( (assignment_expression "pHVar13 = (pSVar3->trigHash).first" identifier = (field_expression "(pSVar3->trigHash).first" (parenthesized_expression "(pSVar3->trigHash)" ( (field_expression "pSVar3->trigHash" identifier -> field_identifier) )) . field_identifier)) ; (binary_expression "pHVar13 != (HashElem *)0x0" identifier != (cast_expression "(HashElem *)0x0" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pHVar13 = pHVar13->next" identifier = (field_expression "pHVar13->next" identifier -> field_identifier)) ) (compound_statement "{\n            while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }\n            sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);\n          }" { (while_statement "while ((Trigger *)pHVar13->data == (Trigger *)0x0) {\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }" while (parenthesized_expression "((Trigger *)pHVar13->data == (Trigger *)0x0)" ( (binary_expression "(Trigger *)pHVar13->data == (Trigger *)0x0" (cast_expression "(Trigger *)pHVar13->data" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pHVar13->data" identifier -> field_identifier)) == (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pHVar13 = pHVar13->next;\n              if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;\n            }" { (expression_statement "pHVar13 = pHVar13->next;" (assignment_expression "pHVar13 = pHVar13->next" identifier = (field_expression "pHVar13->next" identifier -> field_identifier)) ;) (if_statement "if (pHVar13 == (HashElem *)0x0) goto LAB_00065ae9;" if (parenthesized_expression "(pHVar13 == (HashElem *)0x0)" ( (binary_expression "pHVar13 == (HashElem *)0x0" identifier == (cast_expression "(HashElem *)0x0" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00065ae9;" goto statement_identifier ;)) })) (expression_statement "sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data);" (call_expression "sqlite3DeleteTrigger(db,(Trigger *)pHVar13->data)" identifier (argument_list "(db,(Trigger *)pHVar13->data)" ( identifier , (cast_expression "(Trigger *)pHVar13->data" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pHVar13->data" identifier -> field_identifier)) ))) ;) })) (labeled_statement "LAB_00065ae9:\n          for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }" statement_identifier : (for_statement "for (pHVar13 = (pSVar3->tblHash).first; pHVar13 != (HashElem *)0x0;\n              pHVar13 = pHVar13->next) {\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }" for ( (assignment_expression "pHVar13 = (pSVar3->tblHash).first" identifier = (field_expression "(pSVar3->tblHash).first" (parenthesized_expression "(pSVar3->tblHash)" ( (field_expression "pSVar3->tblHash" identifier -> field_identifier) )) . field_identifier)) ; (binary_expression "pHVar13 != (HashElem *)0x0" identifier != (cast_expression "(HashElem *)0x0" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pHVar13 = pHVar13->next" identifier = (field_expression "pHVar13->next" identifier -> field_identifier)) ) (compound_statement "{\n            sqlite3DeleteTable(db,(Table *)pHVar13->data);\n          }" { (expression_statement "sqlite3DeleteTable(db,(Table *)pHVar13->data);" (call_expression "sqlite3DeleteTable(db,(Table *)pHVar13->data)" identifier (argument_list "(db,(Table *)pHVar13->data)" ( identifier , (cast_expression "(Table *)pHVar13->data" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pHVar13->data" identifier -> field_identifier)) ))) ;) }))) (expression_statement "iVar14 = db->nDb;" (assignment_expression "iVar14 = db->nDb" identifier = (field_expression "db->nDb" identifier -> field_identifier)) ;) })) (expression_statement "local_40 = local_40 + 1;" (assignment_expression "local_40 = local_40 + 1" identifier = (binary_expression "local_40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_40 < iVar14)" ( (binary_expression "local_40 < iVar14" identifier < identifier) )) ;) })) (expression_statement "db->pnBytesFreed = (int *)0x0;" (assignment_expression "db->pnBytesFreed = (int *)0x0" (field_expression "db->pnBytesFreed" identifier -> field_identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (db->noSharedCache == '\0') {\n      btreeLeaveAll(db);\n    }" if (parenthesized_expression "(db->noSharedCache == '\0')" ( (binary_expression "db->noSharedCache == '\0'" (field_expression "db->noSharedCache" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      btreeLeaveAll(db);\n    }" { (expression_statement "btreeLeaveAll(db);" (call_expression "btreeLeaveAll(db)" identifier (argument_list "(db)" ( identifier ))) ;) })) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "*pHighwater = 0;" (assignment_expression "*pHighwater = 0" (pointer_expression "*pHighwater" * identifier) = number_literal) ;) (expression_statement "*pCurrent = nByte;" (assignment_expression "*pCurrent = nByte" (pointer_expression "*pCurrent" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 3:\n_L14443:\n    p = db->pVdbe;\n    nByte = 0;\n    db->pnBytesFreed = &nByte;\n    for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }\n    db->pnBytesFreed = (int *)0x0;\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = nByte;\n    break;" case number_literal : (labeled_statement "_L14443:\n    p = db->pVdbe;" statement_identifier : (expression_statement "p = db->pVdbe;" (assignment_expression "p = db->pVdbe" identifier = (field_expression "db->pVdbe" identifier -> field_identifier)) ;)) (expression_statement "nByte = 0;" (assignment_expression "nByte = 0" identifier = number_literal) ;) (expression_statement "db->pnBytesFreed = &nByte;" (assignment_expression "db->pnBytesFreed = &nByte" (field_expression "db->pnBytesFreed" identifier -> field_identifier) = (pointer_expression "&nByte" & identifier)) ;) (for_statement "for (; p != (Vdbe *)0x0; p = p->pNext) {\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }" for ( ; (binary_expression "p != (Vdbe *)0x0" identifier != (cast_expression "(Vdbe *)0x0" ( (type_descriptor "Vdbe *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "p = p->pNext" identifier = (field_expression "p->pNext" identifier -> field_identifier)) ) (compound_statement "{\n      sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);\n      sqlite3DbFreeNN(db,p);\n    }" { (expression_statement "sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8);" (call_expression "sqlite3VdbeClearObject(in_stack_ffffffb4,in_stack_ffffffb8)" identifier (argument_list "(in_stack_ffffffb4,in_stack_ffffffb8)" ( identifier , identifier ))) ;) (expression_statement "sqlite3DbFreeNN(db,p);" (call_expression "sqlite3DbFreeNN(db,p)" identifier (argument_list "(db,p)" ( identifier , identifier ))) ;) })) (expression_statement "db->pnBytesFreed = (int *)0x0;" (assignment_expression "db->pnBytesFreed = (int *)0x0" (field_expression "db->pnBytesFreed" identifier -> field_identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "*pHighwater = 0;" (assignment_expression "*pHighwater = 0" (pointer_expression "*pHighwater" * identifier) = number_literal) ;) (expression_statement "*pCurrent = nByte;" (assignment_expression "*pCurrent = nByte" (pointer_expression "*pCurrent" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\n_L14442:\n    *pCurrent = 0;\n    *pHighwater = (db->lookaside).anStat[op + -4];\n    if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }\n    goto LAB_00065c08;" case number_literal : (labeled_statement "_L14442:\n    *pCurrent = 0;" statement_identifier : (expression_statement "*pCurrent = 0;" (assignment_expression "*pCurrent = 0" (pointer_expression "*pCurrent" * identifier) = number_literal) ;)) (expression_statement "*pHighwater = (db->lookaside).anStat[op + -4];" (assignment_expression "*pHighwater = (db->lookaside).anStat[op + -4]" (pointer_expression "*pHighwater" * identifier) = (subscript_expression "(db->lookaside).anStat[op + -4]" (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "op + -4" identifier + number_literal) ])) ;) (if_statement "if (resetFlag != 0) {\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }" if (parenthesized_expression "(resetFlag != 0)" ( (binary_expression "resetFlag != 0" identifier != number_literal) )) (compound_statement "{\n      (db->lookaside).anStat[op + -4] = 0;\n      iVar14 = 0;\n      break;\n    }" { (expression_statement "(db->lookaside).anStat[op + -4] = 0;" (assignment_expression "(db->lookaside).anStat[op + -4] = 0" (subscript_expression "(db->lookaside).anStat[op + -4]" (field_expression "(db->lookaside).anStat" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "op + -4" identifier + number_literal) ]) = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_00065c08;" goto statement_identifier ;)) (case_statement "case 10:\n_L14440:\n    *pHighwater = 0;\n    uVar8 = 1;\n    if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }\n    iVar14 = 0;\n    *pCurrent = uVar8;\n    break;" case number_literal : (labeled_statement "_L14440:\n    *pHighwater = 0;" statement_identifier : (expression_statement "*pHighwater = 0;" (assignment_expression "*pHighwater = 0" (pointer_expression "*pHighwater" * identifier) = number_literal) ;)) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (if_statement "if ((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }" if (parenthesized_expression "((int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4))" ( (binary_expression "(int)(uint)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)" (cast_expression "(int)(uint)((int)db->nDeferredImmCons != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)((int)db->nDeferredImmCons != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)db->nDeferredImmCons != 0)" ( (binary_expression "(int)db->nDeferredImmCons != 0" (cast_expression "(int)db->nDeferredImmCons" ( (type_descriptor "int" primitive_type) ) (field_expression "db->nDeferredImmCons" identifier -> field_identifier)) != number_literal) )))) <= (unary_expression "-*(int *)((int)&db->nDeferredImmCons + 4)" - (pointer_expression "*(int *)((int)&db->nDeferredImmCons + 4)" * (cast_expression "(int *)((int)&db->nDeferredImmCons + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&db->nDeferredImmCons + 4)" ( (binary_expression "(int)&db->nDeferredImmCons + 4" (cast_expression "(int)&db->nDeferredImmCons" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&db->nDeferredImmCons" & (field_expression "db->nDeferredImmCons" identifier -> field_identifier))) + number_literal) )))))) )) (compound_statement "{\n      uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;\n      uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;\n    }" { (expression_statement "uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;" (assignment_expression "uVar8 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f" identifier = (binary_expression "*(int *)((int)&db->nDeferredCons + 4) >> 0x1f" (pointer_expression "*(int *)((int)&db->nDeferredCons + 4)" * (cast_expression "(int *)((int)&db->nDeferredCons + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&db->nDeferredCons + 4)" ( (binary_expression "(int)&db->nDeferredCons + 4" (cast_expression "(int)&db->nDeferredCons" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&db->nDeferredCons" & (field_expression "db->nDeferredCons" identifier -> field_identifier))) + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f;" (assignment_expression "uVar8 = (uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f" identifier = (binary_expression "(uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons) >> 0x1f" (binary_expression "(uVar8 - *(int *)((int)&db->nDeferredCons + 4)) -\n              (uint)(uVar8 < (uint)db->nDeferredCons)" (parenthesized_expression "(uVar8 - *(int *)((int)&db->nDeferredCons + 4))" ( (binary_expression "uVar8 - *(int *)((int)&db->nDeferredCons + 4)" identifier - (pointer_expression "*(int *)((int)&db->nDeferredCons + 4)" * (cast_expression "(int *)((int)&db->nDeferredCons + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&db->nDeferredCons + 4)" ( (binary_expression "(int)&db->nDeferredCons + 4" (cast_expression "(int)&db->nDeferredCons" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&db->nDeferredCons" & (field_expression "db->nDeferredCons" identifier -> field_identifier))) + number_literal) ))))) )) - (call_expression "(uint)(uVar8 < (uint)db->nDeferredCons)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < (uint)db->nDeferredCons)" ( (binary_expression "uVar8 < (uint)db->nDeferredCons" identifier < (cast_expression "(uint)db->nDeferredCons" ( (type_descriptor "uint" type_identifier) ) (field_expression "db->nDeferredCons" identifier -> field_identifier))) )))) >> number_literal)) ;) })) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "*pCurrent = uVar8;" (assignment_expression "*pCurrent = uVar8" (pointer_expression "*pCurrent" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\n_L14437:\n    op = 10;" case number_literal : (labeled_statement "_L14437:\n    op = 10;" statement_identifier : (expression_statement "op = 10;" (assignment_expression "op = 10" identifier = number_literal) ;))) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:\n_L14446:\n    iVar14 = db->nDb;\n    if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }\nLAB_00065931:\n    iVar14 = 0;\n    *pHighwater = 0;\n    *pCurrent = iVar12;\n    break;" case number_literal : (labeled_statement "_L14446:\n    iVar14 = db->nDb;" statement_identifier : (expression_statement "iVar14 = db->nDb;" (assignment_expression "iVar14 = db->nDb" identifier = (field_expression "db->nDb" identifier -> field_identifier)) ;)) (if_statement "if (iVar14 < 1) {\n      iVar12 = 0;\n    }\n    else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar12 = 0;\n    }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }" else (if_statement "if (resetFlag == 0) {\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }\n    else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }" if (parenthesized_expression "(resetFlag == 0)" ( (binary_expression "resetFlag == 0" identifier == number_literal) )) (compound_statement "{\n      iVar7 = 0;\n      iVar12 = 0;\n      do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);\n    }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 != iVar14);" do (compound_statement "{\n        pBVar2 = db->aDb[iVar7].pBt;\n        if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }\n        iVar7 = iVar7 + 1;\n      }" { (expression_statement "pBVar2 = db->aDb[iVar7].pBt;" (assignment_expression "pBVar2 = db->aDb[iVar7].pBt" identifier = (field_expression "db->aDb[iVar7].pBt" (subscript_expression "db->aDb[iVar7]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if (pBVar2 != (Btree *)0x0) {\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }" if (parenthesized_expression "(pBVar2 != (Btree *)0x0)" ( (binary_expression "pBVar2 != (Btree *)0x0" identifier != (cast_expression "(Btree *)0x0" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];\n        }" { (expression_statement "iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7];" (assignment_expression "iVar12 = iVar12 + pBVar2->pBt->pPager->aStat[op + -7]" identifier = (binary_expression "iVar12 + pBVar2->pBt->pPager->aStat[op + -7]" identifier + (subscript_expression "pBVar2->pBt->pPager->aStat[op + -7]" (field_expression "pBVar2->pBt->pPager->aStat" (field_expression "pBVar2->pBt->pPager" (field_expression "pBVar2->pBt" identifier -> field_identifier) -> field_identifier) -> field_identifier) [ (binary_expression "op + -7" identifier + number_literal) ]))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 != iVar14)" ( (binary_expression "iVar7 != iVar14" identifier != identifier) )) ;) }) (else_clause "else {\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }" else (compound_statement "{\n      pDVar10 = db->aDb;\n      iVar12 = 0;\n      iVar7 = 0;\n      do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);\n    }" { (expression_statement "pDVar10 = db->aDb;" (assignment_expression "pDVar10 = db->aDb" identifier = (field_expression "db->aDb" identifier -> field_identifier)) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar14);" do (compound_statement "{\n        pBVar2 = pDVar10[iVar7].pBt;\n        while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }\n        iVar7 = iVar7 + 1;\n      }" { (expression_statement "pBVar2 = pDVar10[iVar7].pBt;" (assignment_expression "pBVar2 = pDVar10[iVar7].pBt" identifier = (field_expression "pDVar10[iVar7].pBt" (subscript_expression "pDVar10[iVar7]" identifier [ identifier ]) . field_identifier)) ;) (while_statement "while (pBVar2 != (Btree *)0x0) {\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }" while (parenthesized_expression "(pBVar2 != (Btree *)0x0)" ( (binary_expression "pBVar2 != (Btree *)0x0" identifier != (cast_expression "(Btree *)0x0" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar7 = iVar7 + 1;\n          pPVar6 = pBVar2->pBt->pPager;\n          iVar12 = iVar12 + pPVar6->aStat[op + -7];\n          pPVar6->aStat[op + -7] = 0;\n          iVar14 = db->nDb;\n          if (iVar14 <= iVar7) goto LAB_00065931;\n          pDVar10 = db->aDb;\n          pBVar2 = pDVar10[iVar7].pBt;\n        }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "pPVar6 = pBVar2->pBt->pPager;" (assignment_expression "pPVar6 = pBVar2->pBt->pPager" identifier = (field_expression "pBVar2->pBt->pPager" (field_expression "pBVar2->pBt" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "iVar12 = iVar12 + pPVar6->aStat[op + -7];" (assignment_expression "iVar12 = iVar12 + pPVar6->aStat[op + -7]" identifier = (binary_expression "iVar12 + pPVar6->aStat[op + -7]" identifier + (subscript_expression "pPVar6->aStat[op + -7]" (field_expression "pPVar6->aStat" identifier -> field_identifier) [ (binary_expression "op + -7" identifier + number_literal) ]))) ;) (expression_statement "pPVar6->aStat[op + -7] = 0;" (assignment_expression "pPVar6->aStat[op + -7] = 0" (subscript_expression "pPVar6->aStat[op + -7]" (field_expression "pPVar6->aStat" identifier -> field_identifier) [ (binary_expression "op + -7" identifier + number_literal) ]) = number_literal) ;) (expression_statement "iVar14 = db->nDb;" (assignment_expression "iVar14 = db->nDb" identifier = (field_expression "db->nDb" identifier -> field_identifier)) ;) (if_statement "if (iVar14 <= iVar7) goto LAB_00065931;" if (parenthesized_expression "(iVar14 <= iVar7)" ( (binary_expression "iVar14 <= iVar7" identifier <= identifier) )) (goto_statement "goto LAB_00065931;" goto statement_identifier ;)) (expression_statement "pDVar10 = db->aDb;" (assignment_expression "pDVar10 = db->aDb" identifier = (field_expression "db->aDb" identifier -> field_identifier)) ;) (expression_statement "pBVar2 = pDVar10[iVar7].pBt;" (assignment_expression "pBVar2 = pDVar10[iVar7].pBt" identifier = (field_expression "pDVar10[iVar7].pBt" (subscript_expression "pDVar10[iVar7]" identifier [ identifier ]) . field_identifier)) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 < iVar14)" ( (binary_expression "iVar7 < iVar14" identifier < identifier) )) ;) }))))) (labeled_statement "LAB_00065931:\n    iVar14 = 0;" statement_identifier : (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;)) (expression_statement "*pHighwater = 0;" (assignment_expression "*pHighwater = 0" (pointer_expression "*pHighwater" * identifier) = number_literal) ;) (expression_statement "*pCurrent = iVar12;" (assignment_expression "*pCurrent = iVar12" (pointer_expression "*pCurrent" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "default:\n    iVar14 = 1;" default : (expression_statement "iVar14 = 1;" (assignment_expression "iVar14 = 1" identifier = number_literal) ;)) })) (labeled_statement "LAB_00065943:\n  if (db->mutex != (sqlite3_mutex *)0x0) {\n    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);\n  }" statement_identifier : (if_statement "if (db->mutex != (sqlite3_mutex *)0x0) {\n    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);\n  }" if (parenthesized_expression "(db->mutex != (sqlite3_mutex *)0x0)" ( (binary_expression "db->mutex != (sqlite3_mutex *)0x0" (field_expression "db->mutex" identifier -> field_identifier) != (cast_expression "(sqlite3_mutex *)0x0" ( (type_descriptor "sqlite3_mutex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);\n  }" { (expression_statement "(*sqlite3Config.mutex.xMutexLeave)(db->mutex);" (call_expression "(*sqlite3Config.mutex.xMutexLeave)(db->mutex)" (parenthesized_expression "(*sqlite3Config.mutex.xMutexLeave)" ( (pointer_expression "*sqlite3Config.mutex.xMutexLeave" * (field_expression "sqlite3Config.mutex.xMutexLeave" (field_expression "sqlite3Config.mutex" identifier . field_identifier) . field_identifier)) )) (argument_list "(db->mutex)" ( (field_expression "db->mutex" identifier -> field_identifier) ))) ;) }))) (labeled_statement "LAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_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 iVar14;" return identifier ;) (labeled_statement "_L14445:\n  iVar14 = 0;" statement_identifier : (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;)) (for_statement "for (pLVar5 = (db->lookaside).pInit; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar14 = iVar14 + 1;\n  }" for ( (assignment_expression "pLVar5 = (db->lookaside).pInit" identifier = (field_expression "(db->lookaside).pInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ; (binary_expression "pLVar5 != (LookasideSlot *)0x0" identifier != (cast_expression "(LookasideSlot *)0x0" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pLVar5 = pLVar5->pNext" identifier = (field_expression "pLVar5->pNext" identifier -> field_identifier)) ) (compound_statement "{\n    iVar14 = iVar14 + 1;\n  }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (for_statement "for (pLVar5 = (db->lookaside).pFree; pLVar5 != (LookasideSlot *)0x0; pLVar5 = pLVar5->pNext) {\n    iVar12 = iVar12 + 1;\n  }" for ( (assignment_expression "pLVar5 = (db->lookaside).pFree" identifier = (field_expression "(db->lookaside).pFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ; (binary_expression "pLVar5 != (LookasideSlot *)0x0" identifier != (cast_expression "(LookasideSlot *)0x0" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pLVar5 = pLVar5->pNext" identifier = (field_expression "pLVar5->pNext" identifier -> field_identifier)) ) (compound_statement "{\n    iVar12 = iVar12 + 1;\n  }" { (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) })) (if_statement "if (pHighwater != (int *)0x0) {\n    *pHighwater = (db->lookaside).nSlot - iVar14;\n  }" if (parenthesized_expression "(pHighwater != (int *)0x0)" ( (binary_expression "pHighwater != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *pHighwater = (db->lookaside).nSlot - iVar14;\n  }" { (expression_statement "*pHighwater = (db->lookaside).nSlot - iVar14;" (assignment_expression "*pHighwater = (db->lookaside).nSlot - iVar14" (pointer_expression "*pHighwater" * identifier) = (binary_expression "(db->lookaside).nSlot - iVar14" (field_expression "(db->lookaside).nSlot" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) - identifier)) ;) })) (expression_statement "*pCurrent = ((db->lookaside).nSlot - iVar14) - iVar12;" (assignment_expression "*pCurrent = ((db->lookaside).nSlot - iVar14) - iVar12" (pointer_expression "*pCurrent" * identifier) = (binary_expression "((db->lookaside).nSlot - iVar14) - iVar12" (parenthesized_expression "((db->lookaside).nSlot - iVar14)" ( (binary_expression "(db->lookaside).nSlot - iVar14" (field_expression "(db->lookaside).nSlot" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) - identifier) )) - identifier)) ;) (if_statement "if ((resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)) {\nLAB_00065c08:\n    iVar14 = 0;\n  }\n  else {\n    do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);\n    iVar14 = 0;\n    pLVar11->pNext = (db->lookaside).pInit;\n    pLVar5 = (db->lookaside).pFree;\n    (db->lookaside).pFree = (LookasideSlot *)0x0;\n    (db->lookaside).pInit = pLVar5;\n  }" if (parenthesized_expression "((resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0))" ( (binary_expression "(resetFlag == 0) || (pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)" (parenthesized_expression "(resetFlag == 0)" ( (binary_expression "resetFlag == 0" identifier == number_literal) )) || (parenthesized_expression "(pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0)" ( (comma_expression "pLVar5 = (db->lookaside).pFree, pLVar5 == (LookasideSlot *)0x0" (assignment_expression "pLVar5 = (db->lookaside).pFree" identifier = (field_expression "(db->lookaside).pFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "pLVar5 == (LookasideSlot *)0x0" identifier == (cast_expression "(LookasideSlot *)0x0" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_00065c08:\n    iVar14 = 0;\n  }" { (labeled_statement "LAB_00065c08:\n    iVar14 = 0;" statement_identifier : (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);\n    iVar14 = 0;\n    pLVar11->pNext = (db->lookaside).pInit;\n    pLVar5 = (db->lookaside).pFree;\n    (db->lookaside).pFree = (LookasideSlot *)0x0;\n    (db->lookaside).pInit = pLVar5;\n  }" else (compound_statement "{\n    do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);\n    iVar14 = 0;\n    pLVar11->pNext = (db->lookaside).pInit;\n    pLVar5 = (db->lookaside).pFree;\n    (db->lookaside).pFree = (LookasideSlot *)0x0;\n    (db->lookaside).pInit = pLVar5;\n  }" { (do_statement "do {\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    } while (pLVar5 != (LookasideSlot *)0x0);" do (compound_statement "{\n      pLVar11 = pLVar5;\n      pLVar5 = pLVar11->pNext;\n    }" { (expression_statement "pLVar11 = pLVar5;" (assignment_expression "pLVar11 = pLVar5" identifier = identifier) ;) (expression_statement "pLVar5 = pLVar11->pNext;" (assignment_expression "pLVar5 = pLVar11->pNext" identifier = (field_expression "pLVar11->pNext" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pLVar5 != (LookasideSlot *)0x0)" ( (binary_expression "pLVar5 != (LookasideSlot *)0x0" identifier != (cast_expression "(LookasideSlot *)0x0" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pLVar11->pNext = (db->lookaside).pInit;" (assignment_expression "pLVar11->pNext = (db->lookaside).pInit" (field_expression "pLVar11->pNext" identifier -> field_identifier) = (field_expression "(db->lookaside).pInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pLVar5 = (db->lookaside).pFree;" (assignment_expression "pLVar5 = (db->lookaside).pFree" identifier = (field_expression "(db->lookaside).pFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(db->lookaside).pFree = (LookasideSlot *)0x0;" (assignment_expression "(db->lookaside).pFree = (LookasideSlot *)0x0" (field_expression "(db->lookaside).pFree" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(LookasideSlot *)0x0" ( (type_descriptor "LookasideSlot *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(db->lookaside).pInit = pLVar5;" (assignment_expression "(db->lookaside).pInit = pLVar5" (field_expression "(db->lookaside).pInit" (parenthesized_expression "(db->lookaside)" ( (field_expression "db->lookaside" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) (goto_statement "goto LAB_00065943;" goto statement_identifier ;) })))
(translation_unit "undefined4 FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)\n\n{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}\n\n" (function_definition "undefined4 FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)\n\n{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}" type_identifier (function_declarator "FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)" identifier (parameter_list "(int param_1,int param_2,uint *param_3,int *param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "uint uStack_34;" type_identifier identifier ;) (declaration "uint uStack_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) == 0)" ( (binary_expression "*(int *)(param_1 + 0xc) == 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }" { (switch_statement "switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }" { (case_statement "case 0:\n      goto code_r0x00065ba0;" case number_literal : (goto_statement "goto code_r0x00065ba0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0xb:\n      goto code_r0x00065c40;" case number_literal : (goto_statement "goto code_r0x00065c40;" goto statement_identifier ;)) (case_statement "case 2:\n      goto code_r0x000659e0;" case number_literal : (goto_statement "goto code_r0x000659e0;" goto statement_identifier ;)) (case_statement "case 3:\n      goto code_r0x00065b10;" case number_literal : (goto_statement "goto code_r0x00065b10;" goto statement_identifier ;)) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\n      goto code_r0x00065b70;" case number_literal : (goto_statement "goto code_r0x00065b70;" goto statement_identifier ;)) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:\n      goto code_r0x000658e5;" case number_literal : (goto_statement "goto code_r0x000658e5;" goto statement_identifier ;)) (case_statement "case 10:\n      goto code_r0x00065990;" case number_literal : (goto_statement "goto code_r0x00065990;" goto statement_identifier ;)) (case_statement "case 0xc:\n      goto code_r0x000658e0;" case number_literal : (goto_statement "goto code_r0x000658e0;" goto statement_identifier ;)) (case_statement "default:\n      uVar12 = 1;\n      goto LAB_00065957;" default : (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00065957;" goto statement_identifier ;)) })) })) (expression_statement "(*DAT_001bb43c)(*(int *)(param_1 + 0xc));" (call_expression "(*DAT_001bb43c)(*(int *)(param_1 + 0xc))" (parenthesized_expression "(*DAT_001bb43c)" ( (pointer_expression "*DAT_001bb43c" * identifier) )) (argument_list "(*(int *)(param_1 + 0xc))" ( (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) (switch_statement "switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }" switch (parenthesized_expression "(param_2)" ( identifier )) (compound_statement "{\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }" { (case_statement "case 0:\n    goto code_r0x00065ba0;" case number_literal : (goto_statement "goto code_r0x00065ba0;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;" case number_literal : (labeled_statement "code_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }" { (expression_statement "FUN_0004de50();" (call_expression "FUN_0004de50()" identifier (argument_list "()" ( ))) ;) (if_statement "if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;" if (parenthesized_expression "(0 < *(int *)(param_1 + 0x14))" ( (binary_expression "0 < *(int *)(param_1 + 0x14)" number_literal < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) (goto_statement "goto code_r0x00065c55;" goto statement_identifier ;)) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (labeled_statement "code_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }" statement_identifier : (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_0004b0d0();\n      }" { (expression_statement "FUN_0004b0d0();" (call_expression "FUN_0004b0d0()" identifier (argument_list "()" ( ))) ;) }))) }) (else_clause "else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" else (compound_statement "{\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" { (if_statement "if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0x14))" ( (binary_expression "0 < *(int *)(param_1 + 0x14)" number_literal < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }" { (labeled_statement "code_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" statement_identifier : (if_statement "if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" if (parenthesized_expression "(param_2 == 0xb)" ( (binary_expression "param_2 == 0xb" identifier == number_literal) )) (compound_statement "{\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }" { (expression_statement "iStack_40 = 0;" (assignment_expression "iStack_40 = 0" identifier = number_literal) ;) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (do_statement "do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));" do (compound_statement "{\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          }" { (while_statement "while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }" while (parenthesized_expression "(iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)" ( (comma_expression "iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0" (assignment_expression "iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" ( (binary_expression "*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) + (binary_expression "iStack_40 * 0x10" identifier * number_literal)) ))))) , (binary_expression "iVar11 == 0" identifier == number_literal)) )) (compound_statement "{\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }" { (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" identifier = (binary_expression "iStack_40 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;" if (parenthesized_expression "(*(int *)(param_1 + 0x14) <= iStack_40)" ( (binary_expression "*(int *)(param_1 + 0x14) <= iStack_40" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto code_r0x00065ce4;" goto statement_identifier ;)) })) (expression_statement "iVar4 = **(int **)(iVar11 + 4);" (assignment_expression "iVar4 = **(int **)(iVar11 + 4)" identifier = (pointer_expression "**(int **)(iVar11 + 4)" * (pointer_expression "*(int **)(iVar11 + 4)" * (cast_expression "(int **)(iVar11 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))))) ;) (expression_statement "uVar1 = *(ushort *)(iVar4 + 0x88);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0x88)" identifier = (pointer_expression "*(ushort *)(iVar4 + 0x88)" * (cast_expression "(ushort *)(iVar4 + 0x88)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x88)" ( (binary_expression "iVar4 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar4 + 0x94);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x94)" identifier = (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));" (assignment_expression "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" identifier = (call_expression "(*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (parenthesized_expression "(*DAT_001bb468)" ( (pointer_expression "*DAT_001bb468" * identifier) )) (argument_list "(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" ( (pointer_expression "*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (binary_expression "*(int *)(iVar4 + 0xd0) + 0x2c" (pointer_expression "*(int *)(iVar4 + 0xd0)" * (cast_expression "(int *)(iVar4 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xd0)" ( (binary_expression "iVar4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "iVar6 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar6 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" identifier = (binary_expression "iStack_40 + 1" identifier + number_literal)) ;) (expression_statement "uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);" (assignment_expression "uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" identifier = (binary_expression "uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" identifier + (binary_expression "(int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" (cast_expression "(int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))" ( (binary_expression "iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94)" (binary_expression "iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5" identifier + (binary_expression "((uint)uVar1 + iVar7 + 0x3c) * iVar5" (parenthesized_expression "((uint)uVar1 + iVar7 + 0x3c)" ( (binary_expression "(uint)uVar1 + iVar7 + 0x3c" (binary_expression "(uint)uVar1 + iVar7" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) )) * identifier)) + (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) ))))) ))) / (pointer_expression "*(int *)(*(int *)(iVar11 + 4) + 0x40)" * (cast_expression "(int *)(*(int *)(iVar11 + 4) + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x40)" ( (binary_expression "*(int *)(iVar11 + 4) + 0x40" (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))) + number_literal) ))))))) ;) }) while (parenthesized_expression "(iStack_40 < *(int *)(param_1 + 0x14))" ( (binary_expression "iStack_40 < *(int *)(param_1 + 0x14)" identifier < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) ;) }) (else_clause "else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" else (compound_statement "{\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (do_statement "do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));" do (compound_statement "{\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          }" { (while_statement "while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }" while (parenthesized_expression "(iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0)" ( (comma_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0" (assignment_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" ( (binary_expression "*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar11 * 0x10" identifier * number_literal)) ))))) , (binary_expression "iVar4 == 0" identifier == number_literal)) )) (compound_statement "{\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;" if (parenthesized_expression "(*(int *)(param_1 + 0x14) <= iVar11)" ( (binary_expression "*(int *)(param_1 + 0x14) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto code_r0x00065ce4;" goto statement_identifier ;)) })) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = **(int **)(iVar4 + 4);" (assignment_expression "iVar4 = **(int **)(iVar4 + 4)" identifier = (pointer_expression "**(int **)(iVar4 + 4)" * (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 "uVar1 = *(ushort *)(iVar4 + 0x88);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0x88)" identifier = (pointer_expression "*(ushort *)(iVar4 + 0x88)" * (cast_expression "(ushort *)(iVar4 + 0x88)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x88)" ( (binary_expression "iVar4 + 0x88" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar4 + 0x94);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x94)" identifier = (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));" (assignment_expression "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" identifier = (call_expression "(*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (parenthesized_expression "(*DAT_001bb468)" ( (pointer_expression "*DAT_001bb468" * identifier) )) (argument_list "(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" ( (pointer_expression "*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0xd0) + 0x2c)" ( (binary_expression "*(int *)(iVar4 + 0xd0) + 0x2c" (pointer_expression "*(int *)(iVar4 + 0xd0)" * (cast_expression "(int *)(iVar4 + 0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xd0)" ( (binary_expression "iVar4 + 0xd0" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "iVar6 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar6 = (*DAT_001bb418)(iVar4)" identifier = (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(iVar4)" ( identifier )))) ;) (expression_statement "uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);" (assignment_expression "uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94)" identifier = (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94)" (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6" (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5" identifier + (binary_expression "((uint)uVar1 + iVar7 + 0x3c) * iVar5" (parenthesized_expression "((uint)uVar1 + iVar7 + 0x3c)" ( (binary_expression "(uint)uVar1 + iVar7 + 0x3c" (binary_expression "(uint)uVar1 + iVar7" (cast_expression "(uint)uVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) )) * identifier)) + identifier) + (pointer_expression "*(int *)(iVar4 + 0x94)" * (cast_expression "(int *)(iVar4 + 0x94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x94)" ( (binary_expression "iVar4 + 0x94" identifier + number_literal) )))))) ;) }) while (parenthesized_expression "(iVar11 < *(int *)(param_1 + 0x14))" ( (binary_expression "iVar11 < *(int *)(param_1 + 0x14)" identifier < (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) )) ;) })))) (goto_statement "goto code_r0x00065ce4;" goto statement_identifier ;) })) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) })))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = uStack_34;" (assignment_expression "*param_3 = uStack_34" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (break_statement "break;" break ;)) (case_statement "case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;" case number_literal : (labeled_statement "code_r0x000659e0:\n    uStack_24 = 0;" statement_identifier : (expression_statement "uStack_24 = 0;" (assignment_expression "uStack_24 = 0" identifier = number_literal) ;)) (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0004de50();\n    }" { (expression_statement "FUN_0004de50();" (call_expression "FUN_0004de50()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iStack_40 = 0;" (assignment_expression "iStack_40 = 0" identifier = number_literal) ;) (expression_statement "*(uint **)(param_1 + 0x1e0) = &uStack_24;" (assignment_expression "*(uint **)(param_1 + 0x1e0) = &uStack_24" (pointer_expression "*(uint **)(param_1 + 0x1e0)" * (cast_expression "(uint **)(param_1 + 0x1e0)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = (pointer_expression "&uStack_24" & identifier)) ;) (if_statement "if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }" { (do_statement "do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);" do (compound_statement "{\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      }" { (expression_statement "iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);" (assignment_expression "iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" identifier = (pointer_expression "*(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" * (cast_expression "(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" ( (binary_expression "iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc" (binary_expression "iStack_40 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iStack_40 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }" { (expression_statement "iVar11 = (*DAT_001bb41c)(0x10);" (assignment_expression "iVar11 = (*DAT_001bb41c)(0x10)" identifier = (call_expression "(*DAT_001bb41c)(0x10)" (parenthesized_expression "(*DAT_001bb41c)" ( (pointer_expression "*DAT_001bb41c" * identifier) )) (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;" (assignment_expression "uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24" identifier = (binary_expression "iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24" (binary_expression "iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c))" identifier * (parenthesized_expression "(*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c))" ( (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)" (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc)" (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c)" (pointer_expression "*(int *)(iVar4 + 0x1c)" * (cast_expression "(int *)(iVar4 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) + (pointer_expression "*(int *)(iVar4 + 0x2c)" * (cast_expression "(int *)(iVar4 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x2c)" ( (binary_expression "iVar4 + 0x2c" identifier + number_literal) ))))) + (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) + (pointer_expression "*(int *)(iVar4 + 0x3c)" * (cast_expression "(int *)(iVar4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) ))))) ))) + identifier)) ;) (if_statement "if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x14) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x14) != 0" (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x14))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x14))" ( (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (if_statement "if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x34) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x34) != 0" (pointer_expression "*(int *)(iVar4 + 0x34)" * (cast_expression "(int *)(iVar4 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x34)" ( (binary_expression "iVar4 + 0x34" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x34))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x34))" ( (pointer_expression "*(int *)(iVar4 + 0x34)" * (cast_expression "(int *)(iVar4 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x34)" ( (binary_expression "iVar4 + 0x34" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (if_statement "if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x24) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x24) != 0" (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x24))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x24))" ( (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (if_statement "if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }" if (parenthesized_expression "(*(int *)(iVar4 + 0x44) != 0)" ( (binary_expression "*(int *)(iVar4 + 0x44) != 0" (pointer_expression "*(int *)(iVar4 + 0x44)" * (cast_expression "(int *)(iVar4 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x44)" ( (binary_expression "iVar4 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }" { (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44))" identifier = (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x44))" (parenthesized_expression "(*DAT_001bb418)" ( (pointer_expression "*DAT_001bb418" * identifier) )) (argument_list "(*(int *)(iVar4 + 0x44))" ( (pointer_expression "*(int *)(iVar4 + 0x44)" * (cast_expression "(int *)(iVar4 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x44)" ( (binary_expression "iVar4 + 0x44" identifier + number_literal) )))) )))) ;) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" identifier = (binary_expression "iVar11 + uStack_24" identifier + identifier)) ;) })) (for_statement "for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }" for ( (assignment_expression "puVar10 = *(undefined4 **)(iVar4 + 0x30)" identifier = (pointer_expression "*(undefined4 **)(iVar4 + 0x30)" * (cast_expression "(undefined4 **)(iVar4 + 0x30)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x30)" ( (binary_expression "iVar4 + 0x30" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }" { (while_statement "while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }" while (parenthesized_expression "(puVar10[2] == 0)" ( (binary_expression "puVar10[2] == 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }" { (expression_statement "puVar10 = (undefined4 *)*puVar10;" (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (if_statement "if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;" if (parenthesized_expression "(puVar10 == (undefined4 *)0x0)" ( (binary_expression "puVar10 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x00065ae9;" goto statement_identifier ;)) })) (expression_statement "FUN_000657a0();" (call_expression "FUN_000657a0()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "code_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }" statement_identifier : (for_statement "for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }" for ( (assignment_expression "puVar10 = *(undefined4 **)(iVar4 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar4 + 0x10)" * (cast_expression "(undefined4 **)(iVar4 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n            FUN_00063870();\n          }" { (expression_statement "FUN_00063870();" (call_expression "FUN_00063870()" identifier (argument_list "()" ( ))) ;) }))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) })) (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" identifier = (binary_expression "iStack_40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iStack_40 < iVar11)" ( (binary_expression "iStack_40 < iVar11" identifier < identifier) )) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x1e0) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1e0) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1e0)" * (cast_expression "(undefined4 *)(param_1 + 0x1e0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" * (cast_expression "(char *)(param_1 + 0x55)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x55)" ( (binary_expression "param_1 + 0x55" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0004b0d0();\n    }" { (expression_statement "FUN_0004b0d0();" (call_expression "FUN_0004b0d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "*param_3 = uStack_24;" (assignment_expression "*param_3 = uStack_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;" case number_literal : (labeled_statement "code_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);" statement_identifier : (expression_statement "iVar11 = *(int *)(param_1 + 4);" (assignment_expression "iVar11 = *(int *)(param_1 + 4)" identifier = (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;)) (expression_statement "uStack_24 = 0;" (assignment_expression "uStack_24 = 0" identifier = number_literal) ;) (expression_statement "*(uint **)(param_1 + 0x1e0) = &uStack_24;" (assignment_expression "*(uint **)(param_1 + 0x1e0) = &uStack_24" (pointer_expression "*(uint **)(param_1 + 0x1e0)" * (cast_expression "(uint **)(param_1 + 0x1e0)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = (pointer_expression "&uStack_24" & identifier)) ;) (for_statement "for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }" for ( ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = *(int *)(iVar11 + 8)" identifier = (pointer_expression "*(int *)(iVar11 + 8)" * (cast_expression "(int *)(iVar11 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 8)" ( (binary_expression "iVar11 + 8" identifier + number_literal) ))))) ) (compound_statement "{\n      FUN_00062a60();\n      FUN_00044090();\n    }" { (expression_statement "FUN_00062a60();" (call_expression "FUN_00062a60()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00044090();" (call_expression "FUN_00044090()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x1e0) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1e0) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1e0)" * (cast_expression "(undefined4 *)(param_1 + 0x1e0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1e0)" ( (binary_expression "param_1 + 0x1e0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "*param_3 = uStack_24;" (assignment_expression "*param_3 = uStack_24" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 4:" case number_literal :) (case_statement "case 5:" case number_literal :) (case_statement "case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;" case number_literal : (labeled_statement "code_r0x00065b70:\n    *param_3 = 0;" statement_identifier : (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" * identifier) = number_literal) ;)) (expression_statement "iVar11 = param_1 + param_2 * 4;" (assignment_expression "iVar11 = param_1 + param_2 * 4" identifier = (binary_expression "param_1 + param_2 * 4" identifier + (binary_expression "param_2 * 4" identifier * number_literal))) ;) (expression_statement "*param_4 = *(int *)(iVar11 + 0x110);" (assignment_expression "*param_4 = *(int *)(iVar11 + 0x110)" (pointer_expression "*param_4" * identifier) = (pointer_expression "*(int *)(iVar11 + 0x110)" * (cast_expression "(int *)(iVar11 + 0x110)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x110)" ( (binary_expression "iVar11 + 0x110" identifier + number_literal) ))))) ;) (if_statement "if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }" { (expression_statement "*(undefined4 *)(iVar11 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(iVar11 + 0x110) = 0" (pointer_expression "*(undefined4 *)(iVar11 + 0x110)" * (cast_expression "(undefined4 *)(iVar11 + 0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x110)" ( (binary_expression "iVar11 + 0x110" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (break_statement "break;" break ;) })) (goto_statement "goto code_r0x00065c08;" goto statement_identifier ;)) (case_statement "case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;" case number_literal : (labeled_statement "code_r0x00065990:\n    *param_4 = 0;" statement_identifier : (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;)) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (if_statement "if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }" if (parenthesized_expression "((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc))" ( (binary_expression "(int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)" (cast_expression "(int)(uint)(*(int *)(param_1 + 0x1d8) != 0)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(*(int *)(param_1 + 0x1d8) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 0x1d8) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1d8) != 0" (pointer_expression "*(int *)(param_1 + 0x1d8)" * (cast_expression "(int *)(param_1 + 0x1d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d8)" ( (binary_expression "param_1 + 0x1d8" identifier + number_literal) )))) != number_literal) )))) <= (unary_expression "-*(int *)(param_1 + 0x1dc)" - (pointer_expression "*(int *)(param_1 + 0x1dc)" * (cast_expression "(int *)(param_1 + 0x1dc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1dc)" ( (binary_expression "param_1 + 0x1dc" identifier + number_literal) )))))) )) (compound_statement "{\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }" { (expression_statement "uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;" (assignment_expression "uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f" identifier = (binary_expression "*(int *)(param_1 + 0x1d4) >> 0x1f" (pointer_expression "*(int *)(param_1 + 0x1d4)" * (cast_expression "(int *)(param_1 + 0x1d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d4)" ( (binary_expression "param_1 + 0x1d4" identifier + number_literal) )))) >> number_literal)) ;) (expression_statement "uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;" (assignment_expression "uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f" identifier = (binary_expression "(uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f" (binary_expression "(uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0))" (parenthesized_expression "(uVar9 - *(int *)(param_1 + 0x1d4))" ( (binary_expression "uVar9 - *(int *)(param_1 + 0x1d4)" identifier - (pointer_expression "*(int *)(param_1 + 0x1d4)" * (cast_expression "(int *)(param_1 + 0x1d4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d4)" ( (binary_expression "param_1 + 0x1d4" identifier + number_literal) ))))) )) - (call_expression "(uint)(uVar9 < *(uint *)(param_1 + 0x1d0))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < *(uint *)(param_1 + 0x1d0))" ( (binary_expression "uVar9 < *(uint *)(param_1 + 0x1d0)" identifier < (pointer_expression "*(uint *)(param_1 + 0x1d0)" * (cast_expression "(uint *)(param_1 + 0x1d0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1d0)" ( (binary_expression "param_1 + 0x1d0" identifier + number_literal) ))))) )))) >> number_literal)) ;) })) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*param_3 = uVar9;" (assignment_expression "*param_3 = uVar9" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;" case number_literal : (labeled_statement "code_r0x000658e0:\n    param_2 = 10;" statement_identifier : (expression_statement "param_2 = 10;" (assignment_expression "param_2 = 10" identifier = number_literal) ;))) (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;" case number_literal : (labeled_statement "code_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);" statement_identifier : (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;)) (if_statement "if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" if (parenthesized_expression "(iVar11 < 1)" ( (binary_expression "iVar11 < 1" identifier < number_literal) )) (compound_statement "{\n      uVar9 = 0;\n    }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }) (else_clause "else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" else (if_statement "if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);" do (compound_statement "{\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      }" { (expression_statement "iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);" (assignment_expression "iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" ( (binary_expression "*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) + (binary_expression "iVar4 * 0x10" identifier * number_literal)) ))))) ;) (if_statement "if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }" { (expression_statement "uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);" (assignment_expression "uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" identifier = (binary_expression "uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" identifier + (pointer_expression "*(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" * (cast_expression "(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" ( (binary_expression "**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4" (binary_expression "**(int **)(iVar7 + 4) + 4" (pointer_expression "**(int **)(iVar7 + 4)" * (pointer_expression "*(int **)(iVar7 + 4)" * (cast_expression "(int **)(iVar7 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 4)" ( (binary_expression "iVar7 + 4" identifier + number_literal) ))))) + number_literal) + (binary_expression "(param_2 + 0x25) * 4" (parenthesized_expression "(param_2 + 0x25)" ( (binary_expression "param_2 + 0x25" identifier + number_literal) )) * number_literal)) )))))) ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != iVar11)" ( (binary_expression "iVar4 != iVar11" identifier != identifier) )) ;) }) (else_clause "else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" else (compound_statement "{\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" { (expression_statement "iVar4 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);" do (compound_statement "{\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      }" { (expression_statement "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);" (assignment_expression "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10)" identifier = (pointer_expression "*(int *)(iVar4 + 4 + iVar7 * 0x10)" * (cast_expression "(int *)(iVar4 + 4 + iVar7 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4 + iVar7 * 0x10)" ( (binary_expression "iVar4 + 4 + iVar7 * 0x10" (binary_expression "iVar4 + 4" identifier + number_literal) + (binary_expression "iVar7 * 0x10" identifier * number_literal)) ))))) ;) (while_statement "while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }" while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }" { (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);" (assignment_expression "iVar11 = param_2 * 4 + **(int **)(iVar5 + 4)" identifier = (binary_expression "param_2 * 4 + **(int **)(iVar5 + 4)" (binary_expression "param_2 * 4" identifier * number_literal) + (pointer_expression "**(int **)(iVar5 + 4)" * (pointer_expression "*(int **)(iVar5 + 4)" * (cast_expression "(int **)(iVar5 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar5 + 4)" ( (binary_expression "iVar5 + 4" identifier + number_literal) ))))))) ;) (expression_statement "uVar9 = uVar9 + *(int *)(iVar11 + 0x98);" (assignment_expression "uVar9 = uVar9 + *(int *)(iVar11 + 0x98)" identifier = (binary_expression "uVar9 + *(int *)(iVar11 + 0x98)" identifier + (pointer_expression "*(int *)(iVar11 + 0x98)" * (cast_expression "(int *)(iVar11 + 0x98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x98)" ( (binary_expression "iVar11 + 0x98" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(iVar11 + 0x98) = 0;" (assignment_expression "*(undefined4 *)(iVar11 + 0x98) = 0" (pointer_expression "*(undefined4 *)(iVar11 + 0x98)" * (cast_expression "(undefined4 *)(iVar11 + 0x98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x98)" ( (binary_expression "iVar11 + 0x98" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 <= iVar7) goto code_r0x00065931;" if (parenthesized_expression "(iVar11 <= iVar7)" ( (binary_expression "iVar11 <= iVar7" identifier <= identifier) )) (goto_statement "goto code_r0x00065931;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x10)" identifier = (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);" (assignment_expression "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10)" identifier = (pointer_expression "*(int *)(iVar4 + 4 + iVar7 * 0x10)" * (cast_expression "(int *)(iVar4 + 4 + iVar7 * 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4 + iVar7 * 0x10)" ( (binary_expression "iVar4 + 4 + iVar7 * 0x10" (binary_expression "iVar4 + 4" identifier + number_literal) + (binary_expression "iVar7 * 0x10" identifier * number_literal)) ))))) ;) })) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 < iVar11)" ( (binary_expression "iVar7 < iVar11" identifier < identifier) )) ;) }))))) (labeled_statement "code_r0x00065931:\n    uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "*param_3 = uVar9;" (assignment_expression "*param_3 = uVar9" (pointer_expression "*param_3" * identifier) = identifier) ;) (break_statement "break;" break ;)) (case_statement "default:\n    uVar12 = 1;" default : (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;)) })) (labeled_statement "LAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) != 0)" ( (binary_expression "*(int *)(param_1 + 0xc) != 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" { (expression_statement "(*DAT_001bb444)(*(int *)(param_1 + 0xc));" (call_expression "(*DAT_001bb444)(*(int *)(param_1 + 0xc))" (parenthesized_expression "(*DAT_001bb444)" ( (pointer_expression "*DAT_001bb444" * identifier) )) (argument_list "(*(int *)(param_1 + 0xc))" ( (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ))) ;) }))) (labeled_statement "LAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\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_00153870();\n  }" { (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar12;" return identifier ;) (labeled_statement "code_r0x00065ba0:\n  iVar11 = 0;" statement_identifier : (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;)) (for_statement "for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }" for ( (assignment_expression "puVar10 = *(undefined4 **)(param_1 + 300)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 300)" * (cast_expression "(undefined4 **)(param_1 + 300)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n    iVar11 = iVar11 + 1;\n  }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (for_statement "for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }" for ( (assignment_expression "puVar10 = *(undefined4 **)(param_1 + 0x130)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 0x130)" * (cast_expression "(undefined4 **)(param_1 + 0x130)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ; (binary_expression "puVar10 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar10 = (undefined4 *)*puVar10" identifier = (cast_expression "(undefined4 *)*puVar10" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ) (compound_statement "{\n    iVar4 = iVar4 + 1;\n  }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) })) (if_statement "if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }" if (parenthesized_expression "(param_4 != (int *)0x0)" ( (binary_expression "param_4 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }" { (expression_statement "*param_4 = *(int *)(param_1 + 0x11c) - iVar11;" (assignment_expression "*param_4 = *(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*param_4" * identifier) = (binary_expression "*(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*(int *)(param_1 + 0x11c)" * (cast_expression "(int *)(param_1 + 0x11c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11c)" ( (binary_expression "param_1 + 0x11c" identifier + number_literal) )))) - identifier)) ;) })) (expression_statement "*param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;" (assignment_expression "*param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4" (pointer_expression "*param_3" * identifier) = (binary_expression "(*(int *)(param_1 + 0x11c) - iVar11) - iVar4" (parenthesized_expression "(*(int *)(param_1 + 0x11c) - iVar11)" ( (binary_expression "*(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*(int *)(param_1 + 0x11c)" * (cast_expression "(int *)(param_1 + 0x11c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11c)" ( (binary_expression "param_1 + 0x11c" identifier + number_literal) )))) - identifier) )) - identifier)) ;) (if_statement "if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" if (parenthesized_expression "((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0))" ( (binary_expression "(param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)" (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) || (parenthesized_expression "(piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)" ( (comma_expression "piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0" (assignment_expression "piVar2 = *(int **)(param_1 + 0x130)" identifier = (pointer_expression "*(int **)(param_1 + 0x130)" * (cast_expression "(int **)(param_1 + 0x130)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) , (binary_expression "*(int **)(param_1 + 0x130) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 0x130)" * (cast_expression "(int **)(param_1 + 0x130)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\ncode_r0x00065c08:\n    uVar12 = 0;\n  }" { (labeled_statement "code_r0x00065c08:\n    uVar12 = 0;" statement_identifier : (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" else (compound_statement "{\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" { (do_statement "do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);" do (compound_statement "{\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    }" { (expression_statement "piVar8 = piVar2;" (assignment_expression "piVar8 = piVar2" identifier = identifier) ;) (expression_statement "piVar2 = (int *)*piVar8;" (assignment_expression "piVar2 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (expression_statement "*piVar8 = *(int *)(param_1 + 300);" (assignment_expression "*piVar8 = *(int *)(param_1 + 300)" (pointer_expression "*piVar8" * identifier) = (pointer_expression "*(int *)(param_1 + 300)" * (cast_expression "(int *)(param_1 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined4 *)(param_1 + 0x130);" (assignment_expression "uVar3 = *(undefined4 *)(param_1 + 0x130)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 0x130)" * (cast_expression "(undefined4 *)(param_1 + 0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x130) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x130) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x130)" * (cast_expression "(undefined4 *)(param_1 + 0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x130)" ( (binary_expression "param_1 + 0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 300) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 300) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 300)" * (cast_expression "(undefined4 *)(param_1 + 300)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) = identifier) ;) }))) (goto_statement "goto LAB_00065943;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement default : (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case 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 IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = 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 IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) }) (else_clause else (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 { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression IDENT * LIT)) ))))) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )) * IDENT)) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) / (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression IDENT * LIT)) ))))) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )) * IDENT)) + IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (break_statement break ;)) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) + IDENT)) ;) (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 = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (labeled_statement statement_identifier : (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (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 IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (break_statement break ;)) (case_statement case 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) ))))) ;)) (expression_statement (assignment_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) )))) = (pointer_expression & IDENT)) ;) (for_statement for ( ; (binary_expression IDENT != LIT) ; (assignment_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 ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression (pointer_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 { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )))) <= (unary_expression - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) >> LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;))) (case_statement case LIT :) (case_statement case LIT :) (case_statement case 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 < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (break_statement break ;)) (case_statement default : (expression_statement (assignment_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 IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (goto_statement goto statement_identifier ;) })))
(function_definition "undefined4 FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)\n\n{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}" (type_identifier "undefined4") (function_declarator "FUN_00065870(int param_1,int param_2,uint *param_3,int *param_4,int param_5)" (identifier "FUN_00065870") (parameter_list "(int param_1,int param_2,uint *param_3,int *param_4,int param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  ushort uVar1;\n  int *piVar2;\n  undefined4 uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  int iVar11;\n  undefined4 uVar12;\n  int in_GS_OFFSET;\n  int iStack_40;\n  uint uStack_34;\n  uint uStack_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }\n  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));\n  switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }\nLAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }\nLAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }\n  return uVar12;\ncode_r0x00065ba0:\n  iVar11 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }\n  iVar4 = 0;\n  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }\n  if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }\n  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;\n  if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }\n  goto LAB_00065943;\n}" ({ "{") (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined4 *puVar10;" (type_identifier "undefined4") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int iStack_40;" (primitive_type "int") (identifier "iStack_40") (; ";")) (declaration "uint uStack_34;" (type_identifier "uint") (identifier "uStack_34") (; ";")) (declaration "uint uStack_24;" (type_identifier "uint") (identifier "uStack_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (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")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0xc) == 0) {\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) == 0" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }\n  }" ({ "{") (switch_statement "switch(param_2) {\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }" (switch "switch") (parenthesized_expression "(param_2)" (( "(") (identifier "param_2") () ")")) (compound_statement "{\n    case 0:\n      goto code_r0x00065ba0;\n    case 1:\n    case 0xb:\n      goto code_r0x00065c40;\n    case 2:\n      goto code_r0x000659e0;\n    case 3:\n      goto code_r0x00065b10;\n    case 4:\n    case 5:\n    case 6:\n      goto code_r0x00065b70;\n    case 7:\n    case 8:\n    case 9:\n      goto code_r0x000658e5;\n    case 10:\n      goto code_r0x00065990;\n    case 0xc:\n      goto code_r0x000658e0;\n    default:\n      uVar12 = 1;\n      goto LAB_00065957;\n    }" ({ "{") (case_statement "case 0:\n      goto code_r0x00065ba0;" (case "case") (number_literal "0") (: ":") (goto_statement "goto code_r0x00065ba0;" (goto "goto") (statement_identifier "code_r0x00065ba0") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 0xb:\n      goto code_r0x00065c40;" (case "case") (number_literal "0xb") (: ":") (goto_statement "goto code_r0x00065c40;" (goto "goto") (statement_identifier "code_r0x00065c40") (; ";"))) (case_statement "case 2:\n      goto code_r0x000659e0;" (case "case") (number_literal "2") (: ":") (goto_statement "goto code_r0x000659e0;" (goto "goto") (statement_identifier "code_r0x000659e0") (; ";"))) (case_statement "case 3:\n      goto code_r0x00065b10;" (case "case") (number_literal "3") (: ":") (goto_statement "goto code_r0x00065b10;" (goto "goto") (statement_identifier "code_r0x00065b10") (; ";"))) (case_statement "case 4:" (case "case") (number_literal "4") (: ":")) (case_statement "case 5:" (case "case") (number_literal "5") (: ":")) (case_statement "case 6:\n      goto code_r0x00065b70;" (case "case") (number_literal "6") (: ":") (goto_statement "goto code_r0x00065b70;" (goto "goto") (statement_identifier "code_r0x00065b70") (; ";"))) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 8:" (case "case") (number_literal "8") (: ":")) (case_statement "case 9:\n      goto code_r0x000658e5;" (case "case") (number_literal "9") (: ":") (goto_statement "goto code_r0x000658e5;" (goto "goto") (statement_identifier "code_r0x000658e5") (; ";"))) (case_statement "case 10:\n      goto code_r0x00065990;" (case "case") (number_literal "10") (: ":") (goto_statement "goto code_r0x00065990;" (goto "goto") (statement_identifier "code_r0x00065990") (; ";"))) (case_statement "case 0xc:\n      goto code_r0x000658e0;" (case "case") (number_literal "0xc") (: ":") (goto_statement "goto code_r0x000658e0;" (goto "goto") (statement_identifier "code_r0x000658e0") (; ";"))) (case_statement "default:\n      uVar12 = 1;\n      goto LAB_00065957;" (default "default") (: ":") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00065957;" (goto "goto") (statement_identifier "LAB_00065957") (; ";"))) (} "}"))) (} "}"))) (expression_statement "(*DAT_001bb43c)(*(int *)(param_1 + 0xc));" (call_expression "(*DAT_001bb43c)(*(int *)(param_1 + 0xc))" (parenthesized_expression "(*DAT_001bb43c)" (( "(") (pointer_expression "*DAT_001bb43c" (* "*") (identifier "DAT_001bb43c")) () ")")) (argument_list "(*(int *)(param_1 + 0xc))" (( "(") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (switch_statement "switch(param_2) {\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }" (switch "switch") (parenthesized_expression "(param_2)" (( "(") (identifier "param_2") () ")")) (compound_statement "{\n  case 0:\n    goto code_r0x00065ba0;\n  case 1:\n  case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;\n  case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;\n  case 4:\n  case 5:\n  case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;\n  case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;\n  case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;\n  case 7:\n  case 8:\n  case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;\n  default:\n    uVar12 = 1;\n  }" ({ "{") (case_statement "case 0:\n    goto code_r0x00065ba0;" (case "case") (number_literal "0") (: ":") (goto_statement "goto code_r0x00065ba0;" (goto "goto") (statement_identifier "code_r0x00065ba0") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 0xb:\ncode_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }\n    uVar12 = 0;\n    *param_3 = uStack_34;\n    *param_4 = 0;\n    break;" (case "case") (number_literal "0xb") (: ":") (labeled_statement "code_r0x00065c40:\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" (statement_identifier "code_r0x00065c40") (: ":") (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }\n    else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" (* "*") (cast_expression "(char *)(param_1 + 0x55)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x55)" (( "(") (binary_expression "param_1 + 0x55" (identifier "param_1") (+ "+") (number_literal "0x55")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_0004de50();\n      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;\n      uStack_34 = 0;\ncode_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }\n    }" ({ "{") (expression_statement "FUN_0004de50();" (call_expression "FUN_0004de50()" (identifier "FUN_0004de50") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 0x14))" (( "(") (binary_expression "0 < *(int *)(param_1 + 0x14)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (goto_statement "goto code_r0x00065c55;" (goto "goto") (statement_identifier "code_r0x00065c55") (; ";"))) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" (identifier "uStack_34") (= "=") (number_literal "0")) (; ";")) (labeled_statement "code_r0x00065ce4:\n      if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }" (statement_identifier "code_r0x00065ce4") (: ":") (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n        FUN_0004b0d0();\n      }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" (* "*") (cast_expression "(char *)(param_1 + 0x55)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x55)" (( "(") (binary_expression "param_1 + 0x55" (identifier "param_1") (+ "+") (number_literal "0x55")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_0004b0d0();\n      }" ({ "{") (expression_statement "FUN_0004b0d0();" (call_expression "FUN_0004b0d0()" (identifier "FUN_0004b0d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" (else "else") (compound_statement "{\n      if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }\n      uStack_34 = 0;\n    }" ({ "{") (if_statement "if (0 < *(int *)(param_1 + 0x14)) {\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 0x14))" (( "(") (binary_expression "0 < *(int *)(param_1 + 0x14)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\ncode_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }\n        goto code_r0x00065ce4;\n      }" ({ "{") (labeled_statement "code_r0x00065c55:\n        if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" (statement_identifier "code_r0x00065c55") (: ":") (if_statement "if (param_2 == 0xb) {\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }\n        else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" (if "if") (parenthesized_expression "(param_2 == 0xb)" (( "(") (binary_expression "param_2 == 0xb" (identifier "param_2") (== "==") (number_literal "0xb")) () ")")) (compound_statement "{\n          iStack_40 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));\n        }" ({ "{") (expression_statement "iStack_40 = 0;" (assignment_expression "iStack_40 = 0" (identifier "iStack_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" (identifier "uStack_34") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          } while (iStack_40 < *(int *)(param_1 + 0x14));" (do "do") (compound_statement "{\n            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }\n            iVar4 = **(int **)(iVar11 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            iStack_40 = iStack_40 + 1;\n            uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);\n          }" ({ "{") (while_statement "while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)\n            {\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }" (while "while") (parenthesized_expression "(iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)" (( "(") (comma_expression "iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0" (assignment_expression "iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (binary_expression "iStack_40 * 0x10" (identifier "iStack_40") (* "*") (number_literal "0x10"))) () ")"))))) (, ",") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n              iStack_40 = iStack_40 + 1;\n              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;\n            }" ({ "{") (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" (identifier "iStack_40") (= "=") (binary_expression "iStack_40 + 1" (identifier "iStack_40") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x14) <= iStack_40)" (( "(") (binary_expression "*(int *)(param_1 + 0x14) <= iStack_40" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (<= "<=") (identifier "iStack_40")) () ")")) (goto_statement "goto code_r0x00065ce4;" (goto "goto") (statement_identifier "code_r0x00065ce4") (; ";"))) (} "}"))) (expression_statement "iVar4 = **(int **)(iVar11 + 4);" (assignment_expression "iVar4 = **(int **)(iVar11 + 4)" (identifier "iVar4") (= "=") (pointer_expression "**(int **)(iVar11 + 4)" (* "*") (pointer_expression "*(int **)(iVar11 + 4)" (* "*") (cast_expression "(int **)(iVar11 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "uVar1 = *(ushort *)(iVar4 + 0x88);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0x88)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(iVar4 + 0x88)" (* "*") (cast_expression "(ushort *)(iVar4 + 0x88)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x88)" (( "(") (binary_expression "iVar4 + 0x88" (identifier "iVar4") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar4 + 0x94);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x94)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar4 + 0x94)" (* "*") (cast_expression "(int *)(iVar4 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x94)" (( "(") (binary_expression "iVar4 + 0x94" (identifier "iVar4") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));" (assignment_expression "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (identifier "iVar5") (= "=") (call_expression "(*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (parenthesized_expression "(*DAT_001bb468)" (( "(") (pointer_expression "*DAT_001bb468" (* "*") (identifier "DAT_001bb468")) () ")")) (argument_list "(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0xd0) + 0x2c)" (( "(") (binary_expression "*(int *)(iVar4 + 0xd0) + 0x2c" (pointer_expression "*(int *)(iVar4 + 0xd0)" (* "*") (cast_expression "(int *)(iVar4 + 0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xd0)" (( "(") (binary_expression "iVar4 + 0xd0" (identifier "iVar4") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "0x2c")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar6 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar6 = (*DAT_001bb418)(iVar4)" (identifier "iVar6") (= "=") (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" (identifier "iStack_40") (= "=") (binary_expression "iStack_40 + 1" (identifier "iStack_40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);" (assignment_expression "uStack_34 = uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" (identifier "uStack_34") (= "=") (binary_expression "uStack_34 +\n                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" (identifier "uStack_34") (+ "+") (binary_expression "(int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))\n                        / *(int *)(*(int *)(iVar11 + 4) + 0x40)" (cast_expression "(int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))" (( "(") (binary_expression "iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94)" (binary_expression "iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5" (identifier "iVar6") (+ "+") (binary_expression "((uint)uVar1 + iVar7 + 0x3c) * iVar5" (parenthesized_expression "((uint)uVar1 + iVar7 + 0x3c)" (( "(") (binary_expression "(uint)uVar1 + iVar7 + 0x3c" (binary_expression "(uint)uVar1 + iVar7" (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1")) (+ "+") (identifier "iVar7")) (+ "+") (number_literal "0x3c")) () ")")) (* "*") (identifier "iVar5"))) (+ "+") (pointer_expression "*(int *)(iVar4 + 0x94)" (* "*") (cast_expression "(int *)(iVar4 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x94)" (( "(") (binary_expression "iVar4 + 0x94" (identifier "iVar4") (+ "+") (number_literal "0x94")) () ")"))))) () ")"))) (/ "/") (pointer_expression "*(int *)(*(int *)(iVar11 + 4) + 0x40)" (* "*") (cast_expression "(int *)(*(int *)(iVar11 + 4) + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + 4) + 0x40)" (( "(") (binary_expression "*(int *)(iVar11 + 4) + 0x40" (pointer_expression "*(int *)(iVar11 + 4)" (* "*") (cast_expression "(int *)(iVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x40")) () ")"))))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iStack_40 < *(int *)(param_1 + 0x14))" (( "(") (binary_expression "iStack_40 < *(int *)(param_1 + 0x14)" (identifier "iStack_40") (< "<") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (; ";")) (} "}")) (else_clause "else {\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" (else "else") (compound_statement "{\n          iVar11 = 0;\n          uStack_34 = 0;\n          do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));\n        }" ({ "{") (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" (identifier "uStack_34") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          } while (iVar11 < *(int *)(param_1 + 0x14));" (do "do") (compound_statement "{\n            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }\n            iVar11 = iVar11 + 1;\n            iVar4 = **(int **)(iVar4 + 4);\n            uVar1 = *(ushort *)(iVar4 + 0x88);\n            iVar7 = *(int *)(iVar4 + 0x94);\n            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));\n            iVar6 = (*DAT_001bb418)(iVar4);\n            uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);\n          }" ({ "{") (while_statement "while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }" (while "while") (parenthesized_expression "(iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0)" (( "(") (comma_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0" (assignment_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar11 * 0x10" (identifier "iVar11") (* "*") (number_literal "0x10"))) () ")"))))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n              iVar11 = iVar11 + 1;\n              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;\n            }" ({ "{") (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x14) <= iVar11)" (( "(") (binary_expression "*(int *)(param_1 + 0x14) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (<= "<=") (identifier "iVar11")) () ")")) (goto_statement "goto code_r0x00065ce4;" (goto "goto") (statement_identifier "code_r0x00065ce4") (; ";"))) (} "}"))) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = **(int **)(iVar4 + 4);" (assignment_expression "iVar4 = **(int **)(iVar4 + 4)" (identifier "iVar4") (= "=") (pointer_expression "**(int **)(iVar4 + 4)" (* "*") (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 "uVar1 = *(ushort *)(iVar4 + 0x88);" (assignment_expression "uVar1 = *(ushort *)(iVar4 + 0x88)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(iVar4 + 0x88)" (* "*") (cast_expression "(ushort *)(iVar4 + 0x88)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x88)" (( "(") (binary_expression "iVar4 + 0x88" (identifier "iVar4") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar4 + 0x94);" (assignment_expression "iVar7 = *(int *)(iVar4 + 0x94)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar4 + 0x94)" (* "*") (cast_expression "(int *)(iVar4 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x94)" (( "(") (binary_expression "iVar4 + 0x94" (identifier "iVar4") (+ "+") (number_literal "0x94")) () ")"))))) (; ";")) (expression_statement "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));" (assignment_expression "iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (identifier "iVar5") (= "=") (call_expression "(*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (parenthesized_expression "(*DAT_001bb468)" (( "(") (pointer_expression "*DAT_001bb468" (* "*") (identifier "DAT_001bb468")) () ")")) (argument_list "(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c))" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0xd0) + 0x2c)" (( "(") (binary_expression "*(int *)(iVar4 + 0xd0) + 0x2c" (pointer_expression "*(int *)(iVar4 + 0xd0)" (* "*") (cast_expression "(int *)(iVar4 + 0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xd0)" (( "(") (binary_expression "iVar4 + 0xd0" (identifier "iVar4") (+ "+") (number_literal "0xd0")) () ")")))) (+ "+") (number_literal "0x2c")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar6 = (*DAT_001bb418)(iVar4);" (assignment_expression "iVar6 = (*DAT_001bb418)(iVar4)" (identifier "iVar6") (= "=") (call_expression "(*DAT_001bb418)(iVar4)" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);" (assignment_expression "uStack_34 = uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94)" (identifier "uStack_34") (= "=") (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94)" (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6" (binary_expression "uStack_34 +\n                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5" (identifier "uStack_34") (+ "+") (binary_expression "((uint)uVar1 + iVar7 + 0x3c) * iVar5" (parenthesized_expression "((uint)uVar1 + iVar7 + 0x3c)" (( "(") (binary_expression "(uint)uVar1 + iVar7 + 0x3c" (binary_expression "(uint)uVar1 + iVar7" (cast_expression "(uint)uVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar1")) (+ "+") (identifier "iVar7")) (+ "+") (number_literal "0x3c")) () ")")) (* "*") (identifier "iVar5"))) (+ "+") (identifier "iVar6")) (+ "+") (pointer_expression "*(int *)(iVar4 + 0x94)" (* "*") (cast_expression "(int *)(iVar4 + 0x94)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x94)" (( "(") (binary_expression "iVar4 + 0x94" (identifier "iVar4") (+ "+") (number_literal "0x94")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar11 < *(int *)(param_1 + 0x14))" (( "(") (binary_expression "iVar11 < *(int *)(param_1 + 0x14)" (identifier "iVar11") (< "<") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (; ";")) (} "}"))))) (goto_statement "goto code_r0x00065ce4;" (goto "goto") (statement_identifier "code_r0x00065ce4") (; ";")) (} "}"))) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" (identifier "uStack_34") (= "=") (number_literal "0")) (; ";")) (} "}"))))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = uStack_34;" (assignment_expression "*param_3 = uStack_34" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uStack_34")) (; ";")) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 2:\ncode_r0x000659e0:\n    uStack_24 = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }\n    iVar11 = *(int *)(param_1 + 0x14);\n    iStack_40 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;" (case "case") (number_literal "2") (: ":") (labeled_statement "code_r0x000659e0:\n    uStack_24 = 0;" (statement_identifier "code_r0x000659e0") (: ":") (expression_statement "uStack_24 = 0;" (assignment_expression "uStack_24 = 0" (identifier "uStack_24") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004de50();\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" (* "*") (cast_expression "(char *)(param_1 + 0x55)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x55)" (( "(") (binary_expression "param_1 + 0x55" (identifier "param_1") (+ "+") (number_literal "0x55")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_0004de50();\n    }" ({ "{") (expression_statement "FUN_0004de50();" (call_expression "FUN_0004de50()" (identifier "FUN_0004de50") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iStack_40 = 0;" (assignment_expression "iStack_40 = 0" (identifier "iStack_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint **)(param_1 + 0x1e0) = &uStack_24;" (assignment_expression "*(uint **)(param_1 + 0x1e0) = &uStack_24" (pointer_expression "*(uint **)(param_1 + 0x1e0)" (* "*") (cast_expression "(uint **)(param_1 + 0x1e0)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")")))) (= "=") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24"))) (; ";")) (if_statement "if (0 < iVar11) {\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }" (if "if") (parenthesized_expression "(0 < iVar11)" (( "(") (binary_expression "0 < iVar11" (number_literal "0") (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\n      do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);\n    }" ({ "{") (do_statement "do {\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      } while (iStack_40 < iVar11);" (do "do") (compound_statement "{\n        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);\n        if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }\n        iStack_40 = iStack_40 + 1;\n      }" ({ "{") (expression_statement "iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);" (assignment_expression "iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (* "*") (cast_expression "(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc)" (( "(") (binary_expression "iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc" (binary_expression "iStack_40 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iStack_40 * 0x10" (identifier "iStack_40") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar11 = (*DAT_001bb41c)(0x10);\n          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;\n          if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }\ncode_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }\n          iVar11 = *(int *)(param_1 + 0x14);\n        }" ({ "{") (expression_statement "iVar11 = (*DAT_001bb41c)(0x10);" (assignment_expression "iVar11 = (*DAT_001bb41c)(0x10)" (identifier "iVar11") (= "=") (call_expression "(*DAT_001bb41c)(0x10)" (parenthesized_expression "(*DAT_001bb41c)" (( "(") (pointer_expression "*DAT_001bb41c" (* "*") (identifier "DAT_001bb41c")) () ")")) (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24;" (assignment_expression "uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24" (identifier "uStack_24") (= "=") (binary_expression "iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)) + uStack_24" (binary_expression "iVar11 * (*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c))" (identifier "iVar11") (* "*") (parenthesized_expression "(*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c))" (( "(") (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +\n                               *(int *)(iVar4 + 0x3c)" (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc)" (binary_expression "*(int *)(iVar4 + 0x1c) +\n                                *(int *)(iVar4 + 0x2c)" (pointer_expression "*(int *)(iVar4 + 0x1c)" (* "*") (cast_expression "(int *)(iVar4 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x1c)" (( "(") (binary_expression "iVar4 + 0x1c" (identifier "iVar4") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (pointer_expression "*(int *)(iVar4 + 0x2c)" (* "*") (cast_expression "(int *)(iVar4 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x2c)" (( "(") (binary_expression "iVar4 + 0x2c" (identifier "iVar4") (+ "+") (number_literal "0x2c")) () ")"))))) (+ "+") (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")"))))) (+ "+") (pointer_expression "*(int *)(iVar4 + 0x3c)" (* "*") (cast_expression "(int *)(iVar4 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")"))))) () ")"))) (+ "+") (identifier "uStack_24"))) (; ";")) (if_statement "if (*(int *)(iVar4 + 0x14) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x14) != 0" (pointer_expression "*(int *)(iVar4 + 0x14)" (* "*") (cast_expression "(int *)(iVar4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));\n            uStack_24 = iVar11 + uStack_24;\n          }" ({ "{") (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14))" (identifier "iVar11") (= "=") (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x14))" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(*(int *)(iVar4 + 0x14))" (( "(") (pointer_expression "*(int *)(iVar4 + 0x14)" (* "*") (cast_expression "(int *)(iVar4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) () ")")))) (; ";")) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" (identifier "uStack_24") (= "=") (binary_expression "iVar11 + uStack_24" (identifier "iVar11") (+ "+") (identifier "uStack_24"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar4 + 0x34) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x34) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x34) != 0" (pointer_expression "*(int *)(iVar4 + 0x34)" (* "*") (cast_expression "(int *)(iVar4 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x34)" (( "(") (binary_expression "iVar4 + 0x34" (identifier "iVar4") (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));\n            uStack_24 = iVar11 + uStack_24;\n          }" ({ "{") (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34))" (identifier "iVar11") (= "=") (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x34))" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(*(int *)(iVar4 + 0x34))" (( "(") (pointer_expression "*(int *)(iVar4 + 0x34)" (* "*") (cast_expression "(int *)(iVar4 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x34)" (( "(") (binary_expression "iVar4 + 0x34" (identifier "iVar4") (+ "+") (number_literal "0x34")) () ")")))) () ")")))) (; ";")) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" (identifier "uStack_24") (= "=") (binary_expression "iVar11 + uStack_24" (identifier "iVar11") (+ "+") (identifier "uStack_24"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar4 + 0x24) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x24) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x24) != 0" (pointer_expression "*(int *)(iVar4 + 0x24)" (* "*") (cast_expression "(int *)(iVar4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x24)" (( "(") (binary_expression "iVar4 + 0x24" (identifier "iVar4") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));\n            uStack_24 = iVar11 + uStack_24;\n          }" ({ "{") (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24))" (identifier "iVar11") (= "=") (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x24))" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(*(int *)(iVar4 + 0x24))" (( "(") (pointer_expression "*(int *)(iVar4 + 0x24)" (* "*") (cast_expression "(int *)(iVar4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x24)" (( "(") (binary_expression "iVar4 + 0x24" (identifier "iVar4") (+ "+") (number_literal "0x24")) () ")")))) () ")")))) (; ";")) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" (identifier "uStack_24") (= "=") (binary_expression "iVar11 + uStack_24" (identifier "iVar11") (+ "+") (identifier "uStack_24"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar4 + 0x44) != 0) {\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(iVar4 + 0x44) != 0" (pointer_expression "*(int *)(iVar4 + 0x44)" (* "*") (cast_expression "(int *)(iVar4 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x44)" (( "(") (binary_expression "iVar4 + 0x44" (identifier "iVar4") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));\n            uStack_24 = iVar11 + uStack_24;\n          }" ({ "{") (expression_statement "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));" (assignment_expression "iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44))" (identifier "iVar11") (= "=") (call_expression "(*DAT_001bb418)(*(int *)(iVar4 + 0x44))" (parenthesized_expression "(*DAT_001bb418)" (( "(") (pointer_expression "*DAT_001bb418" (* "*") (identifier "DAT_001bb418")) () ")")) (argument_list "(*(int *)(iVar4 + 0x44))" (( "(") (pointer_expression "*(int *)(iVar4 + 0x44)" (* "*") (cast_expression "(int *)(iVar4 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x44)" (( "(") (binary_expression "iVar4 + 0x44" (identifier "iVar4") (+ "+") (number_literal "0x44")) () ")")))) () ")")))) (; ";")) (expression_statement "uStack_24 = iVar11 + uStack_24;" (assignment_expression "uStack_24 = iVar11 + uStack_24" (identifier "uStack_24") (= "=") (binary_expression "iVar11 + uStack_24" (identifier "iVar11") (+ "+") (identifier "uStack_24"))) (; ";")) (} "}"))) (for_statement "for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }" (for "for") (( "(") (assignment_expression "puVar10 = *(undefined4 **)(iVar4 + 0x30)" (identifier "puVar10") (= "=") (pointer_expression "*(undefined4 **)(iVar4 + 0x30)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 0x30)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x30)" (( "(") (binary_expression "iVar4 + 0x30" (identifier "iVar4") (+ "+") (number_literal "0x30")) () ")"))))) (; ";") (binary_expression "puVar10 != (undefined4 *)0x0" (identifier "puVar10") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar10 = (undefined4 *)*puVar10" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)*puVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) () ")") (compound_statement "{\n            while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }\n            FUN_000657a0();\n          }" ({ "{") (while_statement "while (puVar10[2] == 0) {\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }" (while "while") (parenthesized_expression "(puVar10[2] == 0)" (( "(") (binary_expression "puVar10[2] == 0" (subscript_expression "puVar10[2]" (identifier "puVar10") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar10 = (undefined4 *)*puVar10;\n              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;\n            }" ({ "{") (expression_statement "puVar10 = (undefined4 *)*puVar10;" (assignment_expression "puVar10 = (undefined4 *)*puVar10" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)*puVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (if_statement "if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;" (if "if") (parenthesized_expression "(puVar10 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar10 == (undefined4 *)0x0" (identifier "puVar10") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto code_r0x00065ae9;" (goto "goto") (statement_identifier "code_r0x00065ae9") (; ";"))) (} "}"))) (expression_statement "FUN_000657a0();" (call_expression "FUN_000657a0()" (identifier "FUN_000657a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "code_r0x00065ae9:\n          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }" (statement_identifier "code_r0x00065ae9") (: ":") (for_statement "for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;\n              puVar10 = (undefined4 *)*puVar10) {\n            FUN_00063870();\n          }" (for "for") (( "(") (assignment_expression "puVar10 = *(undefined4 **)(iVar4 + 0x10)" (identifier "puVar10") (= "=") (pointer_expression "*(undefined4 **)(iVar4 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar4 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";") (binary_expression "puVar10 != (undefined4 *)0x0" (identifier "puVar10") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar10 = (undefined4 *)*puVar10" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)*puVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) () ")") (compound_statement "{\n            FUN_00063870();\n          }" ({ "{") (expression_statement "FUN_00063870();" (call_expression "FUN_00063870()" (identifier "FUN_00063870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iStack_40 = iStack_40 + 1;" (assignment_expression "iStack_40 = iStack_40 + 1" (identifier "iStack_40") (= "=") (binary_expression "iStack_40 + 1" (identifier "iStack_40") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iStack_40 < iVar11)" (( "(") (binary_expression "iStack_40 < iVar11" (identifier "iStack_40") (< "<") (identifier "iVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x1e0) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1e0) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1e0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1e0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(param_1 + 0x55) == '\0') {\n      FUN_0004b0d0();\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x55) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x55) == '\0'" (pointer_expression "*(char *)(param_1 + 0x55)" (* "*") (cast_expression "(char *)(param_1 + 0x55)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x55)" (( "(") (binary_expression "param_1 + 0x55" (identifier "param_1") (+ "+") (number_literal "0x55")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_0004b0d0();\n    }" ({ "{") (expression_statement "FUN_0004b0d0();" (call_expression "FUN_0004b0d0()" (identifier "FUN_0004b0d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = uStack_24;" (assignment_expression "*param_3 = uStack_24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uStack_24")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 3:\ncode_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);\n    uStack_24 = 0;\n    *(uint **)(param_1 + 0x1e0) = &uStack_24;\n    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }\n    *(undefined4 *)(param_1 + 0x1e0) = 0;\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uStack_24;\n    break;" (case "case") (number_literal "3") (: ":") (labeled_statement "code_r0x00065b10:\n    iVar11 = *(int *)(param_1 + 4);" (statement_identifier "code_r0x00065b10") (: ":") (expression_statement "iVar11 = *(int *)(param_1 + 4);" (assignment_expression "iVar11 = *(int *)(param_1 + 4)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "uStack_24 = 0;" (assignment_expression "uStack_24 = 0" (identifier "uStack_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint **)(param_1 + 0x1e0) = &uStack_24;" (assignment_expression "*(uint **)(param_1 + 0x1e0) = &uStack_24" (pointer_expression "*(uint **)(param_1 + 0x1e0)" (* "*") (cast_expression "(uint **)(param_1 + 0x1e0)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")")))) (= "=") (pointer_expression "&uStack_24" (& "&") (identifier "uStack_24"))) (; ";")) (for_statement "for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {\n      FUN_00062a60();\n      FUN_00044090();\n    }" (for "for") (( "(") (; ";") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar11 = *(int *)(iVar11 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar11 + 8)" (* "*") (cast_expression "(int *)(iVar11 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 8)" (( "(") (binary_expression "iVar11 + 8" (identifier "iVar11") (+ "+") (number_literal "8")) () ")"))))) () ")") (compound_statement "{\n      FUN_00062a60();\n      FUN_00044090();\n    }" ({ "{") (expression_statement "FUN_00062a60();" (call_expression "FUN_00062a60()" (identifier "FUN_00062a60") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00044090();" (call_expression "FUN_00044090()" (identifier "FUN_00044090") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x1e0) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x1e0) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x1e0)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1e0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1e0)" (( "(") (binary_expression "param_1 + 0x1e0" (identifier "param_1") (+ "+") (number_literal "0x1e0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = uStack_24;" (assignment_expression "*param_3 = uStack_24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uStack_24")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:" (case "case") (number_literal "4") (: ":")) (case_statement "case 5:" (case "case") (number_literal "5") (: ":")) (case_statement "case 6:\ncode_r0x00065b70:\n    *param_3 = 0;\n    iVar11 = param_1 + param_2 * 4;\n    *param_4 = *(int *)(iVar11 + 0x110);\n    if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }\n    goto code_r0x00065c08;" (case "case") (number_literal "6") (: ":") (labeled_statement "code_r0x00065b70:\n    *param_3 = 0;" (statement_identifier "code_r0x00065b70") (: ":") (expression_statement "*param_3 = 0;" (assignment_expression "*param_3 = 0" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar11 = param_1 + param_2 * 4;" (assignment_expression "iVar11 = param_1 + param_2 * 4" (identifier "iVar11") (= "=") (binary_expression "param_1 + param_2 * 4" (identifier "param_1") (+ "+") (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")))) (; ";")) (expression_statement "*param_4 = *(int *)(iVar11 + 0x110);" (assignment_expression "*param_4 = *(int *)(iVar11 + 0x110)" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (pointer_expression "*(int *)(iVar11 + 0x110)" (* "*") (cast_expression "(int *)(iVar11 + 0x110)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x110)" (( "(") (binary_expression "iVar11 + 0x110" (identifier "iVar11") (+ "+") (number_literal "0x110")) () ")"))))) (; ";")) (if_statement "if (param_5 != 0) {\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }" (if "if") (parenthesized_expression "(param_5 != 0)" (( "(") (binary_expression "param_5 != 0" (identifier "param_5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined4 *)(iVar11 + 0x110) = 0;\n      uVar12 = 0;\n      break;\n    }" ({ "{") (expression_statement "*(undefined4 *)(iVar11 + 0x110) = 0;" (assignment_expression "*(undefined4 *)(iVar11 + 0x110) = 0" (pointer_expression "*(undefined4 *)(iVar11 + 0x110)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x110)" (( "(") (binary_expression "iVar11 + 0x110" (identifier "iVar11") (+ "+") (number_literal "0x110")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (goto_statement "goto code_r0x00065c08;" (goto "goto") (statement_identifier "code_r0x00065c08") (; ";"))) (case_statement "case 10:\ncode_r0x00065990:\n    *param_4 = 0;\n    uVar9 = 1;\n    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }\n    uVar12 = 0;\n    *param_3 = uVar9;\n    break;" (case "case") (number_literal "10") (: ":") (labeled_statement "code_r0x00065990:\n    *param_4 = 0;" (statement_identifier "code_r0x00065990") (: ":") (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }" (if "if") (parenthesized_expression "((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc))" (( "(") (binary_expression "(int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)" (cast_expression "(int)(uint)(*(int *)(param_1 + 0x1d8) != 0)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(*(int *)(param_1 + 0x1d8) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_1 + 0x1d8) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1d8) != 0" (pointer_expression "*(int *)(param_1 + 0x1d8)" (* "*") (cast_expression "(int *)(param_1 + 0x1d8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d8)" (( "(") (binary_expression "param_1 + 0x1d8" (identifier "param_1") (+ "+") (number_literal "0x1d8")) () ")")))) (!= "!=") (number_literal "0")) () ")")))) (<= "<=") (unary_expression "-*(int *)(param_1 + 0x1dc)" (- "-") (pointer_expression "*(int *)(param_1 + 0x1dc)" (* "*") (cast_expression "(int *)(param_1 + 0x1dc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1dc)" (( "(") (binary_expression "param_1 + 0x1dc" (identifier "param_1") (+ "+") (number_literal "0x1dc")) () ")")))))) () ")")) (compound_statement "{\n      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;\n      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;\n    }" ({ "{") (expression_statement "uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;" (assignment_expression "uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f" (identifier "uVar9") (= "=") (binary_expression "*(int *)(param_1 + 0x1d4) >> 0x1f" (pointer_expression "*(int *)(param_1 + 0x1d4)" (* "*") (cast_expression "(int *)(param_1 + 0x1d4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d4)" (( "(") (binary_expression "param_1 + 0x1d4" (identifier "param_1") (+ "+") (number_literal "0x1d4")) () ")")))) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f;" (assignment_expression "uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f" (identifier "uVar9") (= "=") (binary_expression "(uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>\n              0x1f" (binary_expression "(uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0))" (parenthesized_expression "(uVar9 - *(int *)(param_1 + 0x1d4))" (( "(") (binary_expression "uVar9 - *(int *)(param_1 + 0x1d4)" (identifier "uVar9") (- "-") (pointer_expression "*(int *)(param_1 + 0x1d4)" (* "*") (cast_expression "(int *)(param_1 + 0x1d4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d4)" (( "(") (binary_expression "param_1 + 0x1d4" (identifier "param_1") (+ "+") (number_literal "0x1d4")) () ")"))))) () ")")) (- "-") (call_expression "(uint)(uVar9 < *(uint *)(param_1 + 0x1d0))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar9 < *(uint *)(param_1 + 0x1d0))" (( "(") (binary_expression "uVar9 < *(uint *)(param_1 + 0x1d0)" (identifier "uVar9") (< "<") (pointer_expression "*(uint *)(param_1 + 0x1d0)" (* "*") (cast_expression "(uint *)(param_1 + 0x1d0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1d0)" (( "(") (binary_expression "param_1 + 0x1d0" (identifier "param_1") (+ "+") (number_literal "0x1d0")) () ")"))))) () ")")))) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = uVar9;" (assignment_expression "*param_3 = uVar9" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar9")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xc:\ncode_r0x000658e0:\n    param_2 = 10;" (case "case") (number_literal "0xc") (: ":") (labeled_statement "code_r0x000658e0:\n    param_2 = 10;" (statement_identifier "code_r0x000658e0") (: ":") (expression_statement "param_2 = 10;" (assignment_expression "param_2 = 10" (identifier "param_2") (= "=") (number_literal "10")) (; ";")))) (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 8:" (case "case") (number_literal "8") (: ":")) (case_statement "case 9:\ncode_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);\n    if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }\ncode_r0x00065931:\n    uVar12 = 0;\n    *param_4 = 0;\n    *param_3 = uVar9;\n    break;" (case "case") (number_literal "9") (: ":") (labeled_statement "code_r0x000658e5:\n    iVar11 = *(int *)(param_1 + 0x14);" (statement_identifier "code_r0x000658e5") (: ":") (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (if_statement "if (iVar11 < 1) {\n      uVar9 = 0;\n    }\n    else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" (if "if") (parenthesized_expression "(iVar11 < 1)" (( "(") (binary_expression "iVar11 < 1" (identifier "iVar11") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      uVar9 = 0;\n    }" ({ "{") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" (else "else") (if_statement "if (param_5 == 0) {\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }\n    else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar4 = 0;\n      uVar9 = 0;\n      do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);\n    }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      } while (iVar4 != iVar11);" (do "do") (compound_statement "{\n        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);\n        if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }\n        iVar4 = iVar4 + 1;\n      }" ({ "{") (expression_statement "iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);" (assignment_expression "iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10" (binary_expression "*(int *)(param_1 + 0x10) + 4" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar4 * 0x10" (identifier "iVar4") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (if_statement "if (iVar7 != 0) {\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);\n        }" ({ "{") (expression_statement "uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);" (assignment_expression "uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" (identifier "uVar9") (= "=") (binary_expression "uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" (identifier "uVar9") (+ "+") (pointer_expression "*(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" (* "*") (cast_expression "(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4)" (( "(") (binary_expression "**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4" (binary_expression "**(int **)(iVar7 + 4) + 4" (pointer_expression "**(int **)(iVar7 + 4)" (* "*") (pointer_expression "*(int **)(iVar7 + 4)" (* "*") (cast_expression "(int **)(iVar7 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 4)" (( "(") (binary_expression "iVar7 + 4" (identifier "iVar7") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "4")) (+ "+") (binary_expression "(param_2 + 0x25) * 4" (parenthesized_expression "(param_2 + 0x25)" (( "(") (binary_expression "param_2 + 0x25" (identifier "param_2") (+ "+") (number_literal "0x25")) () ")")) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (} "}"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != iVar11)" (( "(") (binary_expression "iVar4 != iVar11" (identifier "iVar4") (!= "!=") (identifier "iVar11")) () ")")) (; ";")) (} "}")) (else_clause "else {\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" (else "else") (compound_statement "{\n      iVar4 = *(int *)(param_1 + 0x10);\n      uVar9 = 0;\n      iVar7 = 0;\n      do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);\n    }" ({ "{") (expression_statement "iVar4 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      } while (iVar7 < iVar11);" (do "do") (compound_statement "{\n        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }\n        iVar7 = iVar7 + 1;\n      }" ({ "{") (expression_statement "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);" (assignment_expression "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar4 + 4 + iVar7 * 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 4 + iVar7 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4 + iVar7 * 0x10)" (( "(") (binary_expression "iVar4 + 4 + iVar7 * 0x10" (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar7 * 0x10" (identifier "iVar7") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (while_statement "while (iVar5 != 0) {\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }" (while "while") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar7 = iVar7 + 1;\n          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);\n          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);\n          *(undefined4 *)(iVar11 + 0x98) = 0;\n          iVar11 = *(int *)(param_1 + 0x14);\n          if (iVar11 <= iVar7) goto code_r0x00065931;\n          iVar4 = *(int *)(param_1 + 0x10);\n          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);\n        }" ({ "{") (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);" (assignment_expression "iVar11 = param_2 * 4 + **(int **)(iVar5 + 4)" (identifier "iVar11") (= "=") (binary_expression "param_2 * 4 + **(int **)(iVar5 + 4)" (binary_expression "param_2 * 4" (identifier "param_2") (* "*") (number_literal "4")) (+ "+") (pointer_expression "**(int **)(iVar5 + 4)" (* "*") (pointer_expression "*(int **)(iVar5 + 4)" (* "*") (cast_expression "(int **)(iVar5 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar5 + 4)" (( "(") (binary_expression "iVar5 + 4" (identifier "iVar5") (+ "+") (number_literal "4")) () ")"))))))) (; ";")) (expression_statement "uVar9 = uVar9 + *(int *)(iVar11 + 0x98);" (assignment_expression "uVar9 = uVar9 + *(int *)(iVar11 + 0x98)" (identifier "uVar9") (= "=") (binary_expression "uVar9 + *(int *)(iVar11 + 0x98)" (identifier "uVar9") (+ "+") (pointer_expression "*(int *)(iVar11 + 0x98)" (* "*") (cast_expression "(int *)(iVar11 + 0x98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x98)" (( "(") (binary_expression "iVar11 + 0x98" (identifier "iVar11") (+ "+") (number_literal "0x98")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)(iVar11 + 0x98) = 0;" (assignment_expression "*(undefined4 *)(iVar11 + 0x98) = 0" (pointer_expression "*(undefined4 *)(iVar11 + 0x98)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 0x98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x98)" (( "(") (binary_expression "iVar11 + 0x98" (identifier "iVar11") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar11 <= iVar7) goto code_r0x00065931;" (if "if") (parenthesized_expression "(iVar11 <= iVar7)" (( "(") (binary_expression "iVar11 <= iVar7" (identifier "iVar11") (<= "<=") (identifier "iVar7")) () ")")) (goto_statement "goto code_r0x00065931;" (goto "goto") (statement_identifier "code_r0x00065931") (; ";"))) (expression_statement "iVar4 = *(int *)(param_1 + 0x10);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x10)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);" (assignment_expression "iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar4 + 4 + iVar7 * 0x10)" (* "*") (cast_expression "(int *)(iVar4 + 4 + iVar7 * 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4 + iVar7 * 0x10)" (( "(") (binary_expression "iVar4 + 4 + iVar7 * 0x10" (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar7 * 0x10" (identifier "iVar7") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 < iVar11)" (( "(") (binary_expression "iVar7 < iVar11" (identifier "iVar7") (< "<") (identifier "iVar11")) () ")")) (; ";")) (} "}")))))) (labeled_statement "code_r0x00065931:\n    uVar12 = 0;" (statement_identifier "code_r0x00065931") (: ":") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";"))) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_3 = uVar9;" (assignment_expression "*param_3 = uVar9" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar9")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "default:\n    uVar12 = 1;" (default "default") (: ":") (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" (identifier "uVar12") (= "=") (number_literal "1")) (; ";"))) (} "}"))) (labeled_statement "LAB_00065943:\n  if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" (statement_identifier "LAB_00065943") (: ":") (if_statement "if (*(int *)(param_1 + 0xc) != 0) {\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xc) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) != 0" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (*DAT_001bb444)(*(int *)(param_1 + 0xc));\n  }" ({ "{") (expression_statement "(*DAT_001bb444)(*(int *)(param_1 + 0xc));" (call_expression "(*DAT_001bb444)(*(int *)(param_1 + 0xc))" (parenthesized_expression "(*DAT_001bb444)" (( "(") (pointer_expression "*DAT_001bb444" (* "*") (identifier "DAT_001bb444")) () ")")) (argument_list "(*(int *)(param_1 + 0xc))" (( "(") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (} "}")))) (labeled_statement "LAB_00065957:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\n  }" (statement_identifier "LAB_00065957") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_00153870();\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_00153870();\n  }" ({ "{") (expression_statement "FUN_00153870();" (call_expression "FUN_00153870()" (identifier "FUN_00153870") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar12;" (return "return") (identifier "uVar12") (; ";")) (labeled_statement "code_r0x00065ba0:\n  iVar11 = 0;" (statement_identifier "code_r0x00065ba0") (: ":") (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";"))) (for_statement "for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar11 = iVar11 + 1;\n  }" (for "for") (( "(") (assignment_expression "puVar10 = *(undefined4 **)(param_1 + 300)" (identifier "puVar10") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 300)" (* "*") (cast_expression "(undefined4 **)(param_1 + 300)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";") (binary_expression "puVar10 != (undefined4 *)0x0" (identifier "puVar10") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar10 = (undefined4 *)*puVar10" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)*puVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) () ")") (compound_statement "{\n    iVar11 = iVar11 + 1;\n  }" ({ "{") (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (for_statement "for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;\n      puVar10 = (undefined4 *)*puVar10) {\n    iVar4 = iVar4 + 1;\n  }" (for "for") (( "(") (assignment_expression "puVar10 = *(undefined4 **)(param_1 + 0x130)" (identifier "puVar10") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 0x130)" (* "*") (cast_expression "(undefined4 **)(param_1 + 0x130)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";") (binary_expression "puVar10 != (undefined4 *)0x0" (identifier "puVar10") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar10 = (undefined4 *)*puVar10" (identifier "puVar10") (= "=") (cast_expression "(undefined4 *)*puVar10" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) () ")") (compound_statement "{\n    iVar4 = iVar4 + 1;\n  }" ({ "{") (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (param_4 != (int *)0x0) {\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }" (if "if") (parenthesized_expression "(param_4 != (int *)0x0)" (( "(") (binary_expression "param_4 != (int *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;\n  }" ({ "{") (expression_statement "*param_4 = *(int *)(param_1 + 0x11c) - iVar11;" (assignment_expression "*param_4 = *(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (binary_expression "*(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*(int *)(param_1 + 0x11c)" (* "*") (cast_expression "(int *)(param_1 + 0x11c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11c)" (( "(") (binary_expression "param_1 + 0x11c" (identifier "param_1") (+ "+") (number_literal "0x11c")) () ")")))) (- "-") (identifier "iVar11"))) (; ";")) (} "}"))) (expression_statement "*param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;" (assignment_expression "*param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "(*(int *)(param_1 + 0x11c) - iVar11) - iVar4" (parenthesized_expression "(*(int *)(param_1 + 0x11c) - iVar11)" (( "(") (binary_expression "*(int *)(param_1 + 0x11c) - iVar11" (pointer_expression "*(int *)(param_1 + 0x11c)" (* "*") (cast_expression "(int *)(param_1 + 0x11c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11c)" (( "(") (binary_expression "param_1 + 0x11c" (identifier "param_1") (+ "+") (number_literal "0x11c")) () ")")))) (- "-") (identifier "iVar11")) () ")")) (- "-") (identifier "iVar4"))) (; ";")) (if_statement "if ((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {\ncode_r0x00065c08:\n    uVar12 = 0;\n  }\n  else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" (if "if") (parenthesized_expression "((param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0))" (( "(") (binary_expression "(param_5 == 0) ||\n     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)" (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)" (( "(") (comma_expression "piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0" (assignment_expression "piVar2 = *(int **)(param_1 + 0x130)" (identifier "piVar2") (= "=") (pointer_expression "*(int **)(param_1 + 0x130)" (* "*") (cast_expression "(int **)(param_1 + 0x130)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (, ",") (binary_expression "*(int **)(param_1 + 0x130) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 0x130)" (* "*") (cast_expression "(int **)(param_1 + 0x130)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\ncode_r0x00065c08:\n    uVar12 = 0;\n  }" ({ "{") (labeled_statement "code_r0x00065c08:\n    uVar12 = 0;" (statement_identifier "code_r0x00065c08") (: ":") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" (else "else") (compound_statement "{\n    do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);\n    uVar12 = 0;\n    *piVar8 = *(int *)(param_1 + 300);\n    uVar3 = *(undefined4 *)(param_1 + 0x130);\n    *(undefined4 *)(param_1 + 0x130) = 0;\n    *(undefined4 *)(param_1 + 300) = uVar3;\n  }" ({ "{") (do_statement "do {\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    } while (piVar2 != (int *)0x0);" (do "do") (compound_statement "{\n      piVar8 = piVar2;\n      piVar2 = (int *)*piVar8;\n    }" ({ "{") (expression_statement "piVar8 = piVar2;" (assignment_expression "piVar8 = piVar2" (identifier "piVar8") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "piVar2 = (int *)*piVar8;" (assignment_expression "piVar2 = (int *)*piVar8" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar8 = *(int *)(param_1 + 300);" (assignment_expression "*piVar8 = *(int *)(param_1 + 300)" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (pointer_expression "*(int *)(param_1 + 300)" (* "*") (cast_expression "(int *)(param_1 + 300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(undefined4 *)(param_1 + 0x130);" (assignment_expression "uVar3 = *(undefined4 *)(param_1 + 0x130)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 0x130)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x130) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x130) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x130)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x130)" (( "(") (binary_expression "param_1 + 0x130" (identifier "param_1") (+ "+") (number_literal "0x130")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 300) = uVar3;" (assignment_expression "*(undefined4 *)(param_1 + 300) = uVar3" (pointer_expression "*(undefined4 *)(param_1 + 300)" (* "*") (cast_expression "(undefined4 *)(param_1 + 300)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (} "}")))) (goto_statement "goto LAB_00065943;" (goto "goto") (statement_identifier "LAB_00065943") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

int function_1(type_1 *db,int var_4,int *pCurrent,int *var_26,int var_21)

{
  type_2 uVar1;
  type_3 *var_5;
  type_4 *var_12;
  type_5 *var_14;
  type_6 *var_18;
  type_7 *var_25;
  type_8 *pPVar6;
  int var_8;
  type_9 var_22;
  int var_11;
  type_10 *pDVar10;
  type_7 *pLVar11;
  int var_10;
  type_11 *var_15;
  int var_9;
  int var_1;
  type_1 *in_stack_ffffffb4;
  type_6 *in_stack_ffffffb8;
  int var_6;
  int var_7;
  int var_13;
  int var_23;
  
  var_23 = *(int *)(var_1 + 0x14);
  if (db->mutex == (type_12 *)0x0) {
    switch(var_4) {
    case 0:
      goto _L14445;
    case 1:
    case 0xb:
      goto _L14439;
    case 2:
      goto _L14444;
    case 3:
      goto _L14443;
    case 4:
    case 5:
    case 6:
      goto _L14442;
    case 7:
    case 8:
    case 9:
      goto _L14446;
    case 10:
      goto _L14440;
    case 0xc:
      goto _L14437;
    default:
      var_9 = 1;
      goto LAB_00065957;
    }
  }
  (*sqlite3Config.mutex.xMutexEnter)(db->mutex);
  switch(var_4) {
  case 0:
    goto _L14445;
  case 1:
  case 0xb:
_L14439:
    if (db->noSharedCache == '\0') {
      var_2(db);
      if (0 < db->nDb) goto LAB_00065c55;
      var_7 = 0;
LAB_00065ce4:
      if (db->noSharedCache == '\0') {
        var_3(db);
      }
    }
    else {
      if (0 < db->nDb) {
LAB_00065c55:
        if (var_4 == 0xb) {
          var_6 = 0;
          var_7 = 0;
          do {
            while (var_5 = db->aDb[var_6].pBt, var_5 == (type_3 *)0x0) {
              var_6 = var_6 + 1;
              if (db->nDb <= var_6) goto LAB_00065ce4;
            }
            pPVar6 = var_5->pBt->pPager;
            uVar1 = pPVar6->nExtra;
            var_9 = pPVar6->pageSize;
            var_10 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);
            var_8 = (*sqlite3Config.m.xSize)(pPVar6);
            var_6 = var_6 + 1;
            var_7 = var_7 +
                       (int)(var_8 + ((type_9)uVar1 + var_9 + 0x3c) * var_10 + pPVar6->pageSize) /
                       var_5->pBt->nRef;
          } while (var_6 < db->nDb);
        }
        else {
          var_9 = 0;
          var_7 = 0;
          do {
            while (var_5 = db->aDb[var_9].pBt, var_5 == (type_3 *)0x0) {
              var_9 = var_9 + 1;
              if (db->nDb <= var_9) goto LAB_00065ce4;
            }
            var_9 = var_9 + 1;
            pPVar6 = var_5->pBt->pPager;
            uVar1 = pPVar6->nExtra;
            var_10 = pPVar6->pageSize;
            var_8 = (*sqlite3Config.pcache2.xPagecount)(pPVar6->pPCache->pCache);
            var_11 = (*sqlite3Config.m.xSize)(pPVar6);
            var_7 = var_7 + ((type_9)uVar1 + var_10 + 0x3c) * var_8 + var_11 + pPVar6->pageSize;
          } while (var_9 < db->nDb);
        }
        goto LAB_00065ce4;
      }
      var_7 = 0;
    }
    var_9 = 0;
    *pCurrent = var_7;
    *var_26 = 0;
    break;
  case 2:
_L14444:
    var_13 = 0;
    if (db->noSharedCache == '\0') {
      var_2(db);
    }
    var_9 = db->nDb;
    var_6 = 0;
    db->pnBytesFreed = &var_13;
    if (0 < var_9) {
      do {
        var_12 = db->aDb[var_6].pSchema;
        if (var_12 != (type_4 *)0x0) {
          var_9 = (*sqlite3Config.m.xRoundup)(0x10);
          var_13 = var_9 * ((var_12->idxHash).count +
                            (var_12->trigHash).count + (var_12->tblHash).count +
                           (var_12->fkeyHash).count) + var_13;
          var_14 = (var_12->tblHash).ht;
          if (var_14 != (type_5 *)0x0) {
            var_9 = (*sqlite3Config.m.xSize)(var_14);
            var_13 = var_9 + var_13;
          }
          var_14 = (var_12->trigHash).ht;
          if (var_14 != (type_5 *)0x0) {
            var_9 = (*sqlite3Config.m.xSize)(var_14);
            var_13 = var_9 + var_13;
          }
          var_14 = (var_12->idxHash).ht;
          if (var_14 != (type_5 *)0x0) {
            var_9 = (*sqlite3Config.m.xSize)(var_14);
            var_13 = var_9 + var_13;
          }
          var_14 = (var_12->fkeyHash).ht;
          if (var_14 != (type_5 *)0x0) {
            var_9 = (*sqlite3Config.m.xSize)(var_14);
            var_13 = var_9 + var_13;
          }
          for (var_15 = (var_12->trigHash).first; var_15 != (type_11 *)0x0;
              var_15 = var_15->next) {
            while ((type_13 *)var_15->data == (type_13 *)0x0) {
              var_15 = var_15->next;
              if (var_15 == (type_11 *)0x0) goto LAB_00065ae9;
            }
            var_16(db,(type_13 *)var_15->data);
          }
LAB_00065ae9:
          for (var_15 = (var_12->tblHash).first; var_15 != (type_11 *)0x0;
              var_15 = var_15->next) {
            var_17(db,(type_14 *)var_15->data);
          }
          var_9 = db->nDb;
        }
        var_6 = var_6 + 1;
      } while (var_6 < var_9);
    }
    db->pnBytesFreed = (int *)0x0;
    if (db->noSharedCache == '\0') {
      var_3(db);
    }
    var_9 = 0;
    *var_26 = 0;
    *pCurrent = var_13;
    break;
  case 3:
_L14443:
    var_18 = db->pVdbe;
    var_13 = 0;
    db->pnBytesFreed = &var_13;
    for (; var_18 != (type_6 *)0x0; var_18 = var_18->pNext) {
      var_19(in_stack_ffffffb4,in_stack_ffffffb8);
      var_20(db,var_18);
    }
    db->pnBytesFreed = (int *)0x0;
    var_9 = 0;
    *var_26 = 0;
    *pCurrent = var_13;
    break;
  case 4:
  case 5:
  case 6:
_L14442:
    *pCurrent = 0;
    *var_26 = (db->lookaside).anStat[var_4 + -4];
    if (var_21 != 0) {
      (db->lookaside).anStat[var_4 + -4] = 0;
      var_9 = 0;
      break;
    }
    goto LAB_00065c08;
  case 10:
_L14440:
    *var_26 = 0;
    var_22 = 1;
    if ((int)(type_9)((int)db->nDeferredImmCons != 0) <= -*(int *)((int)&db->nDeferredImmCons + 4)) {
      var_22 = *(int *)((int)&db->nDeferredCons + 4) >> 0x1f;
      var_22 = (var_22 - *(int *)((int)&db->nDeferredCons + 4)) -
              (type_9)(var_22 < (type_9)db->nDeferredCons) >> 0x1f;
    }
    var_9 = 0;
    *pCurrent = var_22;
    break;
  case 0xc:
_L14437:
    var_4 = 10;
  case 7:
  case 8:
  case 9:
_L14446:
    var_9 = db->nDb;
    if (var_9 < 1) {
      var_10 = 0;
    }
    else if (var_21 == 0) {
      var_8 = 0;
      var_10 = 0;
      do {
        var_5 = db->aDb[var_8].pBt;
        if (var_5 != (type_3 *)0x0) {
          var_10 = var_10 + var_5->pBt->pPager->aStat[var_4 + -7];
        }
        var_8 = var_8 + 1;
      } while (var_8 != var_9);
    }
    else {
      pDVar10 = db->aDb;
      var_10 = 0;
      var_8 = 0;
      do {
        var_5 = pDVar10[var_8].pBt;
        while (var_5 != (type_3 *)0x0) {
          var_8 = var_8 + 1;
          pPVar6 = var_5->pBt->pPager;
          var_10 = var_10 + pPVar6->aStat[var_4 + -7];
          pPVar6->aStat[var_4 + -7] = 0;
          var_9 = db->nDb;
          if (var_9 <= var_8) goto LAB_00065931;
          pDVar10 = db->aDb;
          var_5 = pDVar10[var_8].pBt;
        }
        var_8 = var_8 + 1;
      } while (var_8 < var_9);
    }
LAB_00065931:
    var_9 = 0;
    *var_26 = 0;
    *pCurrent = var_10;
    break;
  default:
    var_9 = 1;
  }
LAB_00065943:
  if (db->mutex != (type_12 *)0x0) {
    (*sqlite3Config.mutex.xMutexLeave)(db->mutex);
  }
LAB_00065957:
  if (var_23 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_24();
  }
  return var_9;
_L14445:
  var_9 = 0;
  for (var_25 = (db->lookaside).pInit; var_25 != (type_7 *)0x0; var_25 = var_25->pNext) {
    var_9 = var_9 + 1;
  }
  var_10 = 0;
  for (var_25 = (db->lookaside).pFree; var_25 != (type_7 *)0x0; var_25 = var_25->pNext) {
    var_10 = var_10 + 1;
  }
  if (var_26 != (int *)0x0) {
    *var_26 = (db->lookaside).nSlot - var_9;
  }
  *pCurrent = ((db->lookaside).nSlot - var_9) - var_10;
  if ((var_21 == 0) || (var_25 = (db->lookaside).pFree, var_25 == (type_7 *)0x0)) {
LAB_00065c08:
    var_9 = 0;
  }
  else {
    do {
      pLVar11 = var_25;
      var_25 = pLVar11->pNext;
    } while (var_25 != (type_7 *)0x0);
    var_9 = 0;
    pLVar11->pNext = (db->lookaside).pInit;
    var_25 = (db->lookaside).pFree;
    (db->lookaside).pFree = (type_7 *)0x0;
    (db->lookaside).pInit = var_25;
  }
  goto LAB_00065943;
}


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

/* WARNING: Function: __i686.get_pc_thunk.si replaced with injection: get_pc_thunk_si */

undefined4 MASKED(int param_1,int param_2,uint *param_3,int *param_4,int param_5)

{
  ushort uVar1;
  int *piVar2;
  undefined4 uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int *piVar8;
  uint uVar9;
  undefined4 *puVar10;
  int iVar11;
  undefined4 uVar12;
  int in_GS_OFFSET;
  int iStack_40;
  uint uStack_34;
  uint uStack_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (*(int *)(param_1 + 0xc) == 0) {
    switch(param_2) {
    case 0:
      goto code_r0x00065ba0;
    case 1:
    case 0xb:
      goto code_r0x00065c40;
    case 2:
      goto code_r0x000659e0;
    case 3:
      goto code_r0x00065b10;
    case 4:
    case 5:
    case 6:
      goto code_r0x00065b70;
    case 7:
    case 8:
    case 9:
      goto code_r0x000658e5;
    case 10:
      goto code_r0x00065990;
    case 0xc:
      goto code_r0x000658e0;
    default:
      uVar12 = 1;
      goto LAB_00065957;
    }
  }
  (*DAT_001bb43c)(*(int *)(param_1 + 0xc));
  switch(param_2) {
  case 0:
    goto code_r0x00065ba0;
  case 1:
  case 0xb:
code_r0x00065c40:
    if (*(char *)(param_1 + 0x55) == '\0') {
      FUN_0004de50();
      if (0 < *(int *)(param_1 + 0x14)) goto code_r0x00065c55;
      uStack_34 = 0;
code_r0x00065ce4:
      if (*(char *)(param_1 + 0x55) == '\0') {
        FUN_0004b0d0();
      }
    }
    else {
      if (0 < *(int *)(param_1 + 0x14)) {
code_r0x00065c55:
        if (param_2 == 0xb) {
          iStack_40 = 0;
          uStack_34 = 0;
          do {
            while (iVar11 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iStack_40 * 0x10), iVar11 == 0)
            {
              iStack_40 = iStack_40 + 1;
              if (*(int *)(param_1 + 0x14) <= iStack_40) goto code_r0x00065ce4;
            }
            iVar4 = **(int **)(iVar11 + 4);
            uVar1 = *(ushort *)(iVar4 + 0x88);
            iVar7 = *(int *)(iVar4 + 0x94);
            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));
            iVar6 = (*DAT_001bb418)(iVar4);
            iStack_40 = iStack_40 + 1;
            uStack_34 = uStack_34 +
                        (int)(iVar6 + ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + *(int *)(iVar4 + 0x94))
                        / *(int *)(*(int *)(iVar11 + 4) + 0x40);
          } while (iStack_40 < *(int *)(param_1 + 0x14));
        }
        else {
          iVar11 = 0;
          uStack_34 = 0;
          do {
            while (iVar4 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar11 * 0x10), iVar4 == 0) {
              iVar11 = iVar11 + 1;
              if (*(int *)(param_1 + 0x14) <= iVar11) goto code_r0x00065ce4;
            }
            iVar11 = iVar11 + 1;
            iVar4 = **(int **)(iVar4 + 4);
            uVar1 = *(ushort *)(iVar4 + 0x88);
            iVar7 = *(int *)(iVar4 + 0x94);
            iVar5 = (*DAT_001bb468)(*(undefined4 *)(*(int *)(iVar4 + 0xd0) + 0x2c));
            iVar6 = (*DAT_001bb418)(iVar4);
            uStack_34 = uStack_34 +
                        ((uint)uVar1 + iVar7 + 0x3c) * iVar5 + iVar6 + *(int *)(iVar4 + 0x94);
          } while (iVar11 < *(int *)(param_1 + 0x14));
        }
        goto code_r0x00065ce4;
      }
      uStack_34 = 0;
    }
    uVar12 = 0;
    *param_3 = uStack_34;
    *param_4 = 0;
    break;
  case 2:
code_r0x000659e0:
    uStack_24 = 0;
    if (*(char *)(param_1 + 0x55) == '\0') {
      FUN_0004de50();
    }
    iVar11 = *(int *)(param_1 + 0x14);
    iStack_40 = 0;
    *(uint **)(param_1 + 0x1e0) = &uStack_24;
    if (0 < iVar11) {
      do {
        iVar4 = *(int *)(iStack_40 * 0x10 + *(int *)(param_1 + 0x10) + 0xc);
        if (iVar4 != 0) {
          iVar11 = (*DAT_001bb41c)(0x10);
          uStack_24 = iVar11 * (*(int *)(iVar4 + 0x1c) +
                                *(int *)(iVar4 + 0x2c) + *(int *)(iVar4 + 0xc) +
                               *(int *)(iVar4 + 0x3c)) + uStack_24;
          if (*(int *)(iVar4 + 0x14) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x14));
            uStack_24 = iVar11 + uStack_24;
          }
          if (*(int *)(iVar4 + 0x34) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x34));
            uStack_24 = iVar11 + uStack_24;
          }
          if (*(int *)(iVar4 + 0x24) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x24));
            uStack_24 = iVar11 + uStack_24;
          }
          if (*(int *)(iVar4 + 0x44) != 0) {
            iVar11 = (*DAT_001bb418)(*(int *)(iVar4 + 0x44));
            uStack_24 = iVar11 + uStack_24;
          }
          for (puVar10 = *(undefined4 **)(iVar4 + 0x30); puVar10 != (undefined4 *)0x0;
              puVar10 = (undefined4 *)*puVar10) {
            while (puVar10[2] == 0) {
              puVar10 = (undefined4 *)*puVar10;
              if (puVar10 == (undefined4 *)0x0) goto code_r0x00065ae9;
            }
            FUN_000657a0();
          }
code_r0x00065ae9:
          for (puVar10 = *(undefined4 **)(iVar4 + 0x10); puVar10 != (undefined4 *)0x0;
              puVar10 = (undefined4 *)*puVar10) {
            FUN_00063870();
          }
          iVar11 = *(int *)(param_1 + 0x14);
        }
        iStack_40 = iStack_40 + 1;
      } while (iStack_40 < iVar11);
    }
    *(undefined4 *)(param_1 + 0x1e0) = 0;
    if (*(char *)(param_1 + 0x55) == '\0') {
      FUN_0004b0d0();
    }
    uVar12 = 0;
    *param_4 = 0;
    *param_3 = uStack_24;
    break;
  case 3:
code_r0x00065b10:
    iVar11 = *(int *)(param_1 + 4);
    uStack_24 = 0;
    *(uint **)(param_1 + 0x1e0) = &uStack_24;
    for (; iVar11 != 0; iVar11 = *(int *)(iVar11 + 8)) {
      FUN_00062a60();
      FUN_00044090();
    }
    *(undefined4 *)(param_1 + 0x1e0) = 0;
    uVar12 = 0;
    *param_4 = 0;
    *param_3 = uStack_24;
    break;
  case 4:
  case 5:
  case 6:
code_r0x00065b70:
    *param_3 = 0;
    iVar11 = param_1 + param_2 * 4;
    *param_4 = *(int *)(iVar11 + 0x110);
    if (param_5 != 0) {
      *(undefined4 *)(iVar11 + 0x110) = 0;
      uVar12 = 0;
      break;
    }
    goto code_r0x00065c08;
  case 10:
code_r0x00065990:
    *param_4 = 0;
    uVar9 = 1;
    if ((int)(uint)(*(int *)(param_1 + 0x1d8) != 0) <= -*(int *)(param_1 + 0x1dc)) {
      uVar9 = *(int *)(param_1 + 0x1d4) >> 0x1f;
      uVar9 = (uVar9 - *(int *)(param_1 + 0x1d4)) - (uint)(uVar9 < *(uint *)(param_1 + 0x1d0)) >>
              0x1f;
    }
    uVar12 = 0;
    *param_3 = uVar9;
    break;
  case 0xc:
code_r0x000658e0:
    param_2 = 10;
  case 7:
  case 8:
  case 9:
code_r0x000658e5:
    iVar11 = *(int *)(param_1 + 0x14);
    if (iVar11 < 1) {
      uVar9 = 0;
    }
    else if (param_5 == 0) {
      iVar4 = 0;
      uVar9 = 0;
      do {
        iVar7 = *(int *)(*(int *)(param_1 + 0x10) + 4 + iVar4 * 0x10);
        if (iVar7 != 0) {
          uVar9 = uVar9 + *(int *)(**(int **)(iVar7 + 4) + 4 + (param_2 + 0x25) * 4);
        }
        iVar4 = iVar4 + 1;
      } while (iVar4 != iVar11);
    }
    else {
      iVar4 = *(int *)(param_1 + 0x10);
      uVar9 = 0;
      iVar7 = 0;
      do {
        iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);
        while (iVar5 != 0) {
          iVar7 = iVar7 + 1;
          iVar11 = param_2 * 4 + **(int **)(iVar5 + 4);
          uVar9 = uVar9 + *(int *)(iVar11 + 0x98);
          *(undefined4 *)(iVar11 + 0x98) = 0;
          iVar11 = *(int *)(param_1 + 0x14);
          if (iVar11 <= iVar7) goto code_r0x00065931;
          iVar4 = *(int *)(param_1 + 0x10);
          iVar5 = *(int *)(iVar4 + 4 + iVar7 * 0x10);
        }
        iVar7 = iVar7 + 1;
      } while (iVar7 < iVar11);
    }
code_r0x00065931:
    uVar12 = 0;
    *param_4 = 0;
    *param_3 = uVar9;
    break;
  default:
    uVar12 = 1;
  }
LAB_00065943:
  if (*(int *)(param_1 + 0xc) != 0) {
    (*DAT_001bb444)(*(int *)(param_1 + 0xc));
  }
LAB_00065957:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_00153870();
  }
  return uVar12;
code_r0x00065ba0:
  iVar11 = 0;
  for (puVar10 = *(undefined4 **)(param_1 + 300); puVar10 != (undefined4 *)0x0;
      puVar10 = (undefined4 *)*puVar10) {
    iVar11 = iVar11 + 1;
  }
  iVar4 = 0;
  for (puVar10 = *(undefined4 **)(param_1 + 0x130); puVar10 != (undefined4 *)0x0;
      puVar10 = (undefined4 *)*puVar10) {
    iVar4 = iVar4 + 1;
  }
  if (param_4 != (int *)0x0) {
    *param_4 = *(int *)(param_1 + 0x11c) - iVar11;
  }
  *param_3 = (*(int *)(param_1 + 0x11c) - iVar11) - iVar4;
  if ((param_5 == 0) ||
     (piVar2 = *(int **)(param_1 + 0x130), *(int **)(param_1 + 0x130) == (int *)0x0)) {
code_r0x00065c08:
    uVar12 = 0;
  }
  else {
    do {
      piVar8 = piVar2;
      piVar2 = (int *)*piVar8;
    } while (piVar2 != (int *)0x0);
    uVar12 = 0;
    *piVar8 = *(int *)(param_1 + 300);
    uVar3 = *(undefined4 *)(param_1 + 0x130);
    *(undefined4 *)(param_1 + 0x130) = 0;
    *(undefined4 *)(param_1 + 300) = uVar3;
  }
  goto LAB_00065943;
}

