
int vdbePmaReaderNext(PmaReader *pReadr)

{
  int iVar1;
  void *pvVar2;
  uint uVar3;
  int iVar4;
  int *piVar5;
  sqlite3_io_methods *pMerger;
  int iVar6;
  u8 *puVar7;
  PmaReader *pPVar8;
  int iVar9;
  PmaReader *pPVar10;
  uint uVar11;
  PmaReader *pPVar12;
  IncrMerger *in_a2;
  PmaReader *in_a3;
  undefined4 uVar13;
  SortSubtask *pSVar14;
  MergeEngine *pMVar15;
  IncrMerger *unaff_s0;
  int iVar16;
  uint uVar17;
  SortSubtask *unaff_s3;
  int *piVar18;
  int iVar19;
  undefined *puVar20;
  code *pcVar21;
  undefined *puVar22;
  undefined4 *unaff_s8;
  _func_int_sqlite3_file_ptr_void_ptr_int_sqlite3_int64 *p_Var23;
  code *pcVar24;
  int iStack_e0;
  int iStack_dc;
  int iStack_d4;
  IncrMerger *pIStack_d0;
  IncrMerger *pIStack_cc;
  uint uStack_c8;
  SortSubtask *pSStack_c4;
  int *piStack_c0;
  PmaReader *pPStack_bc;
  PmaReader *pPStack_b8;
  int iStack_b4;
  undefined4 *puStack_b0;
  code *pcStack_ac;
  sqlite3_file *psStack_98;
  int iStack_94;
  undefined *puStack_90;
  undefined4 uStack_88;
  int iStack_84;
  IncrMerger *pIStack_80;
  PmaReader *pPStack_7c;
  undefined *puStack_78;
  SortSubtask *pSStack_74;
  void *pRet;
  u64 nRec;
  PmaReader *pPStack_1c;
  
  puVar22 = PTR___stack_chk_guard_000f5568;
  nRec._4_4_ = (PmaReader *)0x0;
  nRec._0_4_ = 0;
  pPStack_1c = *(PmaReader **)PTR___stack_chk_guard_000f5568;
  if (*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof) {
LAB_00058f90:
    pPVar10 = (PmaReader *)&nRec;
    pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);
    if (pvVar2 == (void *)0x0) {
      puVar7 = pReadr->aMap;
      pReadr->nKey = (int)nRec._4_4_;
      if (puVar7 == (u8 *)0x0) {
        in_a2 = (IncrMerger *)&pReadr->aKey;
        pPVar10 = nRec._4_4_;
        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);
      }
      else {
        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);
        iVar1 = *(int *)&pReadr->iReadOff;
        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);
        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;
        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);
        pReadr->aKey = puVar7 + (int)in_a2;
        *(PmaReader **)&pReadr->iReadOff = pPVar10;
      }
    }
    goto LAB_0005907c;
  }
  if (*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff) {
    if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;
    unaff_s0 = pReadr->pIncr;
  }
  else {
    unaff_s0 = pReadr->pIncr;
  }
  pvVar2 = (void *)0x0;
  pPVar10 = pPStack_1c;
  if (unaff_s0 != (IncrMerger *)0x0) {
    if (unaff_s0->bUseThread == 0) {
      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);
      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;
      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;
      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;
      iVar1 = (int)unaff_s0->aFile[1].iEof;
      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;
      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;
      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;
      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;
      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;
      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;
      unaff_s0->bEof = 1;
      if (pvVar2 != (void *)0x0) goto LAB_00059064;
LAB_0005905c:
      pvVar2 = (void *)0x0;
    }
    else {
      unaff_s3 = unaff_s0->pTask;
      if (unaff_s3->pThread != (SQLiteThread *)0x0) {
        pPVar10 = (PmaReader *)&pRet;
        pRet = (void *)0x1;
        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);
        unaff_s3->bDone = 0;
        unaff_s3->pThread = (SQLiteThread *)0x0;
        pvVar2 = pRet;
        if (pRet != (void *)0x0) goto LAB_00059064;
      }
      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);
      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;
      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;
      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;
      iVar4 = (int)unaff_s0->aFile[1].iEof;
      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;
      iVar9 = *(int *)&unaff_s0->iStartOff;
      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;
      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;
      *(int *)&unaff_s0->aFile[0].iEof = iVar1;
      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;
      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;
      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;
      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;
      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {
        pvVar2 = (void *)0x0;
        unaff_s0->bEof = 1;
      }
      else {
        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);
        in_a2 = unaff_s0;
        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);
LAB_00058f48:
        if (pvVar2 == (void *)0x0) {
          if (unaff_s0->bEof == 0) {
            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;
            in_a2 = (IncrMerger *)unaff_s0->aFile;
            pPVar10 = pReadr;
            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);
            if (pvVar2 != (void *)0x0) goto LAB_0005907c;
            goto LAB_00058f90;
          }
          goto LAB_0005905c;
        }
      }
    }
  }
LAB_00059064:
  vdbePmaReaderClear(pReadr);
LAB_0005907c:
  if (pPStack_1c == *(PmaReader **)puVar22) {
    return (int)pvVar2;
  }
  pPVar8 = pPStack_1c;
  puVar20 = PTR___stack_chk_fail_000f5540;
  (*(code *)PTR___stack_chk_fail_000f5540)();
  puStack_90 = puVar20 + 0xa41c8;
  puStack_78 = puVar22;
  piVar18 = *(int **)(puVar20 + 0x9c490);
  uVar17 = *(uint *)(*(int *)&pPVar8->iEof + 4);
  iStack_84 = *piVar18;
  iVar1 = *(int *)((int)&pPVar8->iReadOff + 4);
  pPVar12 = pPVar10;
  pIStack_80 = unaff_s0;
  pPStack_7c = pReadr;
  pSStack_74 = unaff_s3;
  uVar3 = vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38));
  puVar22 = puStack_90;
  if (uVar3 == 0) {
    uVar11 = uVar17 & 0xfffe;
    uVar3 = uVar17 | 1;
    iVar4 = (int)pPVar8->iEof;
    uStack_88 = 0;
    uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;
    unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);
    pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);
    if ((int)uVar17 < 1) {
      iVar9 = *(int *)&pPVar8->iEof;
    }
    else {
      unaff_s8 = &uStack_88;
      unaff_s3 = (SortSubtask *)0xb6db6db7;
      uVar3 = uVar17;
      do {
        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {
          if (((IncrMerger *)pReadr)->bUseThread != 0) {
            iStack_94 = ((IncrMerger *)pReadr)->bEof;
            in_a3 = (PmaReader *)unaff_s0->bEof;
            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;
            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);
            puVar22 = puStack_90;
            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {
              iVar4 = (int)pPVar8->iEof;
              if (unaff_s0->bUseThread != 0) {
                uStack_88 = 0;
              }
              break;
            }
            iVar4 = (int)pPVar8->iEof;
          }
          iVar9 = *(int *)&pPVar8->iEof;
          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);
          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);
          uStack_88 = 0;
          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);
          uVar3 = uVar17;
          if (uVar17 == 0) goto LAB_000592a8;
        }
        iVar9 = *(int *)&pPVar8->iEof;
        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);
        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);
        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);
        uVar3 = uVar17;
      } while (uVar17 != 0);
    }
LAB_000592a8:
    pPVar12 = *(PmaReader **)(iVar1 + 0xc);
    *(sqlite3_io_methods **)&pPVar10->iReadOff =
         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);
    uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);
  }
  if (iStack_84 == *piVar18) {
    return uVar3;
  }
  pcVar21 = *(code **)(puVar22 + -0x7d60);
  pcVar24 = vdbeMergeEngineLevel0;
  iVar4 = iStack_84;
  (*pcVar21)();
  piVar5 = *(int **)(pcVar21 + 0x9c248);
  pMVar15 = in_a2->pMerger;
  pSVar14 = in_a2->pTask;
  iStack_d4 = *piVar5;
  pIStack_d0 = unaff_s0;
  pIStack_cc = (IncrMerger *)pReadr;
  uStack_c8 = uVar17;
  pSStack_c4 = unaff_s3;
  piStack_c0 = piVar18;
  pPStack_bc = pPVar10;
  pPStack_b8 = pPVar8;
  iStack_b4 = iVar1;
  puStack_b0 = unaff_s8;
  pcStack_ac = pcVar24;
  pMerger = (sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12);
  *(sqlite3_io_methods **)&in_a3->iReadOff = pMerger;
  if (pMerger == (sqlite3_io_methods *)0x0) {
    iVar1 = 7;
  }
  else {
    iVar1 = 0;
    if ((int)pPVar12 < 1) goto LAB_00059470;
    iVar19 = *(int *)(pcVar21 + 0x9bfcc);
    iVar16 = 0;
    pPVar10 = (PmaReader *)0x0;
    iVar9 = *(int *)(pcVar21 + 0x9bfcc);
    iVar6 = *(int *)(pcVar21 + 0x9bfe0);
    do {
      p_Var23 = pMerger->xWrite + iVar16;
      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);
      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);
      if (iVar1 != 0) {
LAB_00059430:
        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);
        pSVar14 = *(SortSubtask **)(p_Var23 + 8);
        break;
      }
      iStack_dc = 0;
      iStack_e0 = 0;
      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);
      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;
      *(uint *)(p_Var23 + 0xc) = uVar3;
      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;
      if (iVar1 != 0) goto LAB_00059430;
      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);
      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);
      pSVar14 = *(SortSubtask **)(p_Var23 + 8);
      if (pPVar10 == pPVar12) goto LAB_00059548;
      iVar16 = iVar16 + 0x38;
    } while (iVar1 == 0);
  }
  do {
    vdbeMergeEngineFree((MergeEngine *)pMerger);
    *(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;
LAB_00059470:
    do {
      iVar4 = *piVar5;
      in_a2->pMerger = pMVar15;
      in_a2->pTask = pSVar14;
      if (iStack_d4 == iVar4) {
        return iVar1;
      }
      iVar1 = (**(code **)(pcVar21 + 0x9c220))();
LAB_00059548:
    } while (iVar1 == 0);
  } while( true );
}



uint FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  uint uVar8;
  uint *puVar9;
  uint uVar10;
  uint *puVar11;
  uint *unaff_s0;
  int iVar12;
  int *unaff_s3;
  int *piVar13;
  int iVar14;
  uint uVar15;
  undefined *puVar16;
  code *pcVar17;
  undefined *puVar18;
  undefined4 *unaff_s8;
  code *pcVar19;
  int iStack_e0;
  int iStack_dc;
  int iStack_d4;
  uint *puStack_d0;
  uint *puStack_cc;
  uint uStack_c8;
  int *piStack_c4;
  int *piStack_c0;
  uint *puStack_bc;
  uint *puStack_b8;
  uint uStack_b4;
  undefined4 *puStack_b0;
  code *pcStack_ac;
  uint uStack_98;
  uint uStack_94;
  undefined *puStack_90;
  undefined4 uStack_88;
  int iStack_84;
  uint *puStack_80;
  uint *puStack_7c;
  undefined *puStack_78;
  int *piStack_74;
  uint local_2c [2];
  uint *local_24;
  uint *local_1c;
  
  puVar18 = PTR___stack_chk_guard_000f5568;
  local_24 = (uint *)0x0;
  local_2c[1] = 0;
  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;
  if ((int)*param_1 < (int)param_1[2]) {
LAB_00058f90:
    puVar9 = local_2c + 1;
    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);
    if (uVar1 == 0) {
      param_1[5] = (uint)local_24;
      if (param_1[0xb] == 0) {
        param_3 = param_1 + 8;
        puVar9 = local_24;
        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);
      }
      else {
        param_3 = (uint *)param_1[1];
        param_4 = (uint *)((int)local_24 + (int)param_3);
        param_1[1] = (uint)param_4;
        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);
        param_1[8] = param_1[0xb] + (int)param_3;
        *param_1 = (uint)puVar9;
      }
    }
    goto LAB_0005907c;
  }
  if (param_1[2] == *param_1) {
    if (param_1[1] < param_1[3]) goto LAB_00058f90;
    unaff_s0 = (uint *)param_1[0xc];
  }
  else {
    unaff_s0 = (uint *)param_1[0xc];
  }
  uVar1 = 0;
  puVar9 = local_1c;
  if (unaff_s0 != (uint *)0x0) {
    if (unaff_s0[6] == 0) {
      uVar1 = FUN_00058b04(unaff_s0);
      param_4 = (uint *)unaff_s0[0xc];
      param_3 = (uint *)unaff_s0[0xd];
      puVar9 = (uint *)unaff_s0[2];
      unaff_s0[8] = (uint)param_4;
      unaff_s0[9] = (uint)param_3;
      unaff_s0[10] = unaff_s0[0xe];
      unaff_s0[0xb] = unaff_s0[0xf];
      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;
      unaff_s0[5] = 1;
      if (uVar1 != 0) goto LAB_00059064;
LAB_0005905c:
      uVar1 = 0;
    }
    else {
      unaff_s3 = (int *)*unaff_s0;
      if (*unaff_s3 != 0) {
        puVar9 = local_2c;
        local_2c[0] = 1;
        FUN_0003fa58();
        unaff_s3[1] = 0;
        *unaff_s3 = 0;
        uVar1 = local_2c[0];
        if (local_2c[0] != 0) goto LAB_00059064;
      }
      param_4 = (uint *)unaff_s0[0xb];
      param_3 = (uint *)unaff_s0[10];
      puVar9 = (uint *)unaff_s0[8];
      uVar1 = unaff_s0[0xe];
      uVar6 = unaff_s0[0xf];
      unaff_s0[8] = unaff_s0[0xc];
      unaff_s0[9] = unaff_s0[0xd];
      unaff_s0[10] = uVar1;
      unaff_s0[0xb] = uVar6;
      unaff_s0[0xc] = (uint)puVar9;
      unaff_s0[0xf] = (uint)param_4;
      unaff_s0[0xe] = (uint)param_3;
      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {
        uVar1 = 0;
        unaff_s0[5] = 1;
      }
      else {
        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);
        param_3 = unaff_s0;
        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);
LAB_00058f48:
        if (uVar1 == 0) {
          if (unaff_s0[5] == 0) {
            param_4 = unaff_s0 + 10;
            param_3 = unaff_s0 + 8;
            puVar9 = param_1;
            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);
            if (uVar1 != 0) goto LAB_0005907c;
            goto LAB_00058f90;
          }
          goto LAB_0005905c;
        }
      }
    }
  }
LAB_00059064:
  FUN_0003fbf0(param_1);
LAB_0005907c:
  if (local_1c == *(uint **)puVar18) {
    return uVar1;
  }
  puVar7 = local_1c;
  puVar16 = PTR___stack_chk_fail_000f5540;
  (*(code *)PTR___stack_chk_fail_000f5540)();
  puStack_90 = puVar16 + 0xa41c8;
  puStack_78 = puVar18;
  piVar13 = *(int **)(puVar16 + 0x9c490);
  uVar6 = *(uint *)(puVar7[2] + 4);
  iStack_84 = *piVar13;
  uVar15 = puVar7[1];
  puVar11 = puVar9;
  puStack_80 = unaff_s0;
  puStack_7c = param_1;
  piStack_74 = unaff_s3;
  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);
  puVar18 = puStack_90;
  if (uVar1 == 0) {
    uVar10 = uVar6 & 0xfffe;
    uVar1 = uVar6 | 1;
    uVar8 = puVar7[3];
    uStack_88 = 0;
    uVar6 = (int)(uVar6 + *puVar7) / 2;
    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);
    param_1 = (uint *)(uVar8 + uVar1 * 0x38);
    if ((int)uVar6 < 1) {
      uVar1 = puVar7[2];
    }
    else {
      unaff_s8 = &uStack_88;
      unaff_s3 = (int *)0xb6db6db7;
      uVar10 = uVar6;
      do {
        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {
          if (param_1[6] != 0) {
            uStack_94 = param_1[5];
            param_4 = (uint *)unaff_s0[5];
            uStack_98 = param_1[8];
            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);
            puVar18 = puStack_90;
            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {
              uVar8 = puVar7[3];
              if (unaff_s0[6] != 0) {
                uStack_88 = 0;
              }
              break;
            }
            uVar8 = puVar7[3];
          }
          uVar1 = puVar7[2];
          param_3 = (uint *)(uVar1 + uVar10 * 4);
          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;
          uStack_88 = 0;
          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);
          uVar10 = uVar6;
          if (uVar6 == 0) goto LAB_000592a8;
        }
        uVar1 = puVar7[2];
        param_3 = (uint *)(uVar1 + uVar10 * 4);
        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;
        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);
        uVar10 = uVar6;
      } while (uVar6 != 0);
    }
LAB_000592a8:
    puVar11 = *(uint **)(uVar15 + 0xc);
    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);
    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);
  }
  if (iStack_84 == *piVar13) {
    return uVar1;
  }
  pcVar17 = *(code **)(puVar18 + -0x7d60);
  pcVar19 = FUN_00059320;
  iVar2 = iStack_84;
  (*pcVar17)();
  piVar3 = *(int **)(pcVar17 + 0x9c248);
  uVar10 = param_3[1];
  uVar8 = *param_3;
  iStack_d4 = *piVar3;
  puStack_d0 = unaff_s0;
  puStack_cc = param_1;
  uStack_c8 = uVar6;
  piStack_c4 = unaff_s3;
  piStack_c0 = piVar13;
  puStack_bc = puVar9;
  puStack_b8 = puVar7;
  uStack_b4 = uVar15;
  puStack_b0 = unaff_s8;
  pcStack_ac = pcVar19;
  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);
  *param_4 = uVar1;
  if (uVar1 == 0) {
    uVar6 = 7;
  }
  else {
    uVar6 = 0;
    if ((int)puVar11 < 1) goto LAB_00059470;
    iVar14 = *(int *)(pcVar17 + 0x9bfcc);
    iVar12 = 0;
    puVar9 = (uint *)0x0;
    iVar4 = *(int *)(pcVar17 + 0x9bfcc);
    iVar5 = *(int *)(pcVar17 + 0x9bfe0);
    do {
      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);
      puVar9 = (uint *)((int)puVar9 + 1);
      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);
      if (uVar6 != 0) {
LAB_00059430:
        uVar10 = piVar13[3];
        uVar8 = piVar13[2];
        break;
      }
      iStack_dc = 0;
      iStack_e0 = 0;
      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);
      uVar15 = piVar13[1] + iStack_dc;
      piVar13[3] = uVar15;
      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;
      if (uVar6 != 0) goto LAB_00059430;
      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);
      uVar10 = piVar13[3];
      uVar8 = piVar13[2];
      if (puVar9 == puVar11) goto LAB_00059548;
      iVar12 = iVar12 + 0x38;
    } while (uVar6 == 0);
  }
  do {
    FUN_0003fc8c(uVar1);
    *param_4 = 0;
LAB_00059470:
    do {
      iVar2 = *piVar3;
      param_3[1] = uVar10;
      *param_3 = uVar8;
      if (iStack_d4 == iVar2) {
        return uVar6;
      }
      uVar6 = (**(code **)(pcVar17 + 0x9c220))();
LAB_00059548:
    } while (uVar6 == 0);
  } while( true );
}


lui gp,0xa
addiu gp,gp,0x4478
addu gp,gp,t9
addiu sp,sp,-0x58
or v1,zero,zero
or v0,zero,zero
sw s2,0x4c(sp)
sw v1,0x34(sp)
sw v0,0x30(sp)
lw s2,-0x7d38(gp)
lw v1,0x8(a0)
lw v0,0x0(a0)
sw s1,0x48(sp)
or s1,a0,zero
sw gp,0x18(sp)
sw ra,0x54(sp)
slt a0,v0,v1
sw s3,0x50(sp)
sw s0,0x44(sp)
lw a1,0x0(s2)
sw a1,0x3c(sp)
bne a0,zero,0x00058f90
_lw t9,-0x7fb4(gp)
beq v1,v0,0x00058fe8
_nop
lw s0,0x30(s1)
beq s0,zero,0x00059060
_or v0,zero,zero
lw v0,0x18(s0)
beq v0,zero,0x00059010
_lw t9,-0x7fa0(gp)
lw s3,0x0(s0)
lw a0,0x0(s3)
beq a0,zero,0x00058edc
_lw t9,-0x7fb8(gp)
li v0,0x1
addiu a1,sp,0x2c
addiu t9,t9,-0x5a8
bal 0x0003fa58
_sw v0,0x2c(sp)
lw v0,0x2c(sp)
lw gp,0x18(sp)
sw zero,0x4(s3)
bne v0,zero,0x00059060
_sw zero,0x0(s3)
lw a3,0x2c(s0)
lw a2,0x28(s0)
lw a1,0x20(s0)
lw t1,0x30(s0)
lw v0,0x38(s0)
lw v1,0x3c(s0)
lw t0,0x34(s0)
lw a0,0x8(s0)
sw t1,0x20(s0)
sw t0,0x24(s0)
sw v0,0x28(s0)
sw v1,0x2c(s0)
sw a1,0x30(s0)
sw a3,0x3c(s0)
bne v0,a0,0x00058f28
_sw a2,0x38(s0)
lw v0,0xc(s0)
beq v1,v0,0x000590a4
_li v1,0x1
lw a1,-0x7fa0(gp)
or a2,s0,zero
lw t9,-0x7fb4(gp)
lw a0,0x0(s0)
addiu t9,t9,0x5930
jalr t9
_addiu a1,a1,-0x6aa8
lw gp,0x18(sp)
bne v0,zero,0x00059064
_lw t9,-0x7fb8(gp)
lw v0,0x14(s0)
bne v0,zero,0x0005905c
_lw t9,-0x7fb4(gp)
addiu a3,s0,0x28
lw v1,0xc(s0)
addiu a2,s0,0x20
lw v0,0x8(s0)
or a1,s1,zero
lw a0,0x0(s0)
addiu t9,t9,0x6530
sw v1,0x14(sp)
jalr t9
_sw v0,0x10(sp)
bne v0,zero,0x0005907c
_lw gp,0x18(sp)
lw t9,-0x7fb4(gp)
addiu a1,sp,0x30
addiu t9,t9,0x61b4
jalr t9
_or a0,s1,zero
bne v0,zero,0x0005907c
_lw gp,0x18(sp)
lw a1,0x34(sp)
lw v1,0x2c(s1)
beq v1,zero,0x000590b0
_sw a1,0x14(s1)
lw a2,0x4(s1)
sra a0,a1,0x1f
lw t0,0x0(s1)
addu a3,a1,a2
addu a0,a0,t0
sltu a1,a3,a1
sw a3,0x4(s1)
addu v1,v1,a2
addu a1,a1,a0
sw v1,0x20(s1)
b 0x0005907c
_sw a1,0x0(s1)
lw v0,0xc(s1)
lw v1,0x4(s1)
sltu v0,v1,v0
bne v0,zero,0x00058f90
_lw t9,-0x7fb4(gp)
lw s0,0x30(s1)
bne s0,zero,0x00058e98
_or v0,zero,zero
b 0x00059064
_lw t9,-0x7fb8(gp)
addiu t9,t9,-0x74fc
bal 0x00058b04
_or a0,s0,zero
lw a3,0x30(s0)
lw a2,0x34(s0)
lw v1,0x38(s0)
lw a0,0x3c(s0)
lw a1,0x8(s0)
lw gp,0x18(sp)
sw a3,0x20(s0)
sw a2,0x24(s0)
sw v1,0x28(s0)
bne v1,a1,0x00058f48
_sw a0,0x2c(s0)
lw v1,0xc(s0)
bne a0,v1,0x00058f48
_li v1,0x1
bne v0,zero,0x00059060
_sw v1,0x14(s0)
or v0,zero,zero
lw t9,-0x7fb8(gp)
or a0,s1,zero
addiu t9,t9,-0x410
bal 0x0003fbf0
_sw v0,0x24(sp)
lw gp,0x18(sp)
lw v0,0x24(sp)
lw a0,0x3c(sp)
lw v1,0x0(s2)
bne a0,v1,0x000590cc
_lw ra,0x54(sp)
lw s3,0x50(sp)
lw s2,0x4c(sp)
lw s1,0x48(sp)
lw s0,0x44(sp)
jr ra
_addiu sp,sp,0x58
or v0,zero,zero
b 0x00059060
_sw v1,0x14(s0)
lw t9,-0x7fb4(gp)
addiu a2,s1,0x20
addiu t9,t9,0x5ea0
jalr t9
_or a0,s1,zero
b 0x0005907c
_lw gp,0x18(sp)
lw t9,-0x7d60(gp)
jalr t9
_nop
(translation_unit "uint FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}\n\n" (function_definition "uint FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}" type_identifier (function_declarator "FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)" identifier (parameter_list "(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined4 *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int iStack_dc;" primitive_type identifier ;) (declaration "int iStack_d4;" primitive_type identifier ;) (declaration "uint *puStack_d0;" type_identifier (pointer_declarator "*puStack_d0" * identifier) ;) (declaration "uint *puStack_cc;" type_identifier (pointer_declarator "*puStack_cc" * identifier) ;) (declaration "uint uStack_c8;" type_identifier identifier ;) (declaration "int *piStack_c4;" primitive_type (pointer_declarator "*piStack_c4" * identifier) ;) (declaration "int *piStack_c0;" primitive_type (pointer_declarator "*piStack_c0" * identifier) ;) (declaration "uint *puStack_bc;" type_identifier (pointer_declarator "*puStack_bc" * identifier) ;) (declaration "uint *puStack_b8;" type_identifier (pointer_declarator "*puStack_b8" * identifier) ;) (declaration "uint uStack_b4;" type_identifier identifier ;) (declaration "undefined4 *puStack_b0;" type_identifier (pointer_declarator "*puStack_b0" * identifier) ;) (declaration "code *pcStack_ac;" type_identifier (pointer_declarator "*pcStack_ac" * identifier) ;) (declaration "uint uStack_98;" type_identifier identifier ;) (declaration "uint uStack_94;" type_identifier identifier ;) (declaration "undefined *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined4 uStack_88;" type_identifier identifier ;) (declaration "int iStack_84;" primitive_type identifier ;) (declaration "uint *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "uint *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "undefined *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "int *piStack_74;" primitive_type (pointer_declarator "*piStack_74" * identifier) ;) (declaration "uint local_2c [2];" type_identifier (array_declarator "local_2c [2]" identifier [ number_literal ]) ;) (declaration "uint *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "uint *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar18 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar18 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_24 = (uint *)0x0;" (assignment_expression "local_24 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c[1] = 0;" (assignment_expression "local_2c[1] = 0" (subscript_expression "local_2c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_1c = *(uint **)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(uint **)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_000f5568" * (cast_expression "(uint **)PTR___stack_chk_guard_000f5568" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }" if (parenthesized_expression "((int)*param_1 < (int)param_1[2])" ( (binary_expression "(int)*param_1 < (int)param_1[2]" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) < (cast_expression "(int)param_1[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }" { (labeled_statement "LAB_00058f90:\n    puVar9 = local_2c + 1;" statement_identifier : (expression_statement "puVar9 = local_2c + 1;" (assignment_expression "puVar9 = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;)) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x61b4)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x61b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x61b4)" ( (binary_expression "PTR_LAB_000f52ec + 0x61b4" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }" { (expression_statement "param_1[5] = (uint)local_24;" (assignment_expression "param_1[5] = (uint)local_24" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }" { (expression_statement "param_3 = param_1 + 8;" (assignment_expression "param_3 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "puVar9 = local_24;" (assignment_expression "puVar9 = local_24" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5ea0)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5ea0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x5ea0)" ( (binary_expression "PTR_LAB_000f52ec + 0x5ea0" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) }) (else_clause "else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" else (compound_statement "{\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" { (expression_statement "param_3 = (uint *)param_1[1];" (assignment_expression "param_3 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "param_4 = (uint *)((int)local_24 + (int)param_3);" (assignment_expression "param_4 = (uint *)((int)local_24 + (int)param_3)" identifier = (cast_expression "(uint *)((int)local_24 + (int)param_3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + (int)param_3)" ( (binary_expression "(int)local_24 + (int)param_3" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "param_1[1] = (uint)param_4;" (assignment_expression "param_1[1] = (uint)param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);" (assignment_expression "puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" identifier = (cast_expression "(uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" ( (binary_expression "(uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1" (binary_expression "(uint)(param_4 < local_24) + ((int)local_24 >> 0x1f)" (call_expression "(uint)(param_4 < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < local_24)" ( (binary_expression "param_4 < local_24" identifier < identifier) ))) + (parenthesized_expression "((int)local_24 >> 0x1f)" ( (binary_expression "(int)local_24 >> 0x1f" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (pointer_expression "*param_1" * identifier)) )))) ;) (expression_statement "param_1[8] = param_1[0xb] + (int)param_3;" (assignment_expression "param_1[8] = param_1[0xb] + (int)param_3" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + (int)param_3" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*param_1 = (uint)puVar9;" (assignment_expression "*param_1 = (uint)puVar9" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) })) (goto_statement "goto LAB_0005907c;" goto statement_identifier ;) })) (if_statement "if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }" if (parenthesized_expression "(param_1[2] == *param_1)" ( (binary_expression "param_1[2] == *param_1" (subscript_expression "param_1[2]" identifier [ number_literal ]) == (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }" { (if_statement "if (param_1[1] < param_1[3]) goto LAB_00058f90;" if (parenthesized_expression "(param_1[1] < param_1[3])" ( (binary_expression "param_1[1] < param_1[3]" (subscript_expression "param_1[1]" identifier [ number_literal ]) < (subscript_expression "param_1[3]" identifier [ number_literal ])) )) (goto_statement "goto LAB_00058f90;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (uint *)param_1[0xc];" (assignment_expression "unaff_s0 = (uint *)param_1[0xc]" identifier = (cast_expression "(uint *)param_1[0xc]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }" else (compound_statement "{\n    unaff_s0 = (uint *)param_1[0xc];\n  }" { (expression_statement "unaff_s0 = (uint *)param_1[0xc];" (assignment_expression "unaff_s0 = (uint *)param_1[0xc]" identifier = (cast_expression "(uint *)param_1[0xc]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) }))) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = local_1c;" (assignment_expression "puVar9 = local_1c" identifier = identifier) ;) (if_statement "if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(unaff_s0 != (uint *)0x0)" ( (binary_expression "unaff_s0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" { (if_statement "if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" if (parenthesized_expression "(unaff_s0[6] == 0)" ( (binary_expression "unaff_s0[6] == 0" (subscript_expression "unaff_s0[6]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }" { (expression_statement "uVar1 = FUN_00058b04(unaff_s0);" (assignment_expression "uVar1 = FUN_00058b04(unaff_s0)" identifier = (call_expression "FUN_00058b04(unaff_s0)" identifier (argument_list "(unaff_s0)" ( identifier )))) ;) (expression_statement "param_4 = (uint *)unaff_s0[0xc];" (assignment_expression "param_4 = (uint *)unaff_s0[0xc]" identifier = (cast_expression "(uint *)unaff_s0[0xc]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xc]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (uint *)unaff_s0[0xd];" (assignment_expression "param_3 = (uint *)unaff_s0[0xd]" identifier = (cast_expression "(uint *)unaff_s0[0xd]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xd]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (uint *)unaff_s0[2];" (assignment_expression "puVar9 = (uint *)unaff_s0[2]" identifier = (cast_expression "(uint *)unaff_s0[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[2]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s0[8] = (uint)param_4;" (assignment_expression "unaff_s0[8] = (uint)param_4" (subscript_expression "unaff_s0[8]" identifier [ number_literal ]) = (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[9] = (uint)param_3;" (assignment_expression "unaff_s0[9] = (uint)param_3" (subscript_expression "unaff_s0[9]" identifier [ number_literal ]) = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[10] = unaff_s0[0xe];" (assignment_expression "unaff_s0[10] = unaff_s0[0xe]" (subscript_expression "unaff_s0[10]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[0xb] = unaff_s0[0xf];" (assignment_expression "unaff_s0[0xb] = unaff_s0[0xf]" (subscript_expression "unaff_s0[0xb]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ])) ;) (if_statement "if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;" if (parenthesized_expression "(((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3]))" ( (binary_expression "((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])" (parenthesized_expression "((uint *)unaff_s0[0xe] != puVar9)" ( (binary_expression "(uint *)unaff_s0[0xe] != puVar9" (cast_expression "(uint *)unaff_s0[0xe]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ])) != identifier) )) || (parenthesized_expression "(unaff_s0[0xf] != unaff_s0[3])" ( (binary_expression "unaff_s0[0xf] != unaff_s0[3]" (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ]) != (subscript_expression "unaff_s0[3]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_00058f48;" goto statement_identifier ;)) (expression_statement "unaff_s0[5] = 1;" (assignment_expression "unaff_s0[5] = 1" (subscript_expression "unaff_s0[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (uVar1 != 0) goto LAB_00059064;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00059064;" goto statement_identifier ;)) (labeled_statement "LAB_0005905c:\n      uVar1 = 0;" statement_identifier : (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" else (compound_statement "{\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" { (expression_statement "unaff_s3 = (int *)*unaff_s0;" (assignment_expression "unaff_s3 = (int *)*unaff_s0" identifier = (cast_expression "(int *)*unaff_s0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s0" * identifier))) ;) (if_statement "if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }" if (parenthesized_expression "(*unaff_s3 != 0)" ( (binary_expression "*unaff_s3 != 0" (pointer_expression "*unaff_s3" * identifier) != number_literal) )) (compound_statement "{\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }" { (expression_statement "puVar9 = local_2c;" (assignment_expression "puVar9 = local_2c" identifier = identifier) ;) (expression_statement "local_2c[0] = 1;" (assignment_expression "local_2c[0] = 1" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0003fa58();" (call_expression "FUN_0003fa58()" identifier (argument_list "()" ( ))) ;) (expression_statement "unaff_s3[1] = 0;" (assignment_expression "unaff_s3[1] = 0" (subscript_expression "unaff_s3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*unaff_s3 = 0;" (assignment_expression "*unaff_s3 = 0" (pointer_expression "*unaff_s3" * identifier) = number_literal) ;) (expression_statement "uVar1 = local_2c[0];" (assignment_expression "uVar1 = local_2c[0]" identifier = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) (if_statement "if (local_2c[0] != 0) goto LAB_00059064;" if (parenthesized_expression "(local_2c[0] != 0)" ( (binary_expression "local_2c[0] != 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00059064;" goto statement_identifier ;)) })) (expression_statement "param_4 = (uint *)unaff_s0[0xb];" (assignment_expression "param_4 = (uint *)unaff_s0[0xb]" identifier = (cast_expression "(uint *)unaff_s0[0xb]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xb]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (uint *)unaff_s0[10];" (assignment_expression "param_3 = (uint *)unaff_s0[10]" identifier = (cast_expression "(uint *)unaff_s0[10]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[10]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (uint *)unaff_s0[8];" (assignment_expression "puVar9 = (uint *)unaff_s0[8]" identifier = (cast_expression "(uint *)unaff_s0[8]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[8]" identifier [ number_literal ]))) ;) (expression_statement "uVar1 = unaff_s0[0xe];" (assignment_expression "uVar1 = unaff_s0[0xe]" identifier = (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = unaff_s0[0xf];" (assignment_expression "uVar6 = unaff_s0[0xf]" identifier = (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[8] = unaff_s0[0xc];" (assignment_expression "unaff_s0[8] = unaff_s0[0xc]" (subscript_expression "unaff_s0[8]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xc]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[9] = unaff_s0[0xd];" (assignment_expression "unaff_s0[9] = unaff_s0[0xd]" (subscript_expression "unaff_s0[9]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xd]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[10] = uVar1;" (assignment_expression "unaff_s0[10] = uVar1" (subscript_expression "unaff_s0[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s0[0xb] = uVar6;" (assignment_expression "unaff_s0[0xb] = uVar6" (subscript_expression "unaff_s0[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s0[0xc] = (uint)puVar9;" (assignment_expression "unaff_s0[0xc] = (uint)puVar9" (subscript_expression "unaff_s0[0xc]" identifier [ number_literal ]) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[0xf] = (uint)param_4;" (assignment_expression "unaff_s0[0xf] = (uint)param_4" (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ]) = (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[0xe] = (uint)param_3;" (assignment_expression "unaff_s0[0xe] = (uint)param_3" (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ]) = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" if (parenthesized_expression "((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3]))" ( (binary_expression "(uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])" (parenthesized_expression "(uVar1 == unaff_s0[2])" ( (binary_expression "uVar1 == unaff_s0[2]" identifier == (subscript_expression "unaff_s0[2]" identifier [ number_literal ])) )) && (parenthesized_expression "(uVar6 == unaff_s0[3])" ( (binary_expression "uVar6 == unaff_s0[3]" identifier == (subscript_expression "unaff_s0[3]" identifier [ number_literal ])) ))) )) (compound_statement "{\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "unaff_s0[5] = 1;" (assignment_expression "unaff_s0[5] = 1" (subscript_expression "unaff_s0[5]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" else (compound_statement "{\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" { (expression_statement "puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);" (assignment_expression "puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8)" identifier = (cast_expression "(uint *)(PTR_FUN_000f5300 + -0x6aa8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_FUN_000f5300 + -0x6aa8)" ( (binary_expression "PTR_FUN_000f5300 + -0x6aa8" identifier + number_literal) )))) ;) (expression_statement "param_3 = unaff_s0;" (assignment_expression "param_3 = unaff_s0" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5930)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5930)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x5930)" ( (binary_expression "PTR_LAB_000f52ec + 0x5930" identifier + number_literal) )))) )) (argument_list "(*unaff_s0)" ( (pointer_expression "*unaff_s0" * identifier) )))) ;) (labeled_statement "LAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" statement_identifier : (if_statement "if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" { (if_statement "if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" if (parenthesized_expression "(unaff_s0[5] == 0)" ( (binary_expression "unaff_s0[5] == 0" (subscript_expression "unaff_s0[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" { (expression_statement "param_4 = unaff_s0 + 10;" (assignment_expression "param_4 = unaff_s0 + 10" identifier = (binary_expression "unaff_s0 + 10" identifier + number_literal)) ;) (expression_statement "param_3 = unaff_s0 + 8;" (assignment_expression "param_3 = unaff_s0 + 8" identifier = (binary_expression "unaff_s0 + 8" identifier + number_literal)) ;) (expression_statement "puVar9 = param_1;" (assignment_expression "puVar9 = param_1" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x6530)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x6530)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x6530)" ( (binary_expression "PTR_LAB_000f52ec + 0x6530" identifier + number_literal) )))) )) (argument_list "(*unaff_s0)" ( (pointer_expression "*unaff_s0" * identifier) )))) ;) (if_statement "if (uVar1 != 0) goto LAB_0005907c;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0005907c;" goto statement_identifier ;)) (goto_statement "goto LAB_00058f90;" goto statement_identifier ;) })) (goto_statement "goto LAB_0005905c;" goto statement_identifier ;) }))) }))) }))) })) (labeled_statement "LAB_00059064:\n  FUN_0003fbf0(param_1);" statement_identifier : (expression_statement "FUN_0003fbf0(param_1);" (call_expression "FUN_0003fbf0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;)) (labeled_statement "LAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }" statement_identifier : (if_statement "if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }" if (parenthesized_expression "(local_1c == *(uint **)puVar18)" ( (binary_expression "local_1c == *(uint **)puVar18" identifier == (pointer_expression "*(uint **)puVar18" * (cast_expression "(uint **)puVar18" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) }))) (expression_statement "puVar7 = local_1c;" (assignment_expression "puVar7 = local_1c" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_90 = puVar16 + 0xa41c8;" (assignment_expression "puStack_90 = puVar16 + 0xa41c8" identifier = (binary_expression "puVar16 + 0xa41c8" identifier + number_literal)) ;) (expression_statement "puStack_78 = puVar18;" (assignment_expression "puStack_78 = puVar18" identifier = identifier) ;) (expression_statement "piVar13 = *(int **)(puVar16 + 0x9c490);" (assignment_expression "piVar13 = *(int **)(puVar16 + 0x9c490)" identifier = (pointer_expression "*(int **)(puVar16 + 0x9c490)" * (cast_expression "(int **)(puVar16 + 0x9c490)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c490)" ( (binary_expression "puVar16 + 0x9c490" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(puVar7[2] + 4);" (assignment_expression "uVar6 = *(uint *)(puVar7[2] + 4)" identifier = (pointer_expression "*(uint *)(puVar7[2] + 4)" * (cast_expression "(uint *)(puVar7[2] + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[2] + 4)" ( (binary_expression "puVar7[2] + 4" (subscript_expression "puVar7[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iStack_84 = *piVar13;" (assignment_expression "iStack_84 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "uVar15 = puVar7[1];" (assignment_expression "uVar15 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11 = puVar9;" (assignment_expression "puVar11 = puVar9" identifier = identifier) ;) (expression_statement "puStack_80 = unaff_s0;" (assignment_expression "puStack_80 = unaff_s0" identifier = identifier) ;) (expression_statement "puStack_7c = param_1;" (assignment_expression "puStack_7c = param_1" identifier = identifier) ;) (expression_statement "piStack_74 = unaff_s3;" (assignment_expression "piStack_74 = unaff_s3" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);" (assignment_expression "uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38)" identifier = (call_expression "FUN_00058e28(puVar7[3] + uVar6 * 0x38)" identifier (argument_list "(puVar7[3] + uVar6 * 0x38)" ( (binary_expression "puVar7[3] + uVar6 * 0x38" (subscript_expression "puVar7[3]" identifier [ number_literal ]) + (binary_expression "uVar6 * 0x38" identifier * number_literal)) )))) ;) (expression_statement "puVar18 = puStack_90;" (assignment_expression "puVar18 = puStack_90" identifier = identifier) ;) (if_statement "if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }" { (expression_statement "uVar10 = uVar6 & 0xfffe;" (assignment_expression "uVar10 = uVar6 & 0xfffe" identifier = (binary_expression "uVar6 & 0xfffe" identifier & number_literal)) ;) (expression_statement "uVar1 = uVar6 | 1;" (assignment_expression "uVar1 = uVar6 | 1" identifier = (binary_expression "uVar6 | 1" identifier | number_literal)) ;) (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = (int)(uVar6 + *puVar7) / 2;" (assignment_expression "uVar6 = (int)(uVar6 + *puVar7) / 2" identifier = (binary_expression "(int)(uVar6 + *puVar7) / 2" (cast_expression "(int)(uVar6 + *puVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 + *puVar7)" ( (binary_expression "uVar6 + *puVar7" identifier + (pointer_expression "*puVar7" * identifier)) ))) / number_literal)) ;) (expression_statement "unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);" (assignment_expression "unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + uVar10 * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar10 * 0x38)" ( (binary_expression "uVar8 + uVar10 * 0x38" identifier + (binary_expression "uVar10 * 0x38" identifier * number_literal)) )))) ;) (expression_statement "param_1 = (uint *)(uVar8 + uVar1 * 0x38);" (assignment_expression "param_1 = (uint *)(uVar8 + uVar1 * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + uVar1 * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar1 * 0x38)" ( (binary_expression "uVar8 + uVar1 * 0x38" identifier + (binary_expression "uVar1 * 0x38" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" if (parenthesized_expression "((int)uVar6 < 1)" ( (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar1 = puVar7[2];\n    }" { (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" else (compound_statement "{\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" { (expression_statement "unaff_s8 = &uStack_88;" (assignment_expression "unaff_s8 = &uStack_88" identifier = (pointer_expression "&uStack_88" & identifier)) ;) (expression_statement "unaff_s3 = (int *)0xb6db6db7;" (assignment_expression "unaff_s3 = (int *)0xb6db6db7" identifier = (cast_expression "(int *)0xb6db6db7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (do_statement "do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);" do (compound_statement "{\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      }" { (while_statement "while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }" while (parenthesized_expression "(uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0)" ( (comma_expression "uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0" (assignment_expression "uVar6 = (int)uVar10 >> 1" identifier = (binary_expression "(int)uVar10 >> 1" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) , (binary_expression "unaff_s0[6] != 0" (subscript_expression "unaff_s0[6]" identifier [ number_literal ]) != number_literal)) )) (compound_statement "{\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }" { (if_statement "if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }" if (parenthesized_expression "(param_1[6] != 0)" ( (binary_expression "param_1[6] != 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }" { (expression_statement "uStack_94 = param_1[5];" (assignment_expression "uStack_94 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "param_4 = (uint *)unaff_s0[5];" (assignment_expression "param_4 = (uint *)unaff_s0[5]" identifier = (cast_expression "(uint *)unaff_s0[5]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[5]" identifier [ number_literal ]))) ;) (expression_statement "uStack_98 = param_1[8];" (assignment_expression "uStack_98 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);" (assignment_expression "iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8])" identifier = (call_expression "(**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8])" (parenthesized_expression "(**(code **)(uVar15 + 0x20))" ( (pointer_expression "**(code **)(uVar15 + 0x20)" * (pointer_expression "*(code **)(uVar15 + 0x20)" * (cast_expression "(code **)(uVar15 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar15 + 0x20)" ( (binary_expression "uVar15 + 0x20" identifier + number_literal) ))))) )) (argument_list "(uVar15,unaff_s8,unaff_s0[8])" ( identifier , identifier , (subscript_expression "unaff_s0[8]" identifier [ number_literal ]) )))) ;) (expression_statement "puVar18 = puStack_90;" (assignment_expression "puVar18 = puStack_90" identifier = identifier) ;) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" if (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0))))" ( (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "((iVar2 != 0 || (param_1 <= unaff_s0)))" ( (parenthesized_expression "(iVar2 != 0 || (param_1 <= unaff_s0))" ( (binary_expression "iVar2 != 0 || (param_1 <= unaff_s0)" (binary_expression "iVar2 != 0" identifier != number_literal) || (parenthesized_expression "(param_1 <= unaff_s0)" ( (binary_expression "param_1 <= unaff_s0" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" { (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }" if (parenthesized_expression "(unaff_s0[6] != 0)" ( (binary_expression "unaff_s0[6] != 0" (subscript_expression "unaff_s0[6]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                uStack_88 = 0;\n              }" { (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) })) (break_statement "break;" break ;) })) (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) })) (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "param_3 = (uint *)(uVar1 + uVar10 * 4);" (assignment_expression "param_3 = (uint *)(uVar1 + uVar10 * 4)" identifier = (cast_expression "(uint *)(uVar1 + uVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar10 * 4)" ( (binary_expression "uVar1 + uVar10 * 4" identifier + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "*param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;" (assignment_expression "*param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249" (pointer_expression "*param_3" * identifier) = (binary_expression "((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249" (parenthesized_expression "((int)((int)unaff_s0 - uVar8) >> 3)" ( (binary_expression "(int)((int)unaff_s0 - uVar8) >> 3" (cast_expression "(int)((int)unaff_s0 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s0 - uVar8)" ( (binary_expression "(int)unaff_s0 - uVar8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) >> number_literal) )) * number_literal)) ;) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) (expression_statement "param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);" (assignment_expression "param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (binary_expression "uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" identifier + (binary_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4)" * (cast_expression "(int *)(uVar1 + (uVar10 ^ 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (uVar10 ^ 1) * 4)" ( (binary_expression "uVar1 + (uVar10 ^ 1) * 4" identifier + (binary_expression "(uVar10 ^ 1) * 4" (parenthesized_expression "(uVar10 ^ 1)" ( (binary_expression "uVar10 ^ 1" identifier ^ number_literal) )) * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (if_statement "if (uVar6 == 0) goto LAB_000592a8;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000592a8;" goto statement_identifier ;)) })) (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "param_3 = (uint *)(uVar1 + uVar10 * 4);" (assignment_expression "param_3 = (uint *)(uVar1 + uVar10 * 4)" identifier = (cast_expression "(uint *)(uVar1 + uVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar10 * 4)" ( (binary_expression "uVar1 + uVar10 * 4" identifier + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "*param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;" (assignment_expression "*param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249" (pointer_expression "*param_3" * identifier) = (binary_expression "((int)((int)param_1 - uVar8) >> 3) * -0x49249249" (parenthesized_expression "((int)((int)param_1 - uVar8) >> 3)" ( (binary_expression "(int)((int)param_1 - uVar8) >> 3" (cast_expression "(int)((int)param_1 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)param_1 - uVar8)" ( (binary_expression "(int)param_1 - uVar8" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) >> number_literal) )) * number_literal)) ;) (expression_statement "unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);" (assignment_expression "unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (binary_expression "uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" identifier + (binary_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4)" * (cast_expression "(int *)(uVar1 + (uVar10 ^ 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (uVar10 ^ 1) * 4)" ( (binary_expression "uVar1 + (uVar10 ^ 1) * 4" identifier + (binary_expression "(uVar10 ^ 1) * 4" (parenthesized_expression "(uVar10 ^ 1)" ( (binary_expression "uVar10 ^ 1" identifier ^ number_literal) )) * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) }))) (labeled_statement "LAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);" statement_identifier : (expression_statement "puVar11 = *(uint **)(uVar15 + 0xc);" (assignment_expression "puVar11 = *(uint **)(uVar15 + 0xc)" identifier = (pointer_expression "*(uint **)(uVar15 + 0xc)" * (cast_expression "(uint **)(uVar15 + 0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar15 + 0xc)" ( (binary_expression "uVar15 + 0xc" identifier + number_literal) ))))) ;)) (expression_statement "*puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);" (assignment_expression "*puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (pointer_expression "*puVar9" * identifier) = (call_expression "(uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" ( (binary_expression "*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0" (pointer_expression "*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" * (cast_expression "(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" ( (binary_expression "uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18" (binary_expression "uVar8 + *(int *)(uVar1 + 4) * 0x38" identifier + (binary_expression "*(int *)(uVar1 + 4) * 0x38" (pointer_expression "*(int *)(uVar1 + 4)" * (cast_expression "(int *)(uVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 4)" ( (binary_expression "uVar1 + 4" identifier + number_literal) )))) * number_literal)) + number_literal) )))) == number_literal) )))) ;) (expression_statement "uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);" (assignment_expression "uVar1 = (uint)*(byte *)((int)puVar11 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)puVar11 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar11 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 0xb)" ( (binary_expression "(int)puVar11 + 0xb" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (if_statement "if (iStack_84 == *piVar13) {\n    return uVar1;\n  }" if (parenthesized_expression "(iStack_84 == *piVar13)" ( (binary_expression "iStack_84 == *piVar13" identifier == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "pcVar17 = *(code **)(puVar18 + -0x7d60);" (assignment_expression "pcVar17 = *(code **)(puVar18 + -0x7d60)" identifier = (pointer_expression "*(code **)(puVar18 + -0x7d60)" * (cast_expression "(code **)(puVar18 + -0x7d60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + -0x7d60)" ( (binary_expression "puVar18 + -0x7d60" identifier + number_literal) ))))) ;) (expression_statement "pcVar19 = FUN_00059320;" (assignment_expression "pcVar19 = FUN_00059320" identifier = identifier) ;) (expression_statement "iVar2 = iStack_84;" (assignment_expression "iVar2 = iStack_84" identifier = identifier) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar3 = *(int **)(pcVar17 + 0x9c248);" (assignment_expression "piVar3 = *(int **)(pcVar17 + 0x9c248)" identifier = (pointer_expression "*(int **)(pcVar17 + 0x9c248)" * (cast_expression "(int **)(pcVar17 + 0x9c248)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x9c248)" ( (binary_expression "pcVar17 + 0x9c248" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = param_3[1];" (assignment_expression "uVar10 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = *param_3;" (assignment_expression "uVar8 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "iStack_d4 = *piVar3;" (assignment_expression "iStack_d4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "puStack_d0 = unaff_s0;" (assignment_expression "puStack_d0 = unaff_s0" identifier = identifier) ;) (expression_statement "puStack_cc = param_1;" (assignment_expression "puStack_cc = param_1" identifier = identifier) ;) (expression_statement "uStack_c8 = uVar6;" (assignment_expression "uStack_c8 = uVar6" identifier = identifier) ;) (expression_statement "piStack_c4 = unaff_s3;" (assignment_expression "piStack_c4 = unaff_s3" identifier = identifier) ;) (expression_statement "piStack_c0 = piVar13;" (assignment_expression "piStack_c0 = piVar13" identifier = identifier) ;) (expression_statement "puStack_bc = puVar9;" (assignment_expression "puStack_bc = puVar9" identifier = identifier) ;) (expression_statement "puStack_b8 = puVar7;" (assignment_expression "puStack_b8 = puVar7" identifier = identifier) ;) (expression_statement "uStack_b4 = uVar15;" (assignment_expression "uStack_b4 = uVar15" identifier = identifier) ;) (expression_statement "puStack_b0 = unaff_s8;" (assignment_expression "puStack_b0 = unaff_s8" identifier = identifier) ;) (expression_statement "pcStack_ac = pcVar19;" (assignment_expression "pcStack_ac = pcVar19" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);" (assignment_expression "uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11)" identifier = (call_expression "(*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11)" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))" ( (pointer_expression "*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" * (cast_expression "(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" ( (binary_expression "*(int *)(pcVar17 + 0x9bfcc) + 0x4d68" (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" * (cast_expression "(int *)(pcVar17 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfcc)" ( (binary_expression "pcVar17 + 0x9bfcc" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(puVar11)" ( identifier )))) ;) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar6 = 7;\n  }" { (expression_statement "uVar6 = 7;" (assignment_expression "uVar6 = 7" identifier = number_literal) ;) }) (else_clause "else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" else (compound_statement "{\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if ((int)puVar11 < 1) goto LAB_00059470;" if (parenthesized_expression "((int)puVar11 < 1)" ( (binary_expression "(int)puVar11 < 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00059470;" goto statement_identifier ;)) (expression_statement "iVar14 = *(int *)(pcVar17 + 0x9bfcc);" (assignment_expression "iVar14 = *(int *)(pcVar17 + 0x9bfcc)" identifier = (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" * (cast_expression "(int *)(pcVar17 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfcc)" ( (binary_expression "pcVar17 + 0x9bfcc" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = *(int *)(pcVar17 + 0x9bfcc);" (assignment_expression "iVar4 = *(int *)(pcVar17 + 0x9bfcc)" identifier = (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" * (cast_expression "(int *)(pcVar17 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfcc)" ( (binary_expression "pcVar17 + 0x9bfcc" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(pcVar17 + 0x9bfe0);" (assignment_expression "iVar5 = *(int *)(pcVar17 + 0x9bfe0)" identifier = (pointer_expression "*(int *)(pcVar17 + 0x9bfe0)" * (cast_expression "(int *)(pcVar17 + 0x9bfe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfe0)" ( (binary_expression "pcVar17 + 0x9bfe0" identifier + number_literal) ))))) ;) (do_statement "do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);" do (compound_statement "{\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    }" { (expression_statement "piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);" (assignment_expression "piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12)" identifier = (cast_expression "(int *)(*(int *)(uVar1 + 0xc) + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar1 + 0xc) + iVar12)" ( (binary_expression "*(int *)(uVar1 + 0xc) + iVar12" (pointer_expression "*(int *)(uVar1 + 0xc)" * (cast_expression "(int *)(uVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 0xc)" ( (binary_expression "uVar1 + 0xc" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "puVar9 = (uint *)((int)puVar9 + 1);" (assignment_expression "puVar9 = (uint *)((int)puVar9 + 1)" identifier = (cast_expression "(uint *)((int)puVar9 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 1)" ( (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);" (assignment_expression "uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" identifier = (call_expression "(*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" (parenthesized_expression "(*(code *)(iVar14 + 0x6530))" ( (pointer_expression "*(code *)(iVar14 + 0x6530)" * (cast_expression "(code *)(iVar14 + 0x6530)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x6530)" ( (binary_expression "iVar14 + 0x6530" identifier + number_literal) )))) )) (argument_list "(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" ( identifier , identifier , (binary_expression "iVar2 + 0x28" identifier + number_literal) , (binary_expression "iVar2 + 0x30" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }" { (labeled_statement "LAB_00059430:\n        uVar10 = piVar13[3];" statement_identifier : (expression_statement "uVar10 = piVar13[3];" (assignment_expression "uVar10 = piVar13[3]" identifier = (subscript_expression "piVar13[3]" identifier [ number_literal ])) ;)) (expression_statement "uVar8 = piVar13[2];" (assignment_expression "uVar8 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (break_statement "break;" break ;) })) (expression_statement "iStack_dc = 0;" (assignment_expression "iStack_dc = 0" identifier = number_literal) ;) (expression_statement "iStack_e0 = 0;" (assignment_expression "iStack_e0 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);" (assignment_expression "uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0)" identifier = (call_expression "(*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0)" (parenthesized_expression "(*(code *)(iVar4 + 0x61b4))" ( (pointer_expression "*(code *)(iVar4 + 0x61b4)" * (cast_expression "(code *)(iVar4 + 0x61b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x61b4)" ( (binary_expression "iVar4 + 0x61b4" identifier + number_literal) )))) )) (argument_list "(piVar13,&iStack_e0)" ( identifier , (pointer_expression "&iStack_e0" & identifier) )))) ;) (expression_statement "uVar15 = piVar13[1] + iStack_dc;" (assignment_expression "uVar15 = piVar13[1] + iStack_dc" identifier = (binary_expression "piVar13[1] + iStack_dc" (subscript_expression "piVar13[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "piVar13[3] = uVar15;" (assignment_expression "piVar13[3] = uVar15" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;" (assignment_expression "piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = (binary_expression "(uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0" (binary_expression "(uint)(uVar15 < (uint)piVar13[1]) + *piVar13" (call_expression "(uint)(uVar15 < (uint)piVar13[1])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < (uint)piVar13[1])" ( (binary_expression "uVar15 < (uint)piVar13[1]" identifier < (cast_expression "(uint)piVar13[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar13[1]" identifier [ number_literal ]))) ))) + (pointer_expression "*piVar13" * identifier)) + identifier)) ;) (if_statement "if (uVar6 != 0) goto LAB_00059430;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00059430;" goto statement_identifier ;)) (expression_statement "uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);" (assignment_expression "uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13)" identifier = (call_expression "(*(code *)(iVar5 + -0x71d8))(piVar13)" (parenthesized_expression "(*(code *)(iVar5 + -0x71d8))" ( (pointer_expression "*(code *)(iVar5 + -0x71d8)" * (cast_expression "(code *)(iVar5 + -0x71d8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x71d8)" ( (binary_expression "iVar5 + -0x71d8" identifier + number_literal) )))) )) (argument_list "(piVar13)" ( identifier )))) ;) (expression_statement "uVar10 = piVar13[3];" (assignment_expression "uVar10 = piVar13[3]" identifier = (subscript_expression "piVar13[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = piVar13[2];" (assignment_expression "uVar8 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (if_statement "if (puVar9 == puVar11) goto LAB_00059548;" if (parenthesized_expression "(puVar9 == puVar11)" ( (binary_expression "puVar9 == puVar11" identifier == identifier) )) (goto_statement "goto LAB_00059548;" goto statement_identifier ;)) (expression_statement "iVar12 = iVar12 + 0x38;" (assignment_expression "iVar12 = iVar12 + 0x38" identifier = (binary_expression "iVar12 + 0x38" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) ;) }))) (do_statement "do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );" do (compound_statement "{\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  }" { (expression_statement "FUN_0003fc8c(uVar1);" (call_expression "FUN_0003fc8c(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (labeled_statement "LAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);" statement_identifier : (do_statement "do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);" do (compound_statement "{\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    }" { (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "param_3[1] = uVar10;" (assignment_expression "param_3[1] = uVar10" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) (if_statement "if (iStack_d4 == iVar2) {\n        return uVar6;\n      }" if (parenthesized_expression "(iStack_d4 == iVar2)" ( (binary_expression "iStack_d4 == iVar2" identifier == identifier) )) (compound_statement "{\n        return uVar6;\n      }" { (return_statement "return uVar6;" return identifier ;) })) (expression_statement "uVar6 = (**(code **)(pcVar17 + 0x9c220))();" (assignment_expression "uVar6 = (**(code **)(pcVar17 + 0x9c220))()" identifier = (call_expression "(**(code **)(pcVar17 + 0x9c220))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x9c220))" ( (pointer_expression "**(code **)(pcVar17 + 0x9c220)" * (pointer_expression "*(code **)(pcVar17 + 0x9c220)" * (cast_expression "(code **)(pcVar17 + 0x9c220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x9c220)" ( (binary_expression "pcVar17 + 0x9c220" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_00059548:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int vdbePmaReaderNext(PmaReader *pReadr)\n\n{\n  int iVar1;\n  void *pvVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  sqlite3_io_methods *pMerger;\n  int iVar6;\n  u8 *puVar7;\n  PmaReader *pPVar8;\n  int iVar9;\n  PmaReader *pPVar10;\n  uint uVar11;\n  PmaReader *pPVar12;\n  IncrMerger *in_a2;\n  PmaReader *in_a3;\n  undefined4 uVar13;\n  SortSubtask *pSVar14;\n  MergeEngine *pMVar15;\n  IncrMerger *unaff_s0;\n  int iVar16;\n  uint uVar17;\n  SortSubtask *unaff_s3;\n  int *piVar18;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  undefined4 *unaff_s8;\n  _func_int_sqlite3_file_ptr_void_ptr_int_sqlite3_int64 *p_Var23;\n  code *pcVar24;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  IncrMerger *pIStack_d0;\n  IncrMerger *pIStack_cc;\n  uint uStack_c8;\n  SortSubtask *pSStack_c4;\n  int *piStack_c0;\n  PmaReader *pPStack_bc;\n  PmaReader *pPStack_b8;\n  int iStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  sqlite3_file *psStack_98;\n  int iStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  IncrMerger *pIStack_80;\n  PmaReader *pPStack_7c;\n  undefined *puStack_78;\n  SortSubtask *pSStack_74;\n  void *pRet;\n  u64 nRec;\n  PmaReader *pPStack_1c;\n  \n  puVar22 = PTR___stack_chk_guard_000f5568;\n  nRec._4_4_ = (PmaReader *)0x0;\n  nRec._0_4_ = 0;\n  pPStack_1c = *(PmaReader **)PTR___stack_chk_guard_000f5568;\n  if (*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof) {\nLAB_00058f90:\n    pPVar10 = (PmaReader *)&nRec;\n    pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);\n    if (pvVar2 == (void *)0x0) {\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff) {\n    if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;\n    unaff_s0 = pReadr->pIncr;\n  }\n  else {\n    unaff_s0 = pReadr->pIncr;\n  }\n  pvVar2 = (void *)0x0;\n  pPVar10 = pPStack_1c;\n  if (unaff_s0 != (IncrMerger *)0x0) {\n    if (unaff_s0->bUseThread == 0) {\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }\n    else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  vdbePmaReaderClear(pReadr);\nLAB_0005907c:\n  if (pPStack_1c == *(PmaReader **)puVar22) {\n    return (int)pvVar2;\n  }\n  pPVar8 = pPStack_1c;\n  puVar20 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar20 + 0xa41c8;\n  puStack_78 = puVar22;\n  piVar18 = *(int **)(puVar20 + 0x9c490);\n  uVar17 = *(uint *)(*(int *)&pPVar8->iEof + 4);\n  iStack_84 = *piVar18;\n  iVar1 = *(int *)((int)&pPVar8->iReadOff + 4);\n  pPVar12 = pPVar10;\n  pIStack_80 = unaff_s0;\n  pPStack_7c = pReadr;\n  pSStack_74 = unaff_s3;\n  uVar3 = vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38));\n  puVar22 = puStack_90;\n  if (uVar3 == 0) {\n    uVar11 = uVar17 & 0xfffe;\n    uVar3 = uVar17 | 1;\n    iVar4 = (int)pPVar8->iEof;\n    uStack_88 = 0;\n    uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;\n    unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);\n    pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);\n    if ((int)uVar17 < 1) {\n      iVar9 = *(int *)&pPVar8->iEof;\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }\nLAB_000592a8:\n    pPVar12 = *(PmaReader **)(iVar1 + 0xc);\n    *(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);\n    uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);\n  }\n  if (iStack_84 == *piVar18) {\n    return uVar3;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7d60);\n  pcVar24 = vdbeMergeEngineLevel0;\n  iVar4 = iStack_84;\n  (*pcVar21)();\n  piVar5 = *(int **)(pcVar21 + 0x9c248);\n  pMVar15 = in_a2->pMerger;\n  pSVar14 = in_a2->pTask;\n  iStack_d4 = *piVar5;\n  pIStack_d0 = unaff_s0;\n  pIStack_cc = (IncrMerger *)pReadr;\n  uStack_c8 = uVar17;\n  pSStack_c4 = unaff_s3;\n  piStack_c0 = piVar18;\n  pPStack_bc = pPVar10;\n  pPStack_b8 = pPVar8;\n  iStack_b4 = iVar1;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar24;\n  pMerger = (sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12);\n  *(sqlite3_io_methods **)&in_a3->iReadOff = pMerger;\n  if (pMerger == (sqlite3_io_methods *)0x0) {\n    iVar1 = 7;\n  }\n  else {\n    iVar1 = 0;\n    if ((int)pPVar12 < 1) goto LAB_00059470;\n    iVar19 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar16 = 0;\n    pPVar10 = (PmaReader *)0x0;\n    iVar9 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar6 = *(int *)(pcVar21 + 0x9bfe0);\n    do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);\n  }\n  do {\n    vdbeMergeEngineFree((MergeEngine *)pMerger);\n    *(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;\nLAB_00059470:\n    do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);\n  } while( true );\n}\n\n" (function_definition "int vdbePmaReaderNext(PmaReader *pReadr)\n\n{\n  int iVar1;\n  void *pvVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  sqlite3_io_methods *pMerger;\n  int iVar6;\n  u8 *puVar7;\n  PmaReader *pPVar8;\n  int iVar9;\n  PmaReader *pPVar10;\n  uint uVar11;\n  PmaReader *pPVar12;\n  IncrMerger *in_a2;\n  PmaReader *in_a3;\n  undefined4 uVar13;\n  SortSubtask *pSVar14;\n  MergeEngine *pMVar15;\n  IncrMerger *unaff_s0;\n  int iVar16;\n  uint uVar17;\n  SortSubtask *unaff_s3;\n  int *piVar18;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  undefined4 *unaff_s8;\n  _func_int_sqlite3_file_ptr_void_ptr_int_sqlite3_int64 *p_Var23;\n  code *pcVar24;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  IncrMerger *pIStack_d0;\n  IncrMerger *pIStack_cc;\n  uint uStack_c8;\n  SortSubtask *pSStack_c4;\n  int *piStack_c0;\n  PmaReader *pPStack_bc;\n  PmaReader *pPStack_b8;\n  int iStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  sqlite3_file *psStack_98;\n  int iStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  IncrMerger *pIStack_80;\n  PmaReader *pPStack_7c;\n  undefined *puStack_78;\n  SortSubtask *pSStack_74;\n  void *pRet;\n  u64 nRec;\n  PmaReader *pPStack_1c;\n  \n  puVar22 = PTR___stack_chk_guard_000f5568;\n  nRec._4_4_ = (PmaReader *)0x0;\n  nRec._0_4_ = 0;\n  pPStack_1c = *(PmaReader **)PTR___stack_chk_guard_000f5568;\n  if (*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof) {\nLAB_00058f90:\n    pPVar10 = (PmaReader *)&nRec;\n    pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);\n    if (pvVar2 == (void *)0x0) {\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff) {\n    if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;\n    unaff_s0 = pReadr->pIncr;\n  }\n  else {\n    unaff_s0 = pReadr->pIncr;\n  }\n  pvVar2 = (void *)0x0;\n  pPVar10 = pPStack_1c;\n  if (unaff_s0 != (IncrMerger *)0x0) {\n    if (unaff_s0->bUseThread == 0) {\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }\n    else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  vdbePmaReaderClear(pReadr);\nLAB_0005907c:\n  if (pPStack_1c == *(PmaReader **)puVar22) {\n    return (int)pvVar2;\n  }\n  pPVar8 = pPStack_1c;\n  puVar20 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar20 + 0xa41c8;\n  puStack_78 = puVar22;\n  piVar18 = *(int **)(puVar20 + 0x9c490);\n  uVar17 = *(uint *)(*(int *)&pPVar8->iEof + 4);\n  iStack_84 = *piVar18;\n  iVar1 = *(int *)((int)&pPVar8->iReadOff + 4);\n  pPVar12 = pPVar10;\n  pIStack_80 = unaff_s0;\n  pPStack_7c = pReadr;\n  pSStack_74 = unaff_s3;\n  uVar3 = vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38));\n  puVar22 = puStack_90;\n  if (uVar3 == 0) {\n    uVar11 = uVar17 & 0xfffe;\n    uVar3 = uVar17 | 1;\n    iVar4 = (int)pPVar8->iEof;\n    uStack_88 = 0;\n    uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;\n    unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);\n    pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);\n    if ((int)uVar17 < 1) {\n      iVar9 = *(int *)&pPVar8->iEof;\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }\nLAB_000592a8:\n    pPVar12 = *(PmaReader **)(iVar1 + 0xc);\n    *(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);\n    uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);\n  }\n  if (iStack_84 == *piVar18) {\n    return uVar3;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7d60);\n  pcVar24 = vdbeMergeEngineLevel0;\n  iVar4 = iStack_84;\n  (*pcVar21)();\n  piVar5 = *(int **)(pcVar21 + 0x9c248);\n  pMVar15 = in_a2->pMerger;\n  pSVar14 = in_a2->pTask;\n  iStack_d4 = *piVar5;\n  pIStack_d0 = unaff_s0;\n  pIStack_cc = (IncrMerger *)pReadr;\n  uStack_c8 = uVar17;\n  pSStack_c4 = unaff_s3;\n  piStack_c0 = piVar18;\n  pPStack_bc = pPVar10;\n  pPStack_b8 = pPVar8;\n  iStack_b4 = iVar1;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar24;\n  pMerger = (sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12);\n  *(sqlite3_io_methods **)&in_a3->iReadOff = pMerger;\n  if (pMerger == (sqlite3_io_methods *)0x0) {\n    iVar1 = 7;\n  }\n  else {\n    iVar1 = 0;\n    if ((int)pPVar12 < 1) goto LAB_00059470;\n    iVar19 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar16 = 0;\n    pPVar10 = (PmaReader *)0x0;\n    iVar9 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar6 = *(int *)(pcVar21 + 0x9bfe0);\n    do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);\n  }\n  do {\n    vdbeMergeEngineFree((MergeEngine *)pMerger);\n    *(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;\nLAB_00059470:\n    do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);\n  } while( true );\n}" primitive_type (function_declarator "vdbePmaReaderNext(PmaReader *pReadr)" identifier (parameter_list "(PmaReader *pReadr)" ( (parameter_declaration "PmaReader *pReadr" type_identifier (pointer_declarator "*pReadr" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  void *pvVar2;\n  uint uVar3;\n  int iVar4;\n  int *piVar5;\n  sqlite3_io_methods *pMerger;\n  int iVar6;\n  u8 *puVar7;\n  PmaReader *pPVar8;\n  int iVar9;\n  PmaReader *pPVar10;\n  uint uVar11;\n  PmaReader *pPVar12;\n  IncrMerger *in_a2;\n  PmaReader *in_a3;\n  undefined4 uVar13;\n  SortSubtask *pSVar14;\n  MergeEngine *pMVar15;\n  IncrMerger *unaff_s0;\n  int iVar16;\n  uint uVar17;\n  SortSubtask *unaff_s3;\n  int *piVar18;\n  int iVar19;\n  undefined *puVar20;\n  code *pcVar21;\n  undefined *puVar22;\n  undefined4 *unaff_s8;\n  _func_int_sqlite3_file_ptr_void_ptr_int_sqlite3_int64 *p_Var23;\n  code *pcVar24;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  IncrMerger *pIStack_d0;\n  IncrMerger *pIStack_cc;\n  uint uStack_c8;\n  SortSubtask *pSStack_c4;\n  int *piStack_c0;\n  PmaReader *pPStack_bc;\n  PmaReader *pPStack_b8;\n  int iStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  sqlite3_file *psStack_98;\n  int iStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  IncrMerger *pIStack_80;\n  PmaReader *pPStack_7c;\n  undefined *puStack_78;\n  SortSubtask *pSStack_74;\n  void *pRet;\n  u64 nRec;\n  PmaReader *pPStack_1c;\n  \n  puVar22 = PTR___stack_chk_guard_000f5568;\n  nRec._4_4_ = (PmaReader *)0x0;\n  nRec._0_4_ = 0;\n  pPStack_1c = *(PmaReader **)PTR___stack_chk_guard_000f5568;\n  if (*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof) {\nLAB_00058f90:\n    pPVar10 = (PmaReader *)&nRec;\n    pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);\n    if (pvVar2 == (void *)0x0) {\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff) {\n    if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;\n    unaff_s0 = pReadr->pIncr;\n  }\n  else {\n    unaff_s0 = pReadr->pIncr;\n  }\n  pvVar2 = (void *)0x0;\n  pPVar10 = pPStack_1c;\n  if (unaff_s0 != (IncrMerger *)0x0) {\n    if (unaff_s0->bUseThread == 0) {\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }\n    else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  vdbePmaReaderClear(pReadr);\nLAB_0005907c:\n  if (pPStack_1c == *(PmaReader **)puVar22) {\n    return (int)pvVar2;\n  }\n  pPVar8 = pPStack_1c;\n  puVar20 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar20 + 0xa41c8;\n  puStack_78 = puVar22;\n  piVar18 = *(int **)(puVar20 + 0x9c490);\n  uVar17 = *(uint *)(*(int *)&pPVar8->iEof + 4);\n  iStack_84 = *piVar18;\n  iVar1 = *(int *)((int)&pPVar8->iReadOff + 4);\n  pPVar12 = pPVar10;\n  pIStack_80 = unaff_s0;\n  pPStack_7c = pReadr;\n  pSStack_74 = unaff_s3;\n  uVar3 = vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38));\n  puVar22 = puStack_90;\n  if (uVar3 == 0) {\n    uVar11 = uVar17 & 0xfffe;\n    uVar3 = uVar17 | 1;\n    iVar4 = (int)pPVar8->iEof;\n    uStack_88 = 0;\n    uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;\n    unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);\n    pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);\n    if ((int)uVar17 < 1) {\n      iVar9 = *(int *)&pPVar8->iEof;\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }\nLAB_000592a8:\n    pPVar12 = *(PmaReader **)(iVar1 + 0xc);\n    *(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);\n    uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);\n  }\n  if (iStack_84 == *piVar18) {\n    return uVar3;\n  }\n  pcVar21 = *(code **)(puVar22 + -0x7d60);\n  pcVar24 = vdbeMergeEngineLevel0;\n  iVar4 = iStack_84;\n  (*pcVar21)();\n  piVar5 = *(int **)(pcVar21 + 0x9c248);\n  pMVar15 = in_a2->pMerger;\n  pSVar14 = in_a2->pTask;\n  iStack_d4 = *piVar5;\n  pIStack_d0 = unaff_s0;\n  pIStack_cc = (IncrMerger *)pReadr;\n  uStack_c8 = uVar17;\n  pSStack_c4 = unaff_s3;\n  piStack_c0 = piVar18;\n  pPStack_bc = pPVar10;\n  pPStack_b8 = pPVar8;\n  iStack_b4 = iVar1;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar24;\n  pMerger = (sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12);\n  *(sqlite3_io_methods **)&in_a3->iReadOff = pMerger;\n  if (pMerger == (sqlite3_io_methods *)0x0) {\n    iVar1 = 7;\n  }\n  else {\n    iVar1 = 0;\n    if ((int)pPVar12 < 1) goto LAB_00059470;\n    iVar19 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar16 = 0;\n    pPVar10 = (PmaReader *)0x0;\n    iVar9 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar6 = *(int *)(pcVar21 + 0x9bfe0);\n    do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);\n  }\n  do {\n    vdbeMergeEngineFree((MergeEngine *)pMerger);\n    *(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;\nLAB_00059470:\n    do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "sqlite3_io_methods *pMerger;" type_identifier (pointer_declarator "*pMerger" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "u8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "PmaReader *pPVar8;" type_identifier (pointer_declarator "*pPVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "PmaReader *pPVar10;" type_identifier (pointer_declarator "*pPVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "PmaReader *pPVar12;" type_identifier (pointer_declarator "*pPVar12" * identifier) ;) (declaration "IncrMerger *in_a2;" type_identifier (pointer_declarator "*in_a2" * identifier) ;) (declaration "PmaReader *in_a3;" type_identifier (pointer_declarator "*in_a3" * identifier) ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "SortSubtask *pSVar14;" type_identifier (pointer_declarator "*pSVar14" * identifier) ;) (declaration "MergeEngine *pMVar15;" type_identifier (pointer_declarator "*pMVar15" * identifier) ;) (declaration "IncrMerger *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "SortSubtask *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "code *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "undefined *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "undefined4 *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "_func_int_sqlite3_file_ptr_void_ptr_int_sqlite3_int64 *p_Var23;" type_identifier (pointer_declarator "*p_Var23" * identifier) ;) (declaration "code *pcVar24;" type_identifier (pointer_declarator "*pcVar24" * identifier) ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int iStack_dc;" primitive_type identifier ;) (declaration "int iStack_d4;" primitive_type identifier ;) (declaration "IncrMerger *pIStack_d0;" type_identifier (pointer_declarator "*pIStack_d0" * identifier) ;) (declaration "IncrMerger *pIStack_cc;" type_identifier (pointer_declarator "*pIStack_cc" * identifier) ;) (declaration "uint uStack_c8;" type_identifier identifier ;) (declaration "SortSubtask *pSStack_c4;" type_identifier (pointer_declarator "*pSStack_c4" * identifier) ;) (declaration "int *piStack_c0;" primitive_type (pointer_declarator "*piStack_c0" * identifier) ;) (declaration "PmaReader *pPStack_bc;" type_identifier (pointer_declarator "*pPStack_bc" * identifier) ;) (declaration "PmaReader *pPStack_b8;" type_identifier (pointer_declarator "*pPStack_b8" * identifier) ;) (declaration "int iStack_b4;" primitive_type identifier ;) (declaration "undefined4 *puStack_b0;" type_identifier (pointer_declarator "*puStack_b0" * identifier) ;) (declaration "code *pcStack_ac;" type_identifier (pointer_declarator "*pcStack_ac" * identifier) ;) (declaration "sqlite3_file *psStack_98;" type_identifier (pointer_declarator "*psStack_98" * identifier) ;) (declaration "int iStack_94;" primitive_type identifier ;) (declaration "undefined *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined4 uStack_88;" type_identifier identifier ;) (declaration "int iStack_84;" primitive_type identifier ;) (declaration "IncrMerger *pIStack_80;" type_identifier (pointer_declarator "*pIStack_80" * identifier) ;) (declaration "PmaReader *pPStack_7c;" type_identifier (pointer_declarator "*pPStack_7c" * identifier) ;) (declaration "undefined *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "SortSubtask *pSStack_74;" type_identifier (pointer_declarator "*pSStack_74" * identifier) ;) (declaration "void *pRet;" primitive_type (pointer_declarator "*pRet" * identifier) ;) (declaration "u64 nRec;" type_identifier identifier ;) (declaration "PmaReader *pPStack_1c;" type_identifier (pointer_declarator "*pPStack_1c" * identifier) ;) (expression_statement "puVar22 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar22 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "nRec._4_4_ = (PmaReader *)0x0;" (assignment_expression "nRec._4_4_ = (PmaReader *)0x0" (field_expression "nRec._4_4_" identifier . field_identifier) = (cast_expression "(PmaReader *)0x0" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "nRec._0_4_ = 0;" (assignment_expression "nRec._0_4_ = 0" (field_expression "nRec._0_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pPStack_1c = *(PmaReader **)PTR___stack_chk_guard_000f5568;" (assignment_expression "pPStack_1c = *(PmaReader **)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(PmaReader **)PTR___stack_chk_guard_000f5568" * (cast_expression "(PmaReader **)PTR___stack_chk_guard_000f5568" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof) {\nLAB_00058f90:\n    pPVar10 = (PmaReader *)&nRec;\n    pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);\n    if (pvVar2 == (void *)0x0) {\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }\n    goto LAB_0005907c;\n  }" if (parenthesized_expression "(*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof)" ( (binary_expression "*(int *)&pReadr->iReadOff < *(int *)&pReadr->iEof" (pointer_expression "*(int *)&pReadr->iReadOff" * (cast_expression "(int *)&pReadr->iReadOff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pReadr->iReadOff" & (field_expression "pReadr->iReadOff" identifier -> field_identifier)))) < (pointer_expression "*(int *)&pReadr->iEof" * (cast_expression "(int *)&pReadr->iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pReadr->iEof" & (field_expression "pReadr->iEof" identifier -> field_identifier))))) )) (compound_statement "{\nLAB_00058f90:\n    pPVar10 = (PmaReader *)&nRec;\n    pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);\n    if (pvVar2 == (void *)0x0) {\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }\n    goto LAB_0005907c;\n  }" { (labeled_statement "LAB_00058f90:\n    pPVar10 = (PmaReader *)&nRec;" statement_identifier : (expression_statement "pPVar10 = (PmaReader *)&nRec;" (assignment_expression "pPVar10 = (PmaReader *)&nRec" identifier = (cast_expression "(PmaReader *)&nRec" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&nRec" & identifier))) ;)) (expression_statement "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr);" (assignment_expression "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr)" identifier = (cast_expression "(void *)(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))(pReadr)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x61b4)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x61b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x61b4)" ( (binary_expression "PTR_LAB_000f52ec + 0x61b4" identifier + number_literal) )))) )) (argument_list "(pReadr)" ( identifier ))))) ;) (if_statement "if (pvVar2 == (void *)0x0) {\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }" if (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar7 = pReadr->aMap;\n      pReadr->nKey = (int)nRec._4_4_;\n      if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }\n    }" { (expression_statement "puVar7 = pReadr->aMap;" (assignment_expression "puVar7 = pReadr->aMap" identifier = (field_expression "pReadr->aMap" identifier -> field_identifier)) ;) (expression_statement "pReadr->nKey = (int)nRec._4_4_;" (assignment_expression "pReadr->nKey = (int)nRec._4_4_" (field_expression "pReadr->nKey" identifier -> field_identifier) = (cast_expression "(int)nRec._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "nRec._4_4_" identifier . field_identifier))) ;) (if_statement "if (puVar7 == (u8 *)0x0) {\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }\n      else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }" if (parenthesized_expression "(puVar7 == (u8 *)0x0)" ( (binary_expression "puVar7 == (u8 *)0x0" identifier == (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        in_a2 = (IncrMerger *)&pReadr->aKey;\n        pPVar10 = nRec._4_4_;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);\n      }" { (expression_statement "in_a2 = (IncrMerger *)&pReadr->aKey;" (assignment_expression "in_a2 = (IncrMerger *)&pReadr->aKey" identifier = (cast_expression "(IncrMerger *)&pReadr->aKey" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pReadr->aKey" & (field_expression "pReadr->aKey" identifier -> field_identifier)))) ;) (expression_statement "pPVar10 = nRec._4_4_;" (assignment_expression "pPVar10 = nRec._4_4_" identifier = (field_expression "nRec._4_4_" identifier . field_identifier)) ;) (expression_statement "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr);" (assignment_expression "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr)" identifier = (cast_expression "(void *)(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(pReadr)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5ea0)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5ea0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x5ea0)" ( (binary_expression "PTR_LAB_000f52ec + 0x5ea0" identifier + number_literal) )))) )) (argument_list "(pReadr)" ( identifier ))))) ;) }) (else_clause "else {\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }" else (compound_statement "{\n        in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);\n        iVar1 = *(int *)&pReadr->iReadOff;\n        in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);\n        *(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;\n        pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);\n        pReadr->aKey = puVar7 + (int)in_a2;\n        *(PmaReader **)&pReadr->iReadOff = pPVar10;\n      }" { (expression_statement "in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4);" (assignment_expression "in_a2 = *(IncrMerger **)((int)&pReadr->iReadOff + 4)" identifier = (pointer_expression "*(IncrMerger **)((int)&pReadr->iReadOff + 4)" * (cast_expression "(IncrMerger **)((int)&pReadr->iReadOff + 4)" ( (type_descriptor "IncrMerger **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pReadr->iReadOff + 4)" ( (binary_expression "(int)&pReadr->iReadOff + 4" (cast_expression "(int)&pReadr->iReadOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pReadr->iReadOff" & (field_expression "pReadr->iReadOff" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)&pReadr->iReadOff;" (assignment_expression "iVar1 = *(int *)&pReadr->iReadOff" identifier = (pointer_expression "*(int *)&pReadr->iReadOff" * (cast_expression "(int *)&pReadr->iReadOff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pReadr->iReadOff" & (field_expression "pReadr->iReadOff" identifier -> field_identifier))))) ;) (expression_statement "in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);" (assignment_expression "in_a3 = (PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd)" identifier = (cast_expression "(PmaReader *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd)" ( (binary_expression "(int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd" (cast_expression "(int)&nRec._4_4_[-1].pFd" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&nRec._4_4_[-1].pFd" & (field_expression "nRec._4_4_[-1].pFd" (subscript_expression "nRec._4_4_[-1]" (field_expression "nRec._4_4_" identifier . field_identifier) [ number_literal ]) . field_identifier))) + (cast_expression "(int)&in_a2->aFile[0].pFd" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&in_a2->aFile[0].pFd" & (field_expression "in_a2->aFile[0].pFd" (subscript_expression "in_a2->aFile[0]" (field_expression "in_a2->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) )))) ;) (expression_statement "*(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3;" (assignment_expression "*(PmaReader **)((int)&pReadr->iReadOff + 4) = in_a3" (pointer_expression "*(PmaReader **)((int)&pReadr->iReadOff + 4)" * (cast_expression "(PmaReader **)((int)&pReadr->iReadOff + 4)" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&pReadr->iReadOff + 4)" ( (binary_expression "(int)&pReadr->iReadOff + 4" (cast_expression "(int)&pReadr->iReadOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pReadr->iReadOff" & (field_expression "pReadr->iReadOff" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1);" (assignment_expression "pPVar10 = (PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1)" identifier = (cast_expression "(PmaReader *)((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1)" ( (binary_expression "(uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + iVar1" (binary_expression "(uint)(in_a3 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f)" (call_expression "(uint)(in_a3 < nRec._4_4_)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_a3 < nRec._4_4_)" ( (binary_expression "in_a3 < nRec._4_4_" identifier < (field_expression "nRec._4_4_" identifier . field_identifier)) ))) + (parenthesized_expression "((int)nRec._4_4_ >> 0x1f)" ( (binary_expression "(int)nRec._4_4_ >> 0x1f" (cast_expression "(int)nRec._4_4_" ( (type_descriptor "int" primitive_type) ) (field_expression "nRec._4_4_" identifier . field_identifier)) >> number_literal) ))) + identifier) )))) ;) (expression_statement "pReadr->aKey = puVar7 + (int)in_a2;" (assignment_expression "pReadr->aKey = puVar7 + (int)in_a2" (field_expression "pReadr->aKey" identifier -> field_identifier) = (binary_expression "puVar7 + (int)in_a2" identifier + (cast_expression "(int)in_a2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(PmaReader **)&pReadr->iReadOff = pPVar10;" (assignment_expression "*(PmaReader **)&pReadr->iReadOff = pPVar10" (pointer_expression "*(PmaReader **)&pReadr->iReadOff" * (cast_expression "(PmaReader **)&pReadr->iReadOff" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pReadr->iReadOff" & (field_expression "pReadr->iReadOff" identifier -> field_identifier)))) = identifier) ;) }))) })) (goto_statement "goto LAB_0005907c;" goto statement_identifier ;) })) (if_statement "if (*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff) {\n    if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;\n    unaff_s0 = pReadr->pIncr;\n  }\n  else {\n    unaff_s0 = pReadr->pIncr;\n  }" if (parenthesized_expression "(*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff)" ( (binary_expression "*(int *)&pReadr->iEof == *(int *)&pReadr->iReadOff" (pointer_expression "*(int *)&pReadr->iEof" * (cast_expression "(int *)&pReadr->iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pReadr->iEof" & (field_expression "pReadr->iEof" identifier -> field_identifier)))) == (pointer_expression "*(int *)&pReadr->iReadOff" * (cast_expression "(int *)&pReadr->iReadOff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pReadr->iReadOff" & (field_expression "pReadr->iReadOff" identifier -> field_identifier))))) )) (compound_statement "{\n    if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;\n    unaff_s0 = pReadr->pIncr;\n  }" { (if_statement "if ((uint)pReadr->iReadOff < (uint)pReadr->iEof) goto LAB_00058f90;" if (parenthesized_expression "((uint)pReadr->iReadOff < (uint)pReadr->iEof)" ( (binary_expression "(uint)pReadr->iReadOff < (uint)pReadr->iEof" (cast_expression "(uint)pReadr->iReadOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pReadr->iReadOff" identifier -> field_identifier)) < (cast_expression "(uint)pReadr->iEof" ( (type_descriptor "uint" type_identifier) ) (field_expression "pReadr->iEof" identifier -> field_identifier))) )) (goto_statement "goto LAB_00058f90;" goto statement_identifier ;)) (expression_statement "unaff_s0 = pReadr->pIncr;" (assignment_expression "unaff_s0 = pReadr->pIncr" identifier = (field_expression "pReadr->pIncr" identifier -> field_identifier)) ;) }) (else_clause "else {\n    unaff_s0 = pReadr->pIncr;\n  }" else (compound_statement "{\n    unaff_s0 = pReadr->pIncr;\n  }" { (expression_statement "unaff_s0 = pReadr->pIncr;" (assignment_expression "unaff_s0 = pReadr->pIncr" identifier = (field_expression "pReadr->pIncr" identifier -> field_identifier)) ;) }))) (expression_statement "pvVar2 = (void *)0x0;" (assignment_expression "pvVar2 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pPVar10 = pPStack_1c;" (assignment_expression "pPVar10 = pPStack_1c" identifier = identifier) ;) (if_statement "if (unaff_s0 != (IncrMerger *)0x0) {\n    if (unaff_s0->bUseThread == 0) {\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }\n    else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(unaff_s0 != (IncrMerger *)0x0)" ( (binary_expression "unaff_s0 != (IncrMerger *)0x0" identifier != (cast_expression "(IncrMerger *)0x0" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (unaff_s0->bUseThread == 0) {\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }\n    else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" { (if_statement "if (unaff_s0->bUseThread == 0) {\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }\n    else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" if (parenthesized_expression "(unaff_s0->bUseThread == 0)" ( (binary_expression "unaff_s0->bUseThread == 0" (field_expression "unaff_s0->bUseThread" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);\n      in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;\n      pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;\n      iVar1 = (int)unaff_s0->aFile[1].iEof;\n      pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;\n      *(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;\n      if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;\n      unaff_s0->bEof = 1;\n      if (pvVar2 != (void *)0x0) goto LAB_00059064;\nLAB_0005905c:\n      pvVar2 = (void *)0x0;\n    }" { (expression_statement "pvVar2 = (void *)vdbeIncrPopulate(unaff_s0);" (assignment_expression "pvVar2 = (void *)vdbeIncrPopulate(unaff_s0)" identifier = (cast_expression "(void *)vdbeIncrPopulate(unaff_s0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "vdbeIncrPopulate(unaff_s0)" identifier (argument_list "(unaff_s0)" ( identifier ))))) ;) (expression_statement "in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd;" (assignment_expression "in_a3 = (PmaReader *)unaff_s0->aFile[1].pFd" identifier = (cast_expression "(PmaReader *)unaff_s0->aFile[1].pFd" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s0->aFile[1].pFd" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4;" (assignment_expression "in_a2 = *(IncrMerger **)&unaff_s0->aFile[1].field_0x4" identifier = (pointer_expression "*(IncrMerger **)&unaff_s0->aFile[1].field_0x4" * (cast_expression "(IncrMerger **)&unaff_s0->aFile[1].field_0x4" ( (type_descriptor "IncrMerger **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->aFile[1].field_0x4" & (field_expression "unaff_s0->aFile[1].field_0x4" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof;" (assignment_expression "pPVar8 = *(PmaReader **)&unaff_s0->aFile[1].iEof" identifier = (pointer_expression "*(PmaReader **)&unaff_s0->aFile[1].iEof" * (cast_expression "(PmaReader **)&unaff_s0->aFile[1].iEof" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->aFile[1].iEof" & (field_expression "unaff_s0->aFile[1].iEof" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "iVar1 = (int)unaff_s0->aFile[1].iEof;" (assignment_expression "iVar1 = (int)unaff_s0->aFile[1].iEof" identifier = (cast_expression "(int)unaff_s0->aFile[1].iEof" ( (type_descriptor "int" primitive_type) ) (field_expression "unaff_s0->aFile[1].iEof" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "pPVar10 = *(PmaReader **)&unaff_s0->iStartOff;" (assignment_expression "pPVar10 = *(PmaReader **)&unaff_s0->iStartOff" identifier = (pointer_expression "*(PmaReader **)&unaff_s0->iStartOff" * (cast_expression "(PmaReader **)&unaff_s0->iStartOff" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->iStartOff" & (field_expression "unaff_s0->iStartOff" identifier -> field_identifier))))) ;) (expression_statement "unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3;" (assignment_expression "unaff_s0->aFile[0].pFd = (sqlite3_file *)in_a3" (field_expression "unaff_s0->aFile[0].pFd" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_file *)in_a3" ( (type_descriptor "sqlite3_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2;" (assignment_expression "*(IncrMerger **)&unaff_s0->aFile[0].field_0x4 = in_a2" (pointer_expression "*(IncrMerger **)&unaff_s0->aFile[0].field_0x4" * (cast_expression "(IncrMerger **)&unaff_s0->aFile[0].field_0x4" ( (type_descriptor "IncrMerger **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->aFile[0].field_0x4" & (field_expression "unaff_s0->aFile[0].field_0x4" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8;" (assignment_expression "*(PmaReader **)&unaff_s0->aFile[0].iEof = pPVar8" (pointer_expression "*(PmaReader **)&unaff_s0->aFile[0].iEof" * (cast_expression "(PmaReader **)&unaff_s0->aFile[0].iEof" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1;" (assignment_expression "*(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar1" (pointer_expression "*(int *)((int)&unaff_s0->aFile[0].iEof + 4)" * (cast_expression "(int *)((int)&unaff_s0->aFile[0].iEof + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s0->aFile[0].iEof + 4)" ( (binary_expression "(int)&unaff_s0->aFile[0].iEof + 4" (cast_expression "(int)&unaff_s0->aFile[0].iEof" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (if_statement "if ((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)) goto LAB_00058f48;" if (parenthesized_expression "((pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff))" ( (binary_expression "(pPVar8 != pPVar10) || (iVar1 != (int)unaff_s0->iStartOff)" (parenthesized_expression "(pPVar8 != pPVar10)" ( (binary_expression "pPVar8 != pPVar10" identifier != identifier) )) || (parenthesized_expression "(iVar1 != (int)unaff_s0->iStartOff)" ( (binary_expression "iVar1 != (int)unaff_s0->iStartOff" identifier != (cast_expression "(int)unaff_s0->iStartOff" ( (type_descriptor "int" primitive_type) ) (field_expression "unaff_s0->iStartOff" identifier -> field_identifier))) ))) )) (goto_statement "goto LAB_00058f48;" goto statement_identifier ;)) (expression_statement "unaff_s0->bEof = 1;" (assignment_expression "unaff_s0->bEof = 1" (field_expression "unaff_s0->bEof" identifier -> field_identifier) = number_literal) ;) (if_statement "if (pvVar2 != (void *)0x0) goto LAB_00059064;" if (parenthesized_expression "(pvVar2 != (void *)0x0)" ( (binary_expression "pvVar2 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00059064;" goto statement_identifier ;)) (labeled_statement "LAB_0005905c:\n      pvVar2 = (void *)0x0;" statement_identifier : (expression_statement "pvVar2 = (void *)0x0;" (assignment_expression "pvVar2 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" else (compound_statement "{\n      unaff_s3 = unaff_s0->pTask;\n      if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }\n      in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);\n      in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;\n      pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;\n      iVar1 = *(int *)&unaff_s0->aFile[1].iEof;\n      iVar4 = (int)unaff_s0->aFile[1].iEof;\n      uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;\n      iVar9 = *(int *)&unaff_s0->iStartOff;\n      unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;\n      *(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;\n      *(int *)&unaff_s0->aFile[0].iEof = iVar1;\n      *(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;\n      unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;\n      *(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;\n      *(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;\n      if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" { (expression_statement "unaff_s3 = unaff_s0->pTask;" (assignment_expression "unaff_s3 = unaff_s0->pTask" identifier = (field_expression "unaff_s0->pTask" identifier -> field_identifier)) ;) (if_statement "if (unaff_s3->pThread != (SQLiteThread *)0x0) {\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }" if (parenthesized_expression "(unaff_s3->pThread != (SQLiteThread *)0x0)" ( (binary_expression "unaff_s3->pThread != (SQLiteThread *)0x0" (field_expression "unaff_s3->pThread" identifier -> field_identifier) != (cast_expression "(SQLiteThread *)0x0" ( (type_descriptor "SQLiteThread *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pPVar10 = (PmaReader *)&pRet;\n        pRet = (void *)0x1;\n        sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);\n        unaff_s3->bDone = 0;\n        unaff_s3->pThread = (SQLiteThread *)0x0;\n        pvVar2 = pRet;\n        if (pRet != (void *)0x0) goto LAB_00059064;\n      }" { (expression_statement "pPVar10 = (PmaReader *)&pRet;" (assignment_expression "pPVar10 = (PmaReader *)&pRet" identifier = (cast_expression "(PmaReader *)&pRet" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRet" & identifier))) ;) (expression_statement "pRet = (void *)0x1;" (assignment_expression "pRet = (void *)0x1" identifier = (cast_expression "(void *)0x1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10);" (call_expression "sqlite3ThreadJoin(unaff_s3->pThread,(void **)pPVar10)" identifier (argument_list "(unaff_s3->pThread,(void **)pPVar10)" ( (field_expression "unaff_s3->pThread" identifier -> field_identifier) , (cast_expression "(void **)pPVar10" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) ))) ;) (expression_statement "unaff_s3->bDone = 0;" (assignment_expression "unaff_s3->bDone = 0" (field_expression "unaff_s3->bDone" identifier -> field_identifier) = number_literal) ;) (expression_statement "unaff_s3->pThread = (SQLiteThread *)0x0;" (assignment_expression "unaff_s3->pThread = (SQLiteThread *)0x0" (field_expression "unaff_s3->pThread" identifier -> field_identifier) = (cast_expression "(SQLiteThread *)0x0" ( (type_descriptor "SQLiteThread *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pvVar2 = pRet;" (assignment_expression "pvVar2 = pRet" identifier = identifier) ;) (if_statement "if (pRet != (void *)0x0) goto LAB_00059064;" if (parenthesized_expression "(pRet != (void *)0x0)" ( (binary_expression "pRet != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00059064;" goto statement_identifier ;)) })) (expression_statement "in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4);" (assignment_expression "in_a3 = *(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4)" identifier = (pointer_expression "*(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4)" * (cast_expression "(PmaReader **)((int)&unaff_s0->aFile[0].iEof + 4)" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&unaff_s0->aFile[0].iEof + 4)" ( (binary_expression "(int)&unaff_s0->aFile[0].iEof + 4" (cast_expression "(int)&unaff_s0->aFile[0].iEof" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) ))))) ;) (expression_statement "in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof;" (assignment_expression "in_a2 = *(IncrMerger **)&unaff_s0->aFile[0].iEof" identifier = (pointer_expression "*(IncrMerger **)&unaff_s0->aFile[0].iEof" * (cast_expression "(IncrMerger **)&unaff_s0->aFile[0].iEof" ( (type_descriptor "IncrMerger **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd;" (assignment_expression "pPVar10 = (PmaReader *)unaff_s0->aFile[0].pFd" identifier = (cast_expression "(PmaReader *)unaff_s0->aFile[0].pFd" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s0->aFile[0].pFd" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "iVar1 = *(int *)&unaff_s0->aFile[1].iEof;" (assignment_expression "iVar1 = *(int *)&unaff_s0->aFile[1].iEof" identifier = (pointer_expression "*(int *)&unaff_s0->aFile[1].iEof" * (cast_expression "(int *)&unaff_s0->aFile[1].iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s0->aFile[1].iEof" & (field_expression "unaff_s0->aFile[1].iEof" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "iVar4 = (int)unaff_s0->aFile[1].iEof;" (assignment_expression "iVar4 = (int)unaff_s0->aFile[1].iEof" identifier = (cast_expression "(int)unaff_s0->aFile[1].iEof" ( (type_descriptor "int" primitive_type) ) (field_expression "unaff_s0->aFile[1].iEof" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4;" (assignment_expression "uVar13 = *(undefined4 *)&unaff_s0->aFile[1].field_0x4" identifier = (pointer_expression "*(undefined4 *)&unaff_s0->aFile[1].field_0x4" * (cast_expression "(undefined4 *)&unaff_s0->aFile[1].field_0x4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s0->aFile[1].field_0x4" & (field_expression "unaff_s0->aFile[1].field_0x4" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "iVar9 = *(int *)&unaff_s0->iStartOff;" (assignment_expression "iVar9 = *(int *)&unaff_s0->iStartOff" identifier = (pointer_expression "*(int *)&unaff_s0->iStartOff" * (cast_expression "(int *)&unaff_s0->iStartOff" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s0->iStartOff" & (field_expression "unaff_s0->iStartOff" identifier -> field_identifier))))) ;) (expression_statement "unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd;" (assignment_expression "unaff_s0->aFile[0].pFd = unaff_s0->aFile[1].pFd" (field_expression "unaff_s0->aFile[0].pFd" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (field_expression "unaff_s0->aFile[1].pFd" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "*(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13;" (assignment_expression "*(undefined4 *)&unaff_s0->aFile[0].field_0x4 = uVar13" (pointer_expression "*(undefined4 *)&unaff_s0->aFile[0].field_0x4" * (cast_expression "(undefined4 *)&unaff_s0->aFile[0].field_0x4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s0->aFile[0].field_0x4" & (field_expression "unaff_s0->aFile[0].field_0x4" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)&unaff_s0->aFile[0].iEof = iVar1;" (assignment_expression "*(int *)&unaff_s0->aFile[0].iEof = iVar1" (pointer_expression "*(int *)&unaff_s0->aFile[0].iEof" * (cast_expression "(int *)&unaff_s0->aFile[0].iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4;" (assignment_expression "*(int *)((int)&unaff_s0->aFile[0].iEof + 4) = iVar4" (pointer_expression "*(int *)((int)&unaff_s0->aFile[0].iEof + 4)" * (cast_expression "(int *)((int)&unaff_s0->aFile[0].iEof + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s0->aFile[0].iEof + 4)" ( (binary_expression "(int)&unaff_s0->aFile[0].iEof + 4" (cast_expression "(int)&unaff_s0->aFile[0].iEof" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10;" (assignment_expression "unaff_s0->aFile[1].pFd = (sqlite3_file *)pPVar10" (field_expression "unaff_s0->aFile[1].pFd" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(sqlite3_file *)pPVar10" ( (type_descriptor "sqlite3_file *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3;" (assignment_expression "*(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4) = in_a3" (pointer_expression "*(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4)" * (cast_expression "(PmaReader **)((int)&unaff_s0->aFile[1].iEof + 4)" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)&unaff_s0->aFile[1].iEof + 4)" ( (binary_expression "(int)&unaff_s0->aFile[1].iEof + 4" (cast_expression "(int)&unaff_s0->aFile[1].iEof" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s0->aFile[1].iEof" & (field_expression "unaff_s0->aFile[1].iEof" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2;" (assignment_expression "*(IncrMerger **)&unaff_s0->aFile[1].iEof = in_a2" (pointer_expression "*(IncrMerger **)&unaff_s0->aFile[1].iEof" * (cast_expression "(IncrMerger **)&unaff_s0->aFile[1].iEof" ( (type_descriptor "IncrMerger **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&unaff_s0->aFile[1].iEof" & (field_expression "unaff_s0->aFile[1].iEof" (subscript_expression "unaff_s0->aFile[1]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) = identifier) ;) (if_statement "if ((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)) {\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }\n      else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" if (parenthesized_expression "((iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff))" ( (binary_expression "(iVar1 == iVar9) && (iVar4 == (int)unaff_s0->iStartOff)" (parenthesized_expression "(iVar1 == iVar9)" ( (binary_expression "iVar1 == iVar9" identifier == identifier) )) && (parenthesized_expression "(iVar4 == (int)unaff_s0->iStartOff)" ( (binary_expression "iVar4 == (int)unaff_s0->iStartOff" identifier == (cast_expression "(int)unaff_s0->iStartOff" ( (type_descriptor "int" primitive_type) ) (field_expression "unaff_s0->iStartOff" identifier -> field_identifier))) ))) )) (compound_statement "{\n        pvVar2 = (void *)0x0;\n        unaff_s0->bEof = 1;\n      }" { (expression_statement "pvVar2 = (void *)0x0;" (assignment_expression "pvVar2 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0->bEof = 1;" (assignment_expression "unaff_s0->bEof = 1" (field_expression "unaff_s0->bEof" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" else (compound_statement "{\n        pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);\n        in_a2 = unaff_s0;\n        pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);\nLAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" { (expression_statement "pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8);" (assignment_expression "pPVar10 = (PmaReader *)(PTR_LAB_000f5300 + -0x6aa8)" identifier = (cast_expression "(PmaReader *)(PTR_LAB_000f5300 + -0x6aa8)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f5300 + -0x6aa8)" ( (binary_expression "PTR_LAB_000f5300 + -0x6aa8" identifier + number_literal) )))) ;) (expression_statement "in_a2 = unaff_s0;" (assignment_expression "in_a2 = unaff_s0" identifier = identifier) ;) (expression_statement "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask);" (assignment_expression "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask)" identifier = (cast_expression "(void *)(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))(unaff_s0->pTask)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5930)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5930)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x5930)" ( (binary_expression "PTR_LAB_000f52ec + 0x5930" identifier + number_literal) )))) )) (argument_list "(unaff_s0->pTask)" ( (field_expression "unaff_s0->pTask" identifier -> field_identifier) ))))) ;) (labeled_statement "LAB_00058f48:\n        if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" statement_identifier : (if_statement "if (pvVar2 == (void *)0x0) {\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" if (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" { (if_statement "if (unaff_s0->bEof == 0) {\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" if (parenthesized_expression "(unaff_s0->bEof == 0)" ( (binary_expression "unaff_s0->bEof == 0" (field_expression "unaff_s0->bEof" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n            in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;\n            in_a2 = (IncrMerger *)unaff_s0->aFile;\n            pPVar10 = pReadr;\n            pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);\n            if (pvVar2 != (void *)0x0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" { (expression_statement "in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof;" (assignment_expression "in_a3 = (PmaReader *)&unaff_s0->aFile[0].iEof" identifier = (cast_expression "(PmaReader *)&unaff_s0->aFile[0].iEof" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s0->aFile[0].iEof" & (field_expression "unaff_s0->aFile[0].iEof" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) ;) (expression_statement "in_a2 = (IncrMerger *)unaff_s0->aFile;" (assignment_expression "in_a2 = (IncrMerger *)unaff_s0->aFile" identifier = (cast_expression "(IncrMerger *)unaff_s0->aFile" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s0->aFile" identifier -> field_identifier))) ;) (expression_statement "pPVar10 = pReadr;" (assignment_expression "pPVar10 = pReadr" identifier = identifier) ;) (expression_statement "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask);" (assignment_expression "pvVar2 = (void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask)" identifier = (cast_expression "(void *)(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))(unaff_s0->pTask)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x6530)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x6530)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x6530)" ( (binary_expression "PTR_LAB_000f52ec + 0x6530" identifier + number_literal) )))) )) (argument_list "(unaff_s0->pTask)" ( (field_expression "unaff_s0->pTask" identifier -> field_identifier) ))))) ;) (if_statement "if (pvVar2 != (void *)0x0) goto LAB_0005907c;" if (parenthesized_expression "(pvVar2 != (void *)0x0)" ( (binary_expression "pvVar2 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0005907c;" goto statement_identifier ;)) (goto_statement "goto LAB_00058f90;" goto statement_identifier ;) })) (goto_statement "goto LAB_0005905c;" goto statement_identifier ;) }))) }))) }))) })) (labeled_statement "LAB_00059064:\n  vdbePmaReaderClear(pReadr);" statement_identifier : (expression_statement "vdbePmaReaderClear(pReadr);" (call_expression "vdbePmaReaderClear(pReadr)" identifier (argument_list "(pReadr)" ( identifier ))) ;)) (labeled_statement "LAB_0005907c:\n  if (pPStack_1c == *(PmaReader **)puVar22) {\n    return (int)pvVar2;\n  }" statement_identifier : (if_statement "if (pPStack_1c == *(PmaReader **)puVar22) {\n    return (int)pvVar2;\n  }" if (parenthesized_expression "(pPStack_1c == *(PmaReader **)puVar22)" ( (binary_expression "pPStack_1c == *(PmaReader **)puVar22" identifier == (pointer_expression "*(PmaReader **)puVar22" * (cast_expression "(PmaReader **)puVar22" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return (int)pvVar2;\n  }" { (return_statement "return (int)pvVar2;" return (cast_expression "(int)pvVar2" ( (type_descriptor "int" primitive_type) ) identifier) ;) }))) (expression_statement "pPVar8 = pPStack_1c;" (assignment_expression "pPVar8 = pPStack_1c" identifier = identifier) ;) (expression_statement "puVar20 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar20 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_90 = puVar20 + 0xa41c8;" (assignment_expression "puStack_90 = puVar20 + 0xa41c8" identifier = (binary_expression "puVar20 + 0xa41c8" identifier + number_literal)) ;) (expression_statement "puStack_78 = puVar22;" (assignment_expression "puStack_78 = puVar22" identifier = identifier) ;) (expression_statement "piVar18 = *(int **)(puVar20 + 0x9c490);" (assignment_expression "piVar18 = *(int **)(puVar20 + 0x9c490)" identifier = (pointer_expression "*(int **)(puVar20 + 0x9c490)" * (cast_expression "(int **)(puVar20 + 0x9c490)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + 0x9c490)" ( (binary_expression "puVar20 + 0x9c490" identifier + number_literal) ))))) ;) (expression_statement "uVar17 = *(uint *)(*(int *)&pPVar8->iEof + 4);" (assignment_expression "uVar17 = *(uint *)(*(int *)&pPVar8->iEof + 4)" identifier = (pointer_expression "*(uint *)(*(int *)&pPVar8->iEof + 4)" * (cast_expression "(uint *)(*(int *)&pPVar8->iEof + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&pPVar8->iEof + 4)" ( (binary_expression "*(int *)&pPVar8->iEof + 4" (pointer_expression "*(int *)&pPVar8->iEof" * (cast_expression "(int *)&pPVar8->iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPVar8->iEof" & (field_expression "pPVar8->iEof" identifier -> field_identifier)))) + number_literal) ))))) ;) (expression_statement "iStack_84 = *piVar18;" (assignment_expression "iStack_84 = *piVar18" identifier = (pointer_expression "*piVar18" * identifier)) ;) (expression_statement "iVar1 = *(int *)((int)&pPVar8->iReadOff + 4);" (assignment_expression "iVar1 = *(int *)((int)&pPVar8->iReadOff + 4)" identifier = (pointer_expression "*(int *)((int)&pPVar8->iReadOff + 4)" * (cast_expression "(int *)((int)&pPVar8->iReadOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar8->iReadOff + 4)" ( (binary_expression "(int)&pPVar8->iReadOff + 4" (cast_expression "(int)&pPVar8->iReadOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar8->iReadOff" & (field_expression "pPVar8->iReadOff" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pPVar12 = pPVar10;" (assignment_expression "pPVar12 = pPVar10" identifier = identifier) ;) (expression_statement "pIStack_80 = unaff_s0;" (assignment_expression "pIStack_80 = unaff_s0" identifier = identifier) ;) (expression_statement "pPStack_7c = pReadr;" (assignment_expression "pPStack_7c = pReadr" identifier = identifier) ;) (expression_statement "pSStack_74 = unaff_s3;" (assignment_expression "pSStack_74 = unaff_s3" identifier = identifier) ;) (expression_statement "uVar3 = vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38));" (assignment_expression "uVar3 = vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38))" identifier = (call_expression "vdbePmaReaderNext((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38))" identifier (argument_list "((PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38))" ( (cast_expression "(PmaReader *)((int)pPVar8->iEof + uVar17 * 0x38)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar8->iEof + uVar17 * 0x38)" ( (binary_expression "(int)pPVar8->iEof + uVar17 * 0x38" (cast_expression "(int)pPVar8->iEof" ( (type_descriptor "int" primitive_type) ) (field_expression "pPVar8->iEof" identifier -> field_identifier)) + (binary_expression "uVar17 * 0x38" identifier * number_literal)) ))) )))) ;) (expression_statement "puVar22 = puStack_90;" (assignment_expression "puVar22 = puStack_90" identifier = identifier) ;) (if_statement "if (uVar3 == 0) {\n    uVar11 = uVar17 & 0xfffe;\n    uVar3 = uVar17 | 1;\n    iVar4 = (int)pPVar8->iEof;\n    uStack_88 = 0;\n    uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;\n    unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);\n    pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);\n    if ((int)uVar17 < 1) {\n      iVar9 = *(int *)&pPVar8->iEof;\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }\nLAB_000592a8:\n    pPVar12 = *(PmaReader **)(iVar1 + 0xc);\n    *(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);\n    uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar11 = uVar17 & 0xfffe;\n    uVar3 = uVar17 | 1;\n    iVar4 = (int)pPVar8->iEof;\n    uStack_88 = 0;\n    uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;\n    unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);\n    pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);\n    if ((int)uVar17 < 1) {\n      iVar9 = *(int *)&pPVar8->iEof;\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }\nLAB_000592a8:\n    pPVar12 = *(PmaReader **)(iVar1 + 0xc);\n    *(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);\n    uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);\n  }" { (expression_statement "uVar11 = uVar17 & 0xfffe;" (assignment_expression "uVar11 = uVar17 & 0xfffe" identifier = (binary_expression "uVar17 & 0xfffe" identifier & number_literal)) ;) (expression_statement "uVar3 = uVar17 | 1;" (assignment_expression "uVar3 = uVar17 | 1" identifier = (binary_expression "uVar17 | 1" identifier | number_literal)) ;) (expression_statement "iVar4 = (int)pPVar8->iEof;" (assignment_expression "iVar4 = (int)pPVar8->iEof" identifier = (cast_expression "(int)pPVar8->iEof" ( (type_descriptor "int" primitive_type) ) (field_expression "pPVar8->iEof" identifier -> field_identifier))) ;) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2;" (assignment_expression "uVar17 = (int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2" identifier = (binary_expression "(int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17) / 2" (cast_expression "(int)((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17)" ( (binary_expression "(int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion + uVar17" (cast_expression "(int)&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion" & (field_expression "(*(sqlite3_io_methods **)&pPVar8->iReadOff)->iVersion" (parenthesized_expression "(*(sqlite3_io_methods **)&pPVar8->iReadOff)" ( (pointer_expression "*(sqlite3_io_methods **)&pPVar8->iReadOff" * (cast_expression "(sqlite3_io_methods **)&pPVar8->iReadOff" ( (type_descriptor "sqlite3_io_methods **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pPVar8->iReadOff" & (field_expression "pPVar8->iReadOff" identifier -> field_identifier)))) )) -> field_identifier))) + identifier) ))) / number_literal)) ;) (expression_statement "unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38);" (assignment_expression "unaff_s0 = (IncrMerger *)(iVar4 + uVar11 * 0x38)" identifier = (cast_expression "(IncrMerger *)(iVar4 + uVar11 * 0x38)" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar11 * 0x38)" ( (binary_expression "iVar4 + uVar11 * 0x38" identifier + (binary_expression "uVar11 * 0x38" identifier * number_literal)) )))) ;) (expression_statement "pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38);" (assignment_expression "pReadr = (PmaReader *)(iVar4 + uVar3 * 0x38)" identifier = (cast_expression "(PmaReader *)(iVar4 + uVar3 * 0x38)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + uVar3 * 0x38)" ( (binary_expression "iVar4 + uVar3 * 0x38" identifier + (binary_expression "uVar3 * 0x38" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar17 < 1) {\n      iVar9 = *(int *)&pPVar8->iEof;\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }" if (parenthesized_expression "((int)uVar17 < 1)" ( (binary_expression "(int)uVar17 < 1" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      iVar9 = *(int *)&pPVar8->iEof;\n    }" { (expression_statement "iVar9 = *(int *)&pPVar8->iEof;" (assignment_expression "iVar9 = *(int *)&pPVar8->iEof" identifier = (pointer_expression "*(int *)&pPVar8->iEof" * (cast_expression "(int *)&pPVar8->iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPVar8->iEof" & (field_expression "pPVar8->iEof" identifier -> field_identifier))))) ;) }) (else_clause "else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }" else (compound_statement "{\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (SortSubtask *)0xb6db6db7;\n      uVar3 = uVar17;\n      do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);\n    }" { (expression_statement "unaff_s8 = &uStack_88;" (assignment_expression "unaff_s8 = &uStack_88" identifier = (pointer_expression "&uStack_88" & identifier)) ;) (expression_statement "unaff_s3 = (SortSubtask *)0xb6db6db7;" (assignment_expression "unaff_s3 = (SortSubtask *)0xb6db6db7" identifier = (cast_expression "(SortSubtask *)0xb6db6db7" ( (type_descriptor "SortSubtask *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar3 = uVar17;" (assignment_expression "uVar3 = uVar17" identifier = identifier) ;) (do_statement "do {\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      } while (uVar17 != 0);" do (compound_statement "{\n        while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }\n        iVar9 = *(int *)&pPVar8->iEof;\n        in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n        in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);\n        unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n        uVar3 = uVar17;\n      }" { (while_statement "while (uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0) {\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }" while (parenthesized_expression "(uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0)" ( (comma_expression "uVar17 = (int)uVar3 >> 1, unaff_s0->bUseThread != 0" (assignment_expression "uVar17 = (int)uVar3 >> 1" identifier = (binary_expression "(int)uVar3 >> 1" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) , (binary_expression "unaff_s0->bUseThread != 0" (field_expression "unaff_s0->bUseThread" identifier -> field_identifier) != number_literal)) )) (compound_statement "{\n          if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }\n          iVar9 = *(int *)&pPVar8->iEof;\n          in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);\n          in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);\n          uStack_88 = 0;\n          pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);\n          uVar3 = uVar17;\n          if (uVar17 == 0) goto LAB_000592a8;\n        }" { (if_statement "if (((IncrMerger *)pReadr)->bUseThread != 0) {\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }" if (parenthesized_expression "(((IncrMerger *)pReadr)->bUseThread != 0)" ( (binary_expression "((IncrMerger *)pReadr)->bUseThread != 0" (field_expression "((IncrMerger *)pReadr)->bUseThread" (parenthesized_expression "((IncrMerger *)pReadr)" ( (cast_expression "(IncrMerger *)pReadr" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) != number_literal) )) (compound_statement "{\n            iStack_94 = ((IncrMerger *)pReadr)->bEof;\n            in_a3 = (PmaReader *)unaff_s0->bEof;\n            psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;\n            iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);\n            puVar22 = puStack_90;\n            if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            iVar4 = (int)pPVar8->iEof;\n          }" { (expression_statement "iStack_94 = ((IncrMerger *)pReadr)->bEof;" (assignment_expression "iStack_94 = ((IncrMerger *)pReadr)->bEof" identifier = (field_expression "((IncrMerger *)pReadr)->bEof" (parenthesized_expression "((IncrMerger *)pReadr)" ( (cast_expression "(IncrMerger *)pReadr" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) ;) (expression_statement "in_a3 = (PmaReader *)unaff_s0->bEof;" (assignment_expression "in_a3 = (PmaReader *)unaff_s0->bEof" identifier = (cast_expression "(PmaReader *)unaff_s0->bEof" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s0->bEof" identifier -> field_identifier))) ;) (expression_statement "psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd;" (assignment_expression "psStack_98 = ((IncrMerger *)pReadr)->aFile[0].pFd" identifier = (field_expression "((IncrMerger *)pReadr)->aFile[0].pFd" (subscript_expression "((IncrMerger *)pReadr)->aFile[0]" (field_expression "((IncrMerger *)pReadr)->aFile" (parenthesized_expression "((IncrMerger *)pReadr)" ( (cast_expression "(IncrMerger *)pReadr" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd);" (assignment_expression "iVar4 = (**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd)" identifier = (call_expression "(**(code **)(iVar1 + 0x20))(iVar1,unaff_s8,unaff_s0->aFile[0].pFd)" (parenthesized_expression "(**(code **)(iVar1 + 0x20))" ( (pointer_expression "**(code **)(iVar1 + 0x20)" * (pointer_expression "*(code **)(iVar1 + 0x20)" * (cast_expression "(code **)(iVar1 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0x20)" ( (binary_expression "iVar1 + 0x20" identifier + number_literal) ))))) )) (argument_list "(iVar1,unaff_s8,unaff_s0->aFile[0].pFd)" ( identifier , identifier , (field_expression "unaff_s0->aFile[0].pFd" (subscript_expression "unaff_s0->aFile[0]" (field_expression "unaff_s0->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier) )))) ;) (expression_statement "puVar22 = puStack_90;" (assignment_expression "puVar22 = puStack_90" identifier = identifier) ;) (if_statement "if ((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))) {\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" if (parenthesized_expression "((-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0))))" ( (binary_expression "(-1 < iVar4) && ((iVar4 != 0 || (pReadr <= unaff_s0)))" (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) && (parenthesized_expression "((iVar4 != 0 || (pReadr <= unaff_s0)))" ( (parenthesized_expression "(iVar4 != 0 || (pReadr <= unaff_s0))" ( (binary_expression "iVar4 != 0 || (pReadr <= unaff_s0)" (binary_expression "iVar4 != 0" identifier != number_literal) || (parenthesized_expression "(pReadr <= unaff_s0)" ( (binary_expression "pReadr <= unaff_s0" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n              iVar4 = (int)pPVar8->iEof;\n              if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" { (expression_statement "iVar4 = (int)pPVar8->iEof;" (assignment_expression "iVar4 = (int)pPVar8->iEof" identifier = (cast_expression "(int)pPVar8->iEof" ( (type_descriptor "int" primitive_type) ) (field_expression "pPVar8->iEof" identifier -> field_identifier))) ;) (if_statement "if (unaff_s0->bUseThread != 0) {\n                uStack_88 = 0;\n              }" if (parenthesized_expression "(unaff_s0->bUseThread != 0)" ( (binary_expression "unaff_s0->bUseThread != 0" (field_expression "unaff_s0->bUseThread" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                uStack_88 = 0;\n              }" { (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) })) (break_statement "break;" break ;) })) (expression_statement "iVar4 = (int)pPVar8->iEof;" (assignment_expression "iVar4 = (int)pPVar8->iEof" identifier = (cast_expression "(int)pPVar8->iEof" ( (type_descriptor "int" primitive_type) ) (field_expression "pPVar8->iEof" identifier -> field_identifier))) ;) })) (expression_statement "iVar9 = *(int *)&pPVar8->iEof;" (assignment_expression "iVar9 = *(int *)&pPVar8->iEof" identifier = (pointer_expression "*(int *)&pPVar8->iEof" * (cast_expression "(int *)&pPVar8->iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPVar8->iEof" & (field_expression "pPVar8->iEof" identifier -> field_identifier))))) ;) (expression_statement "in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);" (assignment_expression "in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4)" identifier = (cast_expression "(IncrMerger *)(iVar9 + uVar3 * 4)" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar3 * 4)" ( (binary_expression "iVar9 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249);" (assignment_expression "in_a2->pTask = (SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249)" (field_expression "in_a2->pTask" identifier -> field_identifier) = (cast_expression "(SortSubtask *)(((int)unaff_s0 - iVar4 >> 3) * -0x49249249)" ( (type_descriptor "SortSubtask *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)unaff_s0 - iVar4 >> 3) * -0x49249249)" ( (binary_expression "((int)unaff_s0 - iVar4 >> 3) * -0x49249249" (parenthesized_expression "((int)unaff_s0 - iVar4 >> 3)" ( (binary_expression "(int)unaff_s0 - iVar4 >> 3" (binary_expression "(int)unaff_s0 - iVar4" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal) )) * number_literal) )))) ;) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) (expression_statement "pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);" (assignment_expression "pReadr = (PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38)" identifier = (cast_expression "(PmaReader *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38)" ( (binary_expression "iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38" identifier + (binary_expression "*(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(iVar9 + (uVar3 ^ 1) * 4)" * (cast_expression "(int *)(iVar9 + (uVar3 ^ 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uVar3 ^ 1) * 4)" ( (binary_expression "iVar9 + (uVar3 ^ 1) * 4" identifier + (binary_expression "(uVar3 ^ 1) * 4" (parenthesized_expression "(uVar3 ^ 1)" ( (binary_expression "uVar3 ^ 1" identifier ^ number_literal) )) * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "uVar3 = uVar17;" (assignment_expression "uVar3 = uVar17" identifier = identifier) ;) (if_statement "if (uVar17 == 0) goto LAB_000592a8;" if (parenthesized_expression "(uVar17 == 0)" ( (binary_expression "uVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000592a8;" goto statement_identifier ;)) })) (expression_statement "iVar9 = *(int *)&pPVar8->iEof;" (assignment_expression "iVar9 = *(int *)&pPVar8->iEof" identifier = (pointer_expression "*(int *)&pPVar8->iEof" * (cast_expression "(int *)&pPVar8->iEof" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pPVar8->iEof" & (field_expression "pPVar8->iEof" identifier -> field_identifier))))) ;) (expression_statement "in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4);" (assignment_expression "in_a2 = (IncrMerger *)(iVar9 + uVar3 * 4)" identifier = (cast_expression "(IncrMerger *)(iVar9 + uVar3 * 4)" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar3 * 4)" ( (binary_expression "iVar9 + uVar3 * 4" identifier + (binary_expression "uVar3 * 4" identifier * number_literal)) )))) ;) (expression_statement "in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249);" (assignment_expression "in_a2->pTask = (SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249)" (field_expression "in_a2->pTask" identifier -> field_identifier) = (cast_expression "(SortSubtask *)(((int)pReadr - iVar4 >> 3) * -0x49249249)" ( (type_descriptor "SortSubtask *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)pReadr - iVar4 >> 3) * -0x49249249)" ( (binary_expression "((int)pReadr - iVar4 >> 3) * -0x49249249" (parenthesized_expression "((int)pReadr - iVar4 >> 3)" ( (binary_expression "(int)pReadr - iVar4 >> 3" (binary_expression "(int)pReadr - iVar4" (cast_expression "(int)pReadr" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) >> number_literal) )) * number_literal) )))) ;) (expression_statement "unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38);" (assignment_expression "unaff_s0 = (IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38)" identifier = (cast_expression "(IncrMerger *)(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38)" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38)" ( (binary_expression "iVar4 + *(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38" identifier + (binary_expression "*(int *)(iVar9 + (uVar3 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(iVar9 + (uVar3 ^ 1) * 4)" * (cast_expression "(int *)(iVar9 + (uVar3 ^ 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uVar3 ^ 1) * 4)" ( (binary_expression "iVar9 + (uVar3 ^ 1) * 4" identifier + (binary_expression "(uVar3 ^ 1) * 4" (parenthesized_expression "(uVar3 ^ 1)" ( (binary_expression "uVar3 ^ 1" identifier ^ number_literal) )) * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "uVar3 = uVar17;" (assignment_expression "uVar3 = uVar17" identifier = identifier) ;) }) while (parenthesized_expression "(uVar17 != 0)" ( (binary_expression "uVar17 != 0" identifier != number_literal) )) ;) }))) (labeled_statement "LAB_000592a8:\n    pPVar12 = *(PmaReader **)(iVar1 + 0xc);" statement_identifier : (expression_statement "pPVar12 = *(PmaReader **)(iVar1 + 0xc);" (assignment_expression "pPVar12 = *(PmaReader **)(iVar1 + 0xc)" identifier = (pointer_expression "*(PmaReader **)(iVar1 + 0xc)" * (cast_expression "(PmaReader **)(iVar1 + 0xc)" ( (type_descriptor "PmaReader **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) ))))) ;)) (expression_statement "*(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0);" (assignment_expression "*(sqlite3_io_methods **)&pPVar10->iReadOff =\n         (sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0)" (pointer_expression "*(sqlite3_io_methods **)&pPVar10->iReadOff" * (cast_expression "(sqlite3_io_methods **)&pPVar10->iReadOff" ( (type_descriptor "sqlite3_io_methods **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pPVar10->iReadOff" & (field_expression "pPVar10->iReadOff" identifier -> field_identifier)))) = (cast_expression "(sqlite3_io_methods *)(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0)" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0)" ( (binary_expression "*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18) == 0" (pointer_expression "*(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18)" * (cast_expression "(int *)(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18)" ( (binary_expression "iVar4 + *(int *)(iVar9 + 4) * 0x38 + 0x18" (binary_expression "iVar4 + *(int *)(iVar9 + 4) * 0x38" identifier + (binary_expression "*(int *)(iVar9 + 4) * 0x38" (pointer_expression "*(int *)(iVar9 + 4)" * (cast_expression "(int *)(iVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) * number_literal)) + number_literal) )))) == number_literal) ))))) ;) (expression_statement "uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3);" (assignment_expression "uVar3 = (uint)*(byte *)((int)&pPVar12->iEof + 3)" identifier = (binary_expression "(uint)*(byte *)((int)&pPVar12->iEof + 3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)&pPVar12->iEof + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar12->iEof + 3)" ( (binary_expression "(int)&pPVar12->iEof + 3" (cast_expression "(int)&pPVar12->iEof" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar12->iEof" & (field_expression "pPVar12->iEof" identifier -> field_identifier))) + number_literal) ))))) ;) })) (if_statement "if (iStack_84 == *piVar18) {\n    return uVar3;\n  }" if (parenthesized_expression "(iStack_84 == *piVar18)" ( (binary_expression "iStack_84 == *piVar18" identifier == (pointer_expression "*piVar18" * identifier)) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar21 = *(code **)(puVar22 + -0x7d60);" (assignment_expression "pcVar21 = *(code **)(puVar22 + -0x7d60)" identifier = (pointer_expression "*(code **)(puVar22 + -0x7d60)" * (cast_expression "(code **)(puVar22 + -0x7d60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar22 + -0x7d60)" ( (binary_expression "puVar22 + -0x7d60" identifier + number_literal) ))))) ;) (expression_statement "pcVar24 = vdbeMergeEngineLevel0;" (assignment_expression "pcVar24 = vdbeMergeEngineLevel0" identifier = identifier) ;) (expression_statement "iVar4 = iStack_84;" (assignment_expression "iVar4 = iStack_84" identifier = identifier) ;) (expression_statement "(*pcVar21)();" (call_expression "(*pcVar21)()" (parenthesized_expression "(*pcVar21)" ( (pointer_expression "*pcVar21" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = *(int **)(pcVar21 + 0x9c248);" (assignment_expression "piVar5 = *(int **)(pcVar21 + 0x9c248)" identifier = (pointer_expression "*(int **)(pcVar21 + 0x9c248)" * (cast_expression "(int **)(pcVar21 + 0x9c248)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x9c248)" ( (binary_expression "pcVar21 + 0x9c248" identifier + number_literal) ))))) ;) (expression_statement "pMVar15 = in_a2->pMerger;" (assignment_expression "pMVar15 = in_a2->pMerger" identifier = (field_expression "in_a2->pMerger" identifier -> field_identifier)) ;) (expression_statement "pSVar14 = in_a2->pTask;" (assignment_expression "pSVar14 = in_a2->pTask" identifier = (field_expression "in_a2->pTask" identifier -> field_identifier)) ;) (expression_statement "iStack_d4 = *piVar5;" (assignment_expression "iStack_d4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "pIStack_d0 = unaff_s0;" (assignment_expression "pIStack_d0 = unaff_s0" identifier = identifier) ;) (expression_statement "pIStack_cc = (IncrMerger *)pReadr;" (assignment_expression "pIStack_cc = (IncrMerger *)pReadr" identifier = (cast_expression "(IncrMerger *)pReadr" ( (type_descriptor "IncrMerger *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uStack_c8 = uVar17;" (assignment_expression "uStack_c8 = uVar17" identifier = identifier) ;) (expression_statement "pSStack_c4 = unaff_s3;" (assignment_expression "pSStack_c4 = unaff_s3" identifier = identifier) ;) (expression_statement "piStack_c0 = piVar18;" (assignment_expression "piStack_c0 = piVar18" identifier = identifier) ;) (expression_statement "pPStack_bc = pPVar10;" (assignment_expression "pPStack_bc = pPVar10" identifier = identifier) ;) (expression_statement "pPStack_b8 = pPVar8;" (assignment_expression "pPStack_b8 = pPVar8" identifier = identifier) ;) (expression_statement "iStack_b4 = iVar1;" (assignment_expression "iStack_b4 = iVar1" identifier = identifier) ;) (expression_statement "puStack_b0 = unaff_s8;" (assignment_expression "puStack_b0 = unaff_s8" identifier = identifier) ;) (expression_statement "pcStack_ac = pcVar24;" (assignment_expression "pcStack_ac = pcVar24" identifier = identifier) ;) (expression_statement "pMerger = (sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12);" (assignment_expression "pMerger = (sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12)" identifier = (cast_expression "(sqlite3_io_methods *)(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12)" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))(pPVar12)" (parenthesized_expression "(*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68))" ( (pointer_expression "*(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68)" * (cast_expression "(code *)(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar21 + 0x9bfcc) + 0x4d68)" ( (binary_expression "*(int *)(pcVar21 + 0x9bfcc) + 0x4d68" (pointer_expression "*(int *)(pcVar21 + 0x9bfcc)" * (cast_expression "(int *)(pcVar21 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x9bfcc)" ( (binary_expression "pcVar21 + 0x9bfcc" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pPVar12)" ( identifier ))))) ;) (expression_statement "*(sqlite3_io_methods **)&in_a3->iReadOff = pMerger;" (assignment_expression "*(sqlite3_io_methods **)&in_a3->iReadOff = pMerger" (pointer_expression "*(sqlite3_io_methods **)&in_a3->iReadOff" * (cast_expression "(sqlite3_io_methods **)&in_a3->iReadOff" ( (type_descriptor "sqlite3_io_methods **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&in_a3->iReadOff" & (field_expression "in_a3->iReadOff" identifier -> field_identifier)))) = identifier) ;) (if_statement "if (pMerger == (sqlite3_io_methods *)0x0) {\n    iVar1 = 7;\n  }\n  else {\n    iVar1 = 0;\n    if ((int)pPVar12 < 1) goto LAB_00059470;\n    iVar19 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar16 = 0;\n    pPVar10 = (PmaReader *)0x0;\n    iVar9 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar6 = *(int *)(pcVar21 + 0x9bfe0);\n    do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);\n  }" if (parenthesized_expression "(pMerger == (sqlite3_io_methods *)0x0)" ( (binary_expression "pMerger == (sqlite3_io_methods *)0x0" identifier == (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar1 = 7;\n  }" { (expression_statement "iVar1 = 7;" (assignment_expression "iVar1 = 7" identifier = number_literal) ;) }) (else_clause "else {\n    iVar1 = 0;\n    if ((int)pPVar12 < 1) goto LAB_00059470;\n    iVar19 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar16 = 0;\n    pPVar10 = (PmaReader *)0x0;\n    iVar9 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar6 = *(int *)(pcVar21 + 0x9bfe0);\n    do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);\n  }" else (compound_statement "{\n    iVar1 = 0;\n    if ((int)pPVar12 < 1) goto LAB_00059470;\n    iVar19 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar16 = 0;\n    pPVar10 = (PmaReader *)0x0;\n    iVar9 = *(int *)(pcVar21 + 0x9bfcc);\n    iVar6 = *(int *)(pcVar21 + 0x9bfe0);\n    do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);\n  }" { (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (if_statement "if ((int)pPVar12 < 1) goto LAB_00059470;" if (parenthesized_expression "((int)pPVar12 < 1)" ( (binary_expression "(int)pPVar12 < 1" (cast_expression "(int)pPVar12" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00059470;" goto statement_identifier ;)) (expression_statement "iVar19 = *(int *)(pcVar21 + 0x9bfcc);" (assignment_expression "iVar19 = *(int *)(pcVar21 + 0x9bfcc)" identifier = (pointer_expression "*(int *)(pcVar21 + 0x9bfcc)" * (cast_expression "(int *)(pcVar21 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x9bfcc)" ( (binary_expression "pcVar21 + 0x9bfcc" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (expression_statement "pPVar10 = (PmaReader *)0x0;" (assignment_expression "pPVar10 = (PmaReader *)0x0" identifier = (cast_expression "(PmaReader *)0x0" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = *(int *)(pcVar21 + 0x9bfcc);" (assignment_expression "iVar9 = *(int *)(pcVar21 + 0x9bfcc)" identifier = (pointer_expression "*(int *)(pcVar21 + 0x9bfcc)" * (cast_expression "(int *)(pcVar21 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x9bfcc)" ( (binary_expression "pcVar21 + 0x9bfcc" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(pcVar21 + 0x9bfe0);" (assignment_expression "iVar6 = *(int *)(pcVar21 + 0x9bfe0)" identifier = (pointer_expression "*(int *)(pcVar21 + 0x9bfe0)" * (cast_expression "(int *)(pcVar21 + 0x9bfe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0x9bfe0)" ( (binary_expression "pcVar21 + 0x9bfe0" identifier + number_literal) ))))) ;) (do_statement "do {\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    } while (iVar1 == 0);" do (compound_statement "{\n      p_Var23 = pMerger->xWrite + iVar16;\n      pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);\n      iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);\n      if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);\n      uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;\n      *(uint *)(p_Var23 + 0xc) = uVar3;\n      *(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;\n      if (iVar1 != 0) goto LAB_00059430;\n      iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);\n      pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n      pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n      if (pPVar10 == pPVar12) goto LAB_00059548;\n      iVar16 = iVar16 + 0x38;\n    }" { (expression_statement "p_Var23 = pMerger->xWrite + iVar16;" (assignment_expression "p_Var23 = pMerger->xWrite + iVar16" identifier = (binary_expression "pMerger->xWrite + iVar16" (field_expression "pMerger->xWrite" identifier -> field_identifier) + identifier)) ;) (expression_statement "pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1);" (assignment_expression "pPVar10 = (PmaReader *)((int)&pPVar10->iReadOff + 1)" identifier = (cast_expression "(PmaReader *)((int)&pPVar10->iReadOff + 1)" ( (type_descriptor "PmaReader *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pPVar10->iReadOff + 1)" ( (binary_expression "(int)&pPVar10->iReadOff + 1" (cast_expression "(int)&pPVar10->iReadOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pPVar10->iReadOff" & (field_expression "pPVar10->iReadOff" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15);" (assignment_expression "iVar1 = (*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15)" identifier = (call_expression "(*(code *)(iVar19 + 0x6530))(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15)" (parenthesized_expression "(*(code *)(iVar19 + 0x6530))" ( (pointer_expression "*(code *)(iVar19 + 0x6530)" * (cast_expression "(code *)(iVar19 + 0x6530)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar19 + 0x6530)" ( (binary_expression "iVar19 + 0x6530" identifier + number_literal) )))) )) (argument_list "(iVar4,p_Var23,iVar4 + 0x28,iVar4 + 0x30,pSVar14,pMVar15)" ( identifier , identifier , (binary_expression "iVar4 + 0x28" identifier + number_literal) , (binary_expression "iVar4 + 0x30" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (iVar1 != 0) {\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);\n        pSVar14 = *(SortSubtask **)(p_Var23 + 8);\n        break;\n      }" { (labeled_statement "LAB_00059430:\n        pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);" statement_identifier : (expression_statement "pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);" (assignment_expression "pMVar15 = *(MergeEngine **)(p_Var23 + 0xc)" identifier = (pointer_expression "*(MergeEngine **)(p_Var23 + 0xc)" * (cast_expression "(MergeEngine **)(p_Var23 + 0xc)" ( (type_descriptor "MergeEngine **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var23 + 0xc)" ( (binary_expression "p_Var23 + 0xc" identifier + number_literal) ))))) ;)) (expression_statement "pSVar14 = *(SortSubtask **)(p_Var23 + 8);" (assignment_expression "pSVar14 = *(SortSubtask **)(p_Var23 + 8)" identifier = (pointer_expression "*(SortSubtask **)(p_Var23 + 8)" * (cast_expression "(SortSubtask **)(p_Var23 + 8)" ( (type_descriptor "SortSubtask **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var23 + 8)" ( (binary_expression "p_Var23 + 8" identifier + number_literal) ))))) ;) (break_statement "break;" break ;) })) (expression_statement "iStack_dc = 0;" (assignment_expression "iStack_dc = 0" identifier = number_literal) ;) (expression_statement "iStack_e0 = 0;" (assignment_expression "iStack_e0 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0);" (assignment_expression "iVar1 = (*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0)" identifier = (call_expression "(*(code *)(iVar9 + 0x61b4))(p_Var23,&iStack_e0)" (parenthesized_expression "(*(code *)(iVar9 + 0x61b4))" ( (pointer_expression "*(code *)(iVar9 + 0x61b4)" * (cast_expression "(code *)(iVar9 + 0x61b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x61b4)" ( (binary_expression "iVar9 + 0x61b4" identifier + number_literal) )))) )) (argument_list "(p_Var23,&iStack_e0)" ( identifier , (pointer_expression "&iStack_e0" & identifier) )))) ;) (expression_statement "uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc;" (assignment_expression "uVar3 = *(uint *)(p_Var23 + 4) + iStack_dc" identifier = (binary_expression "*(uint *)(p_Var23 + 4) + iStack_dc" (pointer_expression "*(uint *)(p_Var23 + 4)" * (cast_expression "(uint *)(p_Var23 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var23 + 4)" ( (binary_expression "p_Var23 + 4" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(uint *)(p_Var23 + 0xc) = uVar3;" (assignment_expression "*(uint *)(p_Var23 + 0xc) = uVar3" (pointer_expression "*(uint *)(p_Var23 + 0xc)" * (cast_expression "(uint *)(p_Var23 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var23 + 0xc)" ( (binary_expression "p_Var23 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0;" (assignment_expression "*(uint *)(p_Var23 + 8) = (uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0" (pointer_expression "*(uint *)(p_Var23 + 8)" * (cast_expression "(uint *)(p_Var23 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var23 + 8)" ( (binary_expression "p_Var23 + 8" identifier + number_literal) )))) = (binary_expression "(uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23 + iStack_e0" (binary_expression "(uint)(uVar3 < *(uint *)(p_Var23 + 4)) + *(int *)p_Var23" (call_expression "(uint)(uVar3 < *(uint *)(p_Var23 + 4))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < *(uint *)(p_Var23 + 4))" ( (binary_expression "uVar3 < *(uint *)(p_Var23 + 4)" identifier < (pointer_expression "*(uint *)(p_Var23 + 4)" * (cast_expression "(uint *)(p_Var23 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(p_Var23 + 4)" ( (binary_expression "p_Var23 + 4" identifier + number_literal) ))))) ))) + (pointer_expression "*(int *)p_Var23" * (cast_expression "(int *)p_Var23" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) + identifier)) ;) (if_statement "if (iVar1 != 0) goto LAB_00059430;" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00059430;" goto statement_identifier ;)) (expression_statement "iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23);" (assignment_expression "iVar1 = (*(code *)(iVar6 + -0x71d8))(p_Var23)" identifier = (call_expression "(*(code *)(iVar6 + -0x71d8))(p_Var23)" (parenthesized_expression "(*(code *)(iVar6 + -0x71d8))" ( (pointer_expression "*(code *)(iVar6 + -0x71d8)" * (cast_expression "(code *)(iVar6 + -0x71d8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + -0x71d8)" ( (binary_expression "iVar6 + -0x71d8" identifier + number_literal) )))) )) (argument_list "(p_Var23)" ( identifier )))) ;) (expression_statement "pMVar15 = *(MergeEngine **)(p_Var23 + 0xc);" (assignment_expression "pMVar15 = *(MergeEngine **)(p_Var23 + 0xc)" identifier = (pointer_expression "*(MergeEngine **)(p_Var23 + 0xc)" * (cast_expression "(MergeEngine **)(p_Var23 + 0xc)" ( (type_descriptor "MergeEngine **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var23 + 0xc)" ( (binary_expression "p_Var23 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "pSVar14 = *(SortSubtask **)(p_Var23 + 8);" (assignment_expression "pSVar14 = *(SortSubtask **)(p_Var23 + 8)" identifier = (pointer_expression "*(SortSubtask **)(p_Var23 + 8)" * (cast_expression "(SortSubtask **)(p_Var23 + 8)" ( (type_descriptor "SortSubtask **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(p_Var23 + 8)" ( (binary_expression "p_Var23 + 8" identifier + number_literal) ))))) ;) (if_statement "if (pPVar10 == pPVar12) goto LAB_00059548;" if (parenthesized_expression "(pPVar10 == pPVar12)" ( (binary_expression "pPVar10 == pPVar12" identifier == identifier) )) (goto_statement "goto LAB_00059548;" goto statement_identifier ;)) (expression_statement "iVar16 = iVar16 + 0x38;" (assignment_expression "iVar16 = iVar16 + 0x38" identifier = (binary_expression "iVar16 + 0x38" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) ;) }))) (do_statement "do {\n    vdbeMergeEngineFree((MergeEngine *)pMerger);\n    *(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;\nLAB_00059470:\n    do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);\n  } while( true );" do (compound_statement "{\n    vdbeMergeEngineFree((MergeEngine *)pMerger);\n    *(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;\nLAB_00059470:\n    do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);\n  }" { (expression_statement "vdbeMergeEngineFree((MergeEngine *)pMerger);" (call_expression "vdbeMergeEngineFree((MergeEngine *)pMerger)" identifier (argument_list "((MergeEngine *)pMerger)" ( (cast_expression "(MergeEngine *)pMerger" ( (type_descriptor "MergeEngine *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "*(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0;" (assignment_expression "*(sqlite3_io_methods **)&in_a3->iReadOff = (sqlite3_io_methods *)0x0" (pointer_expression "*(sqlite3_io_methods **)&in_a3->iReadOff" * (cast_expression "(sqlite3_io_methods **)&in_a3->iReadOff" ( (type_descriptor "sqlite3_io_methods **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&in_a3->iReadOff" & (field_expression "in_a3->iReadOff" identifier -> field_identifier)))) = (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00059470:\n    do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);" statement_identifier : (do_statement "do {\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    } while (iVar1 == 0);" do (compound_statement "{\n      iVar4 = *piVar5;\n      in_a2->pMerger = pMVar15;\n      in_a2->pTask = pSVar14;\n      if (iStack_d4 == iVar4) {\n        return iVar1;\n      }\n      iVar1 = (**(code **)(pcVar21 + 0x9c220))();\nLAB_00059548:\n    }" { (expression_statement "iVar4 = *piVar5;" (assignment_expression "iVar4 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "in_a2->pMerger = pMVar15;" (assignment_expression "in_a2->pMerger = pMVar15" (field_expression "in_a2->pMerger" identifier -> field_identifier) = identifier) ;) (expression_statement "in_a2->pTask = pSVar14;" (assignment_expression "in_a2->pTask = pSVar14" (field_expression "in_a2->pTask" identifier -> field_identifier) = identifier) ;) (if_statement "if (iStack_d4 == iVar4) {\n        return iVar1;\n      }" if (parenthesized_expression "(iStack_d4 == iVar4)" ( (binary_expression "iStack_d4 == iVar4" identifier == identifier) )) (compound_statement "{\n        return iVar1;\n      }" { (return_statement "return iVar1;" return identifier ;) })) (expression_statement "iVar1 = (**(code **)(pcVar21 + 0x9c220))();" (assignment_expression "iVar1 = (**(code **)(pcVar21 + 0x9c220))()" identifier = (call_expression "(**(code **)(pcVar21 + 0x9c220))()" (parenthesized_expression "(**(code **)(pcVar21 + 0x9c220))" ( (pointer_expression "**(code **)(pcVar21 + 0x9c220)" * (pointer_expression "*(code **)(pcVar21 + 0x9c220)" * (cast_expression "(code **)(pcVar21 + 0x9c220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x9c220)" ( (binary_expression "pcVar21 + 0x9c220" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_00059548:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "uint FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}\n\n" (function_definition "uint FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}" type_identifier (function_declarator "FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)" identifier (parameter_list "(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int *unaff_s3;" primitive_type (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined4 *unaff_s8;" type_identifier (pointer_declarator "*unaff_s8" * identifier) ;) (declaration "code *pcVar19;" type_identifier (pointer_declarator "*pcVar19" * identifier) ;) (declaration "int iStack_e0;" primitive_type identifier ;) (declaration "int iStack_dc;" primitive_type identifier ;) (declaration "int iStack_d4;" primitive_type identifier ;) (declaration "uint *puStack_d0;" type_identifier (pointer_declarator "*puStack_d0" * identifier) ;) (declaration "uint *puStack_cc;" type_identifier (pointer_declarator "*puStack_cc" * identifier) ;) (declaration "uint uStack_c8;" type_identifier identifier ;) (declaration "int *piStack_c4;" primitive_type (pointer_declarator "*piStack_c4" * identifier) ;) (declaration "int *piStack_c0;" primitive_type (pointer_declarator "*piStack_c0" * identifier) ;) (declaration "uint *puStack_bc;" type_identifier (pointer_declarator "*puStack_bc" * identifier) ;) (declaration "uint *puStack_b8;" type_identifier (pointer_declarator "*puStack_b8" * identifier) ;) (declaration "uint uStack_b4;" type_identifier identifier ;) (declaration "undefined4 *puStack_b0;" type_identifier (pointer_declarator "*puStack_b0" * identifier) ;) (declaration "code *pcStack_ac;" type_identifier (pointer_declarator "*pcStack_ac" * identifier) ;) (declaration "uint uStack_98;" type_identifier identifier ;) (declaration "uint uStack_94;" type_identifier identifier ;) (declaration "undefined *puStack_90;" type_identifier (pointer_declarator "*puStack_90" * identifier) ;) (declaration "undefined4 uStack_88;" type_identifier identifier ;) (declaration "int iStack_84;" primitive_type identifier ;) (declaration "uint *puStack_80;" type_identifier (pointer_declarator "*puStack_80" * identifier) ;) (declaration "uint *puStack_7c;" type_identifier (pointer_declarator "*puStack_7c" * identifier) ;) (declaration "undefined *puStack_78;" type_identifier (pointer_declarator "*puStack_78" * identifier) ;) (declaration "int *piStack_74;" primitive_type (pointer_declarator "*piStack_74" * identifier) ;) (declaration "uint local_2c [2];" type_identifier (array_declarator "local_2c [2]" identifier [ number_literal ]) ;) (declaration "uint *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "uint *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar18 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar18 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "local_24 = (uint *)0x0;" (assignment_expression "local_24 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_2c[1] = 0;" (assignment_expression "local_2c[1] = 0" (subscript_expression "local_2c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_1c = *(uint **)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(uint **)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(uint **)PTR___stack_chk_guard_000f5568" * (cast_expression "(uint **)PTR___stack_chk_guard_000f5568" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }" if (parenthesized_expression "((int)*param_1 < (int)param_1[2])" ( (binary_expression "(int)*param_1 < (int)param_1[2]" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) < (cast_expression "(int)param_1[2]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }" { (labeled_statement "LAB_00058f90:\n    puVar9 = local_2c + 1;" statement_identifier : (expression_statement "puVar9 = local_2c + 1;" (assignment_expression "puVar9 = local_2c + 1" identifier = (binary_expression "local_2c + 1" identifier + number_literal)) ;)) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x61b4)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x61b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x61b4)" ( (binary_expression "PTR_LAB_000f52ec + 0x61b4" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }" { (expression_statement "param_1[5] = (uint)local_24;" (assignment_expression "param_1[5] = (uint)local_24" (subscript_expression "param_1[5]" identifier [ number_literal ]) = (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" if (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }" { (expression_statement "param_3 = param_1 + 8;" (assignment_expression "param_3 = param_1 + 8" identifier = (binary_expression "param_1 + 8" identifier + number_literal)) ;) (expression_statement "puVar9 = local_24;" (assignment_expression "puVar9 = local_24" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5ea0)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5ea0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x5ea0)" ( (binary_expression "PTR_LAB_000f52ec + 0x5ea0" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier )))) ;) }) (else_clause "else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" else (compound_statement "{\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" { (expression_statement "param_3 = (uint *)param_1[1];" (assignment_expression "param_3 = (uint *)param_1[1]" identifier = (cast_expression "(uint *)param_1[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "param_4 = (uint *)((int)local_24 + (int)param_3);" (assignment_expression "param_4 = (uint *)((int)local_24 + (int)param_3)" identifier = (cast_expression "(uint *)((int)local_24 + (int)param_3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_24 + (int)param_3)" ( (binary_expression "(int)local_24 + (int)param_3" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "param_1[1] = (uint)param_4;" (assignment_expression "param_1[1] = (uint)param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);" (assignment_expression "puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" identifier = (cast_expression "(uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" ( (binary_expression "(uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1" (binary_expression "(uint)(param_4 < local_24) + ((int)local_24 >> 0x1f)" (call_expression "(uint)(param_4 < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_4 < local_24)" ( (binary_expression "param_4 < local_24" identifier < identifier) ))) + (parenthesized_expression "((int)local_24 >> 0x1f)" ( (binary_expression "(int)local_24 >> 0x1f" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (pointer_expression "*param_1" * identifier)) )))) ;) (expression_statement "param_1[8] = param_1[0xb] + (int)param_3;" (assignment_expression "param_1[8] = param_1[0xb] + (int)param_3" (subscript_expression "param_1[8]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + (int)param_3" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*param_1 = (uint)puVar9;" (assignment_expression "*param_1 = (uint)puVar9" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) })) (goto_statement "goto LAB_0005907c;" goto statement_identifier ;) })) (if_statement "if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }" if (parenthesized_expression "(param_1[2] == *param_1)" ( (binary_expression "param_1[2] == *param_1" (subscript_expression "param_1[2]" identifier [ number_literal ]) == (pointer_expression "*param_1" * identifier)) )) (compound_statement "{\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }" { (if_statement "if (param_1[1] < param_1[3]) goto LAB_00058f90;" if (parenthesized_expression "(param_1[1] < param_1[3])" ( (binary_expression "param_1[1] < param_1[3]" (subscript_expression "param_1[1]" identifier [ number_literal ]) < (subscript_expression "param_1[3]" identifier [ number_literal ])) )) (goto_statement "goto LAB_00058f90;" goto statement_identifier ;)) (expression_statement "unaff_s0 = (uint *)param_1[0xc];" (assignment_expression "unaff_s0 = (uint *)param_1[0xc]" identifier = (cast_expression "(uint *)param_1[0xc]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }" else (compound_statement "{\n    unaff_s0 = (uint *)param_1[0xc];\n  }" { (expression_statement "unaff_s0 = (uint *)param_1[0xc];" (assignment_expression "unaff_s0 = (uint *)param_1[0xc]" identifier = (cast_expression "(uint *)param_1[0xc]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) }))) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = local_1c;" (assignment_expression "puVar9 = local_1c" identifier = identifier) ;) (if_statement "if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" if (parenthesized_expression "(unaff_s0 != (uint *)0x0)" ( (binary_expression "unaff_s0 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" { (if_statement "if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" if (parenthesized_expression "(unaff_s0[6] == 0)" ( (binary_expression "unaff_s0[6] == 0" (subscript_expression "unaff_s0[6]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }" { (expression_statement "uVar1 = FUN_00058b04(unaff_s0);" (assignment_expression "uVar1 = FUN_00058b04(unaff_s0)" identifier = (call_expression "FUN_00058b04(unaff_s0)" identifier (argument_list "(unaff_s0)" ( identifier )))) ;) (expression_statement "param_4 = (uint *)unaff_s0[0xc];" (assignment_expression "param_4 = (uint *)unaff_s0[0xc]" identifier = (cast_expression "(uint *)unaff_s0[0xc]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xc]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (uint *)unaff_s0[0xd];" (assignment_expression "param_3 = (uint *)unaff_s0[0xd]" identifier = (cast_expression "(uint *)unaff_s0[0xd]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xd]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (uint *)unaff_s0[2];" (assignment_expression "puVar9 = (uint *)unaff_s0[2]" identifier = (cast_expression "(uint *)unaff_s0[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[2]" identifier [ number_literal ]))) ;) (expression_statement "unaff_s0[8] = (uint)param_4;" (assignment_expression "unaff_s0[8] = (uint)param_4" (subscript_expression "unaff_s0[8]" identifier [ number_literal ]) = (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[9] = (uint)param_3;" (assignment_expression "unaff_s0[9] = (uint)param_3" (subscript_expression "unaff_s0[9]" identifier [ number_literal ]) = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[10] = unaff_s0[0xe];" (assignment_expression "unaff_s0[10] = unaff_s0[0xe]" (subscript_expression "unaff_s0[10]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[0xb] = unaff_s0[0xf];" (assignment_expression "unaff_s0[0xb] = unaff_s0[0xf]" (subscript_expression "unaff_s0[0xb]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ])) ;) (if_statement "if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;" if (parenthesized_expression "(((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3]))" ( (binary_expression "((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])" (parenthesized_expression "((uint *)unaff_s0[0xe] != puVar9)" ( (binary_expression "(uint *)unaff_s0[0xe] != puVar9" (cast_expression "(uint *)unaff_s0[0xe]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ])) != identifier) )) || (parenthesized_expression "(unaff_s0[0xf] != unaff_s0[3])" ( (binary_expression "unaff_s0[0xf] != unaff_s0[3]" (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ]) != (subscript_expression "unaff_s0[3]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_00058f48;" goto statement_identifier ;)) (expression_statement "unaff_s0[5] = 1;" (assignment_expression "unaff_s0[5] = 1" (subscript_expression "unaff_s0[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (uVar1 != 0) goto LAB_00059064;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00059064;" goto statement_identifier ;)) (labeled_statement "LAB_0005905c:\n      uVar1 = 0;" statement_identifier : (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" else (compound_statement "{\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" { (expression_statement "unaff_s3 = (int *)*unaff_s0;" (assignment_expression "unaff_s3 = (int *)*unaff_s0" identifier = (cast_expression "(int *)*unaff_s0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s0" * identifier))) ;) (if_statement "if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }" if (parenthesized_expression "(*unaff_s3 != 0)" ( (binary_expression "*unaff_s3 != 0" (pointer_expression "*unaff_s3" * identifier) != number_literal) )) (compound_statement "{\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }" { (expression_statement "puVar9 = local_2c;" (assignment_expression "puVar9 = local_2c" identifier = identifier) ;) (expression_statement "local_2c[0] = 1;" (assignment_expression "local_2c[0] = 1" (subscript_expression "local_2c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "FUN_0003fa58();" (call_expression "FUN_0003fa58()" identifier (argument_list "()" ( ))) ;) (expression_statement "unaff_s3[1] = 0;" (assignment_expression "unaff_s3[1] = 0" (subscript_expression "unaff_s3[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*unaff_s3 = 0;" (assignment_expression "*unaff_s3 = 0" (pointer_expression "*unaff_s3" * identifier) = number_literal) ;) (expression_statement "uVar1 = local_2c[0];" (assignment_expression "uVar1 = local_2c[0]" identifier = (subscript_expression "local_2c[0]" identifier [ number_literal ])) ;) (if_statement "if (local_2c[0] != 0) goto LAB_00059064;" if (parenthesized_expression "(local_2c[0] != 0)" ( (binary_expression "local_2c[0] != 0" (subscript_expression "local_2c[0]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00059064;" goto statement_identifier ;)) })) (expression_statement "param_4 = (uint *)unaff_s0[0xb];" (assignment_expression "param_4 = (uint *)unaff_s0[0xb]" identifier = (cast_expression "(uint *)unaff_s0[0xb]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[0xb]" identifier [ number_literal ]))) ;) (expression_statement "param_3 = (uint *)unaff_s0[10];" (assignment_expression "param_3 = (uint *)unaff_s0[10]" identifier = (cast_expression "(uint *)unaff_s0[10]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[10]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (uint *)unaff_s0[8];" (assignment_expression "puVar9 = (uint *)unaff_s0[8]" identifier = (cast_expression "(uint *)unaff_s0[8]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[8]" identifier [ number_literal ]))) ;) (expression_statement "uVar1 = unaff_s0[0xe];" (assignment_expression "uVar1 = unaff_s0[0xe]" identifier = (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = unaff_s0[0xf];" (assignment_expression "uVar6 = unaff_s0[0xf]" identifier = (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[8] = unaff_s0[0xc];" (assignment_expression "unaff_s0[8] = unaff_s0[0xc]" (subscript_expression "unaff_s0[8]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xc]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[9] = unaff_s0[0xd];" (assignment_expression "unaff_s0[9] = unaff_s0[0xd]" (subscript_expression "unaff_s0[9]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[0xd]" identifier [ number_literal ])) ;) (expression_statement "unaff_s0[10] = uVar1;" (assignment_expression "unaff_s0[10] = uVar1" (subscript_expression "unaff_s0[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s0[0xb] = uVar6;" (assignment_expression "unaff_s0[0xb] = uVar6" (subscript_expression "unaff_s0[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "unaff_s0[0xc] = (uint)puVar9;" (assignment_expression "unaff_s0[0xc] = (uint)puVar9" (subscript_expression "unaff_s0[0xc]" identifier [ number_literal ]) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[0xf] = (uint)param_4;" (assignment_expression "unaff_s0[0xf] = (uint)param_4" (subscript_expression "unaff_s0[0xf]" identifier [ number_literal ]) = (cast_expression "(uint)param_4" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "unaff_s0[0xe] = (uint)param_3;" (assignment_expression "unaff_s0[0xe] = (uint)param_3" (subscript_expression "unaff_s0[0xe]" identifier [ number_literal ]) = (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" if (parenthesized_expression "((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3]))" ( (binary_expression "(uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])" (parenthesized_expression "(uVar1 == unaff_s0[2])" ( (binary_expression "uVar1 == unaff_s0[2]" identifier == (subscript_expression "unaff_s0[2]" identifier [ number_literal ])) )) && (parenthesized_expression "(uVar6 == unaff_s0[3])" ( (binary_expression "uVar6 == unaff_s0[3]" identifier == (subscript_expression "unaff_s0[3]" identifier [ number_literal ])) ))) )) (compound_statement "{\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "unaff_s0[5] = 1;" (assignment_expression "unaff_s0[5] = 1" (subscript_expression "unaff_s0[5]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" else (compound_statement "{\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" { (expression_statement "puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);" (assignment_expression "puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8)" identifier = (cast_expression "(uint *)(PTR_FUN_000f5300 + -0x6aa8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_FUN_000f5300 + -0x6aa8)" ( (binary_expression "PTR_FUN_000f5300 + -0x6aa8" identifier + number_literal) )))) ;) (expression_statement "param_3 = unaff_s0;" (assignment_expression "param_3 = unaff_s0" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5930)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5930)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x5930)" ( (binary_expression "PTR_LAB_000f52ec + 0x5930" identifier + number_literal) )))) )) (argument_list "(*unaff_s0)" ( (pointer_expression "*unaff_s0" * identifier) )))) ;) (labeled_statement "LAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" statement_identifier : (if_statement "if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" { (if_statement "if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" if (parenthesized_expression "(unaff_s0[5] == 0)" ( (binary_expression "unaff_s0[5] == 0" (subscript_expression "unaff_s0[5]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" { (expression_statement "param_4 = unaff_s0 + 10;" (assignment_expression "param_4 = unaff_s0 + 10" identifier = (binary_expression "unaff_s0 + 10" identifier + number_literal)) ;) (expression_statement "param_3 = unaff_s0 + 8;" (assignment_expression "param_3 = unaff_s0 + 8" identifier = (binary_expression "unaff_s0 + 8" identifier + number_literal)) ;) (expression_statement "puVar9 = param_1;" (assignment_expression "puVar9 = param_1" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0)" identifier = (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x6530)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x6530)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x6530)" ( (binary_expression "PTR_LAB_000f52ec + 0x6530" identifier + number_literal) )))) )) (argument_list "(*unaff_s0)" ( (pointer_expression "*unaff_s0" * identifier) )))) ;) (if_statement "if (uVar1 != 0) goto LAB_0005907c;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0005907c;" goto statement_identifier ;)) (goto_statement "goto LAB_00058f90;" goto statement_identifier ;) })) (goto_statement "goto LAB_0005905c;" goto statement_identifier ;) }))) }))) }))) })) (labeled_statement "LAB_00059064:\n  FUN_0003fbf0(param_1);" statement_identifier : (expression_statement "FUN_0003fbf0(param_1);" (call_expression "FUN_0003fbf0(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;)) (labeled_statement "LAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }" statement_identifier : (if_statement "if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }" if (parenthesized_expression "(local_1c == *(uint **)puVar18)" ( (binary_expression "local_1c == *(uint **)puVar18" identifier == (pointer_expression "*(uint **)puVar18" * (cast_expression "(uint **)puVar18" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) }))) (expression_statement "puVar7 = local_1c;" (assignment_expression "puVar7 = local_1c" identifier = identifier) ;) (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_90 = puVar16 + 0xa41c8;" (assignment_expression "puStack_90 = puVar16 + 0xa41c8" identifier = (binary_expression "puVar16 + 0xa41c8" identifier + number_literal)) ;) (expression_statement "puStack_78 = puVar18;" (assignment_expression "puStack_78 = puVar18" identifier = identifier) ;) (expression_statement "piVar13 = *(int **)(puVar16 + 0x9c490);" (assignment_expression "piVar13 = *(int **)(puVar16 + 0x9c490)" identifier = (pointer_expression "*(int **)(puVar16 + 0x9c490)" * (cast_expression "(int **)(puVar16 + 0x9c490)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar16 + 0x9c490)" ( (binary_expression "puVar16 + 0x9c490" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = *(uint *)(puVar7[2] + 4);" (assignment_expression "uVar6 = *(uint *)(puVar7[2] + 4)" identifier = (pointer_expression "*(uint *)(puVar7[2] + 4)" * (cast_expression "(uint *)(puVar7[2] + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7[2] + 4)" ( (binary_expression "puVar7[2] + 4" (subscript_expression "puVar7[2]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "iStack_84 = *piVar13;" (assignment_expression "iStack_84 = *piVar13" identifier = (pointer_expression "*piVar13" * identifier)) ;) (expression_statement "uVar15 = puVar7[1];" (assignment_expression "uVar15 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "puVar11 = puVar9;" (assignment_expression "puVar11 = puVar9" identifier = identifier) ;) (expression_statement "puStack_80 = unaff_s0;" (assignment_expression "puStack_80 = unaff_s0" identifier = identifier) ;) (expression_statement "puStack_7c = param_1;" (assignment_expression "puStack_7c = param_1" identifier = identifier) ;) (expression_statement "piStack_74 = unaff_s3;" (assignment_expression "piStack_74 = unaff_s3" identifier = identifier) ;) (expression_statement "uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);" (assignment_expression "uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38)" identifier = (call_expression "FUN_00058e28(puVar7[3] + uVar6 * 0x38)" identifier (argument_list "(puVar7[3] + uVar6 * 0x38)" ( (binary_expression "puVar7[3] + uVar6 * 0x38" (subscript_expression "puVar7[3]" identifier [ number_literal ]) + (binary_expression "uVar6 * 0x38" identifier * number_literal)) )))) ;) (expression_statement "puVar18 = puStack_90;" (assignment_expression "puVar18 = puStack_90" identifier = identifier) ;) (if_statement "if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }" { (expression_statement "uVar10 = uVar6 & 0xfffe;" (assignment_expression "uVar10 = uVar6 & 0xfffe" identifier = (binary_expression "uVar6 & 0xfffe" identifier & number_literal)) ;) (expression_statement "uVar1 = uVar6 | 1;" (assignment_expression "uVar1 = uVar6 | 1" identifier = (binary_expression "uVar6 | 1" identifier | number_literal)) ;) (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = (int)(uVar6 + *puVar7) / 2;" (assignment_expression "uVar6 = (int)(uVar6 + *puVar7) / 2" identifier = (binary_expression "(int)(uVar6 + *puVar7) / 2" (cast_expression "(int)(uVar6 + *puVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 + *puVar7)" ( (binary_expression "uVar6 + *puVar7" identifier + (pointer_expression "*puVar7" * identifier)) ))) / number_literal)) ;) (expression_statement "unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);" (assignment_expression "unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + uVar10 * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar10 * 0x38)" ( (binary_expression "uVar8 + uVar10 * 0x38" identifier + (binary_expression "uVar10 * 0x38" identifier * number_literal)) )))) ;) (expression_statement "param_1 = (uint *)(uVar8 + uVar1 * 0x38);" (assignment_expression "param_1 = (uint *)(uVar8 + uVar1 * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + uVar1 * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + uVar1 * 0x38)" ( (binary_expression "uVar8 + uVar1 * 0x38" identifier + (binary_expression "uVar1 * 0x38" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" if (parenthesized_expression "((int)uVar6 < 1)" ( (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      uVar1 = puVar7[2];\n    }" { (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" else (compound_statement "{\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" { (expression_statement "unaff_s8 = &uStack_88;" (assignment_expression "unaff_s8 = &uStack_88" identifier = (pointer_expression "&uStack_88" & identifier)) ;) (expression_statement "unaff_s3 = (int *)0xb6db6db7;" (assignment_expression "unaff_s3 = (int *)0xb6db6db7" identifier = (cast_expression "(int *)0xb6db6db7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (do_statement "do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);" do (compound_statement "{\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      }" { (while_statement "while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }" while (parenthesized_expression "(uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0)" ( (comma_expression "uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0" (assignment_expression "uVar6 = (int)uVar10 >> 1" identifier = (binary_expression "(int)uVar10 >> 1" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) , (binary_expression "unaff_s0[6] != 0" (subscript_expression "unaff_s0[6]" identifier [ number_literal ]) != number_literal)) )) (compound_statement "{\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }" { (if_statement "if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }" if (parenthesized_expression "(param_1[6] != 0)" ( (binary_expression "param_1[6] != 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }" { (expression_statement "uStack_94 = param_1[5];" (assignment_expression "uStack_94 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "param_4 = (uint *)unaff_s0[5];" (assignment_expression "param_4 = (uint *)unaff_s0[5]" identifier = (cast_expression "(uint *)unaff_s0[5]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s0[5]" identifier [ number_literal ]))) ;) (expression_statement "uStack_98 = param_1[8];" (assignment_expression "uStack_98 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);" (assignment_expression "iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8])" identifier = (call_expression "(**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8])" (parenthesized_expression "(**(code **)(uVar15 + 0x20))" ( (pointer_expression "**(code **)(uVar15 + 0x20)" * (pointer_expression "*(code **)(uVar15 + 0x20)" * (cast_expression "(code **)(uVar15 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar15 + 0x20)" ( (binary_expression "uVar15 + 0x20" identifier + number_literal) ))))) )) (argument_list "(uVar15,unaff_s8,unaff_s0[8])" ( identifier , identifier , (subscript_expression "unaff_s0[8]" identifier [ number_literal ]) )))) ;) (expression_statement "puVar18 = puStack_90;" (assignment_expression "puVar18 = puStack_90" identifier = identifier) ;) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" if (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0))))" ( (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))" (parenthesized_expression "(-1 < iVar2)" ( (binary_expression "-1 < iVar2" number_literal < identifier) )) && (parenthesized_expression "((iVar2 != 0 || (param_1 <= unaff_s0)))" ( (parenthesized_expression "(iVar2 != 0 || (param_1 <= unaff_s0))" ( (binary_expression "iVar2 != 0 || (param_1 <= unaff_s0)" (binary_expression "iVar2 != 0" identifier != number_literal) || (parenthesized_expression "(param_1 <= unaff_s0)" ( (binary_expression "param_1 <= unaff_s0" identifier <= identifier) ))) )) ))) )) (compound_statement "{\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" { (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }" if (parenthesized_expression "(unaff_s0[6] != 0)" ( (binary_expression "unaff_s0[6] != 0" (subscript_expression "unaff_s0[6]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                uStack_88 = 0;\n              }" { (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) })) (break_statement "break;" break ;) })) (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" identifier = (subscript_expression "puVar7[3]" identifier [ number_literal ])) ;) })) (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "param_3 = (uint *)(uVar1 + uVar10 * 4);" (assignment_expression "param_3 = (uint *)(uVar1 + uVar10 * 4)" identifier = (cast_expression "(uint *)(uVar1 + uVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar10 * 4)" ( (binary_expression "uVar1 + uVar10 * 4" identifier + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "*param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;" (assignment_expression "*param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249" (pointer_expression "*param_3" * identifier) = (binary_expression "((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249" (parenthesized_expression "((int)((int)unaff_s0 - uVar8) >> 3)" ( (binary_expression "(int)((int)unaff_s0 - uVar8) >> 3" (cast_expression "(int)((int)unaff_s0 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)unaff_s0 - uVar8)" ( (binary_expression "(int)unaff_s0 - uVar8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) >> number_literal) )) * number_literal)) ;) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" identifier = number_literal) ;) (expression_statement "param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);" (assignment_expression "param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (binary_expression "uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" identifier + (binary_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4)" * (cast_expression "(int *)(uVar1 + (uVar10 ^ 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (uVar10 ^ 1) * 4)" ( (binary_expression "uVar1 + (uVar10 ^ 1) * 4" identifier + (binary_expression "(uVar10 ^ 1) * 4" (parenthesized_expression "(uVar10 ^ 1)" ( (binary_expression "uVar10 ^ 1" identifier ^ number_literal) )) * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) (if_statement "if (uVar6 == 0) goto LAB_000592a8;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000592a8;" goto statement_identifier ;)) })) (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" identifier = (subscript_expression "puVar7[2]" identifier [ number_literal ])) ;) (expression_statement "param_3 = (uint *)(uVar1 + uVar10 * 4);" (assignment_expression "param_3 = (uint *)(uVar1 + uVar10 * 4)" identifier = (cast_expression "(uint *)(uVar1 + uVar10 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + uVar10 * 4)" ( (binary_expression "uVar1 + uVar10 * 4" identifier + (binary_expression "uVar10 * 4" identifier * number_literal)) )))) ;) (expression_statement "*param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;" (assignment_expression "*param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249" (pointer_expression "*param_3" * identifier) = (binary_expression "((int)((int)param_1 - uVar8) >> 3) * -0x49249249" (parenthesized_expression "((int)((int)param_1 - uVar8) >> 3)" ( (binary_expression "(int)((int)param_1 - uVar8) >> 3" (cast_expression "(int)((int)param_1 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)param_1 - uVar8)" ( (binary_expression "(int)param_1 - uVar8" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) - identifier) ))) >> number_literal) )) * number_literal)) ;) (expression_statement "unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);" (assignment_expression "unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" identifier = (cast_expression "(uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" ( (binary_expression "uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" identifier + (binary_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4)" * (cast_expression "(int *)(uVar1 + (uVar10 ^ 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (uVar10 ^ 1) * 4)" ( (binary_expression "uVar1 + (uVar10 ^ 1) * 4" identifier + (binary_expression "(uVar10 ^ 1) * 4" (parenthesized_expression "(uVar10 ^ 1)" ( (binary_expression "uVar10 ^ 1" identifier ^ number_literal) )) * number_literal)) )))) * number_literal)) )))) ;) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) }))) (labeled_statement "LAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);" statement_identifier : (expression_statement "puVar11 = *(uint **)(uVar15 + 0xc);" (assignment_expression "puVar11 = *(uint **)(uVar15 + 0xc)" identifier = (pointer_expression "*(uint **)(uVar15 + 0xc)" * (cast_expression "(uint **)(uVar15 + 0xc)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar15 + 0xc)" ( (binary_expression "uVar15 + 0xc" identifier + number_literal) ))))) ;)) (expression_statement "*puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);" (assignment_expression "*puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (pointer_expression "*puVar9" * identifier) = (call_expression "(uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" ( (binary_expression "*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0" (pointer_expression "*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" * (cast_expression "(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" ( (binary_expression "uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18" (binary_expression "uVar8 + *(int *)(uVar1 + 4) * 0x38" identifier + (binary_expression "*(int *)(uVar1 + 4) * 0x38" (pointer_expression "*(int *)(uVar1 + 4)" * (cast_expression "(int *)(uVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 4)" ( (binary_expression "uVar1 + 4" identifier + number_literal) )))) * number_literal)) + number_literal) )))) == number_literal) )))) ;) (expression_statement "uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);" (assignment_expression "uVar1 = (uint)*(byte *)((int)puVar11 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)puVar11 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)puVar11 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar11 + 0xb)" ( (binary_expression "(int)puVar11 + 0xb" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) (if_statement "if (iStack_84 == *piVar13) {\n    return uVar1;\n  }" if (parenthesized_expression "(iStack_84 == *piVar13)" ( (binary_expression "iStack_84 == *piVar13" identifier == (pointer_expression "*piVar13" * identifier)) )) (compound_statement "{\n    return uVar1;\n  }" { (return_statement "return uVar1;" return identifier ;) })) (expression_statement "pcVar17 = *(code **)(puVar18 + -0x7d60);" (assignment_expression "pcVar17 = *(code **)(puVar18 + -0x7d60)" identifier = (pointer_expression "*(code **)(puVar18 + -0x7d60)" * (cast_expression "(code **)(puVar18 + -0x7d60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar18 + -0x7d60)" ( (binary_expression "puVar18 + -0x7d60" identifier + number_literal) ))))) ;) (expression_statement "pcVar19 = FUN_00059320;" (assignment_expression "pcVar19 = FUN_00059320" identifier = identifier) ;) (expression_statement "iVar2 = iStack_84;" (assignment_expression "iVar2 = iStack_84" identifier = identifier) ;) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar3 = *(int **)(pcVar17 + 0x9c248);" (assignment_expression "piVar3 = *(int **)(pcVar17 + 0x9c248)" identifier = (pointer_expression "*(int **)(pcVar17 + 0x9c248)" * (cast_expression "(int **)(pcVar17 + 0x9c248)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x9c248)" ( (binary_expression "pcVar17 + 0x9c248" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = param_3[1];" (assignment_expression "uVar10 = param_3[1]" identifier = (subscript_expression "param_3[1]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = *param_3;" (assignment_expression "uVar8 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "iStack_d4 = *piVar3;" (assignment_expression "iStack_d4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "puStack_d0 = unaff_s0;" (assignment_expression "puStack_d0 = unaff_s0" identifier = identifier) ;) (expression_statement "puStack_cc = param_1;" (assignment_expression "puStack_cc = param_1" identifier = identifier) ;) (expression_statement "uStack_c8 = uVar6;" (assignment_expression "uStack_c8 = uVar6" identifier = identifier) ;) (expression_statement "piStack_c4 = unaff_s3;" (assignment_expression "piStack_c4 = unaff_s3" identifier = identifier) ;) (expression_statement "piStack_c0 = piVar13;" (assignment_expression "piStack_c0 = piVar13" identifier = identifier) ;) (expression_statement "puStack_bc = puVar9;" (assignment_expression "puStack_bc = puVar9" identifier = identifier) ;) (expression_statement "puStack_b8 = puVar7;" (assignment_expression "puStack_b8 = puVar7" identifier = identifier) ;) (expression_statement "uStack_b4 = uVar15;" (assignment_expression "uStack_b4 = uVar15" identifier = identifier) ;) (expression_statement "puStack_b0 = unaff_s8;" (assignment_expression "puStack_b0 = unaff_s8" identifier = identifier) ;) (expression_statement "pcStack_ac = pcVar19;" (assignment_expression "pcStack_ac = pcVar19" identifier = identifier) ;) (expression_statement "uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);" (assignment_expression "uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11)" identifier = (call_expression "(*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11)" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))" ( (pointer_expression "*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" * (cast_expression "(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" ( (binary_expression "*(int *)(pcVar17 + 0x9bfcc) + 0x4d68" (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" * (cast_expression "(int *)(pcVar17 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfcc)" ( (binary_expression "pcVar17 + 0x9bfcc" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(puVar11)" ( identifier )))) ;) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" * identifier) = identifier) ;) (if_statement "if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar6 = 7;\n  }" { (expression_statement "uVar6 = 7;" (assignment_expression "uVar6 = 7" identifier = number_literal) ;) }) (else_clause "else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" else (compound_statement "{\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if ((int)puVar11 < 1) goto LAB_00059470;" if (parenthesized_expression "((int)puVar11 < 1)" ( (binary_expression "(int)puVar11 < 1" (cast_expression "(int)puVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00059470;" goto statement_identifier ;)) (expression_statement "iVar14 = *(int *)(pcVar17 + 0x9bfcc);" (assignment_expression "iVar14 = *(int *)(pcVar17 + 0x9bfcc)" identifier = (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" * (cast_expression "(int *)(pcVar17 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfcc)" ( (binary_expression "pcVar17 + 0x9bfcc" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = *(int *)(pcVar17 + 0x9bfcc);" (assignment_expression "iVar4 = *(int *)(pcVar17 + 0x9bfcc)" identifier = (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" * (cast_expression "(int *)(pcVar17 + 0x9bfcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfcc)" ( (binary_expression "pcVar17 + 0x9bfcc" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(pcVar17 + 0x9bfe0);" (assignment_expression "iVar5 = *(int *)(pcVar17 + 0x9bfe0)" identifier = (pointer_expression "*(int *)(pcVar17 + 0x9bfe0)" * (cast_expression "(int *)(pcVar17 + 0x9bfe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar17 + 0x9bfe0)" ( (binary_expression "pcVar17 + 0x9bfe0" identifier + number_literal) ))))) ;) (do_statement "do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);" do (compound_statement "{\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    }" { (expression_statement "piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);" (assignment_expression "piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12)" identifier = (cast_expression "(int *)(*(int *)(uVar1 + 0xc) + iVar12)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar1 + 0xc) + iVar12)" ( (binary_expression "*(int *)(uVar1 + 0xc) + iVar12" (pointer_expression "*(int *)(uVar1 + 0xc)" * (cast_expression "(int *)(uVar1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + 0xc)" ( (binary_expression "uVar1 + 0xc" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "puVar9 = (uint *)((int)puVar9 + 1);" (assignment_expression "puVar9 = (uint *)((int)puVar9 + 1)" identifier = (cast_expression "(uint *)((int)puVar9 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar9 + 1)" ( (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);" (assignment_expression "uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" identifier = (call_expression "(*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" (parenthesized_expression "(*(code *)(iVar14 + 0x6530))" ( (pointer_expression "*(code *)(iVar14 + 0x6530)" * (cast_expression "(code *)(iVar14 + 0x6530)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar14 + 0x6530)" ( (binary_expression "iVar14 + 0x6530" identifier + number_literal) )))) )) (argument_list "(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" ( identifier , identifier , (binary_expression "iVar2 + 0x28" identifier + number_literal) , (binary_expression "iVar2 + 0x30" identifier + number_literal) , identifier , identifier )))) ;) (if_statement "if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }" { (labeled_statement "LAB_00059430:\n        uVar10 = piVar13[3];" statement_identifier : (expression_statement "uVar10 = piVar13[3];" (assignment_expression "uVar10 = piVar13[3]" identifier = (subscript_expression "piVar13[3]" identifier [ number_literal ])) ;)) (expression_statement "uVar8 = piVar13[2];" (assignment_expression "uVar8 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (break_statement "break;" break ;) })) (expression_statement "iStack_dc = 0;" (assignment_expression "iStack_dc = 0" identifier = number_literal) ;) (expression_statement "iStack_e0 = 0;" (assignment_expression "iStack_e0 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);" (assignment_expression "uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0)" identifier = (call_expression "(*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0)" (parenthesized_expression "(*(code *)(iVar4 + 0x61b4))" ( (pointer_expression "*(code *)(iVar4 + 0x61b4)" * (cast_expression "(code *)(iVar4 + 0x61b4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x61b4)" ( (binary_expression "iVar4 + 0x61b4" identifier + number_literal) )))) )) (argument_list "(piVar13,&iStack_e0)" ( identifier , (pointer_expression "&iStack_e0" & identifier) )))) ;) (expression_statement "uVar15 = piVar13[1] + iStack_dc;" (assignment_expression "uVar15 = piVar13[1] + iStack_dc" identifier = (binary_expression "piVar13[1] + iStack_dc" (subscript_expression "piVar13[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "piVar13[3] = uVar15;" (assignment_expression "piVar13[3] = uVar15" (subscript_expression "piVar13[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;" (assignment_expression "piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0" (subscript_expression "piVar13[2]" identifier [ number_literal ]) = (binary_expression "(uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0" (binary_expression "(uint)(uVar15 < (uint)piVar13[1]) + *piVar13" (call_expression "(uint)(uVar15 < (uint)piVar13[1])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar15 < (uint)piVar13[1])" ( (binary_expression "uVar15 < (uint)piVar13[1]" identifier < (cast_expression "(uint)piVar13[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar13[1]" identifier [ number_literal ]))) ))) + (pointer_expression "*piVar13" * identifier)) + identifier)) ;) (if_statement "if (uVar6 != 0) goto LAB_00059430;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00059430;" goto statement_identifier ;)) (expression_statement "uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);" (assignment_expression "uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13)" identifier = (call_expression "(*(code *)(iVar5 + -0x71d8))(piVar13)" (parenthesized_expression "(*(code *)(iVar5 + -0x71d8))" ( (pointer_expression "*(code *)(iVar5 + -0x71d8)" * (cast_expression "(code *)(iVar5 + -0x71d8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + -0x71d8)" ( (binary_expression "iVar5 + -0x71d8" identifier + number_literal) )))) )) (argument_list "(piVar13)" ( identifier )))) ;) (expression_statement "uVar10 = piVar13[3];" (assignment_expression "uVar10 = piVar13[3]" identifier = (subscript_expression "piVar13[3]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = piVar13[2];" (assignment_expression "uVar8 = piVar13[2]" identifier = (subscript_expression "piVar13[2]" identifier [ number_literal ])) ;) (if_statement "if (puVar9 == puVar11) goto LAB_00059548;" if (parenthesized_expression "(puVar9 == puVar11)" ( (binary_expression "puVar9 == puVar11" identifier == identifier) )) (goto_statement "goto LAB_00059548;" goto statement_identifier ;)) (expression_statement "iVar12 = iVar12 + 0x38;" (assignment_expression "iVar12 = iVar12 + 0x38" identifier = (binary_expression "iVar12 + 0x38" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) ;) }))) (do_statement "do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );" do (compound_statement "{\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  }" { (expression_statement "FUN_0003fc8c(uVar1);" (call_expression "FUN_0003fc8c(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (labeled_statement "LAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);" statement_identifier : (do_statement "do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);" do (compound_statement "{\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    }" { (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "param_3[1] = uVar10;" (assignment_expression "param_3[1] = uVar10" (subscript_expression "param_3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" * identifier) = identifier) ;) (if_statement "if (iStack_d4 == iVar2) {\n        return uVar6;\n      }" if (parenthesized_expression "(iStack_d4 == iVar2)" ( (binary_expression "iStack_d4 == iVar2" identifier == identifier) )) (compound_statement "{\n        return uVar6;\n      }" { (return_statement "return uVar6;" return identifier ;) })) (expression_statement "uVar6 = (**(code **)(pcVar17 + 0x9c220))();" (assignment_expression "uVar6 = (**(code **)(pcVar17 + 0x9c220))()" identifier = (call_expression "(**(code **)(pcVar17 + 0x9c220))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x9c220))" ( (pointer_expression "**(code **)(pcVar17 + 0x9c220)" * (pointer_expression "*(code **)(pcVar17 + 0x9c220)" * (cast_expression "(code **)(pcVar17 + 0x9c220)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar17 + 0x9c220)" ( (binary_expression "pcVar17 + 0x9c220" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_00059548:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (subscript_expression IDENT [ LIT ])) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (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 (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) && (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression * IDENT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) }))) }))) }))) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * IDENT)) ))) / LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ))) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) * LIT)) )))) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT) ))) >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) * LIT)) )))) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) + LIT) )))) == LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (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) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) + (pointer_expression * IDENT)) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }))) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;)) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)\n\n{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}" (type_identifier "uint") (function_declarator "FUN_00058e28(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)" (identifier "FUN_00058e28") (parameter_list "(uint *param_1,undefined4 param_2,uint *param_3,uint *param_4)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint *param_4" (type_identifier "uint") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  uint *puVar9;\n  uint uVar10;\n  uint *puVar11;\n  uint *unaff_s0;\n  int iVar12;\n  int *unaff_s3;\n  int *piVar13;\n  int iVar14;\n  uint uVar15;\n  undefined *puVar16;\n  code *pcVar17;\n  undefined *puVar18;\n  undefined4 *unaff_s8;\n  code *pcVar19;\n  int iStack_e0;\n  int iStack_dc;\n  int iStack_d4;\n  uint *puStack_d0;\n  uint *puStack_cc;\n  uint uStack_c8;\n  int *piStack_c4;\n  int *piStack_c0;\n  uint *puStack_bc;\n  uint *puStack_b8;\n  uint uStack_b4;\n  undefined4 *puStack_b0;\n  code *pcStack_ac;\n  uint uStack_98;\n  uint uStack_94;\n  undefined *puStack_90;\n  undefined4 uStack_88;\n  int iStack_84;\n  uint *puStack_80;\n  uint *puStack_7c;\n  undefined *puStack_78;\n  int *piStack_74;\n  uint local_2c [2];\n  uint *local_24;\n  uint *local_1c;\n  \n  puVar18 = PTR___stack_chk_guard_000f5568;\n  local_24 = (uint *)0x0;\n  local_2c[1] = 0;\n  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;\n  if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }\n  if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  uVar1 = 0;\n  puVar9 = local_1c;\n  if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }\nLAB_00059064:\n  FUN_0003fbf0(param_1);\nLAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }\n  puVar7 = local_1c;\n  puVar16 = PTR___stack_chk_fail_000f5540;\n  (*(code *)PTR___stack_chk_fail_000f5540)();\n  puStack_90 = puVar16 + 0xa41c8;\n  puStack_78 = puVar18;\n  piVar13 = *(int **)(puVar16 + 0x9c490);\n  uVar6 = *(uint *)(puVar7[2] + 4);\n  iStack_84 = *piVar13;\n  uVar15 = puVar7[1];\n  puVar11 = puVar9;\n  puStack_80 = unaff_s0;\n  puStack_7c = param_1;\n  piStack_74 = unaff_s3;\n  uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);\n  puVar18 = puStack_90;\n  if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }\n  if (iStack_84 == *piVar13) {\n    return uVar1;\n  }\n  pcVar17 = *(code **)(puVar18 + -0x7d60);\n  pcVar19 = FUN_00059320;\n  iVar2 = iStack_84;\n  (*pcVar17)();\n  piVar3 = *(int **)(pcVar17 + 0x9c248);\n  uVar10 = param_3[1];\n  uVar8 = *param_3;\n  iStack_d4 = *piVar3;\n  puStack_d0 = unaff_s0;\n  puStack_cc = param_1;\n  uStack_c8 = uVar6;\n  piStack_c4 = unaff_s3;\n  piStack_c0 = piVar13;\n  puStack_bc = puVar9;\n  puStack_b8 = puVar7;\n  uStack_b4 = uVar15;\n  puStack_b0 = unaff_s8;\n  pcStack_ac = pcVar19;\n  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);\n  *param_4 = uVar1;\n  if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }\n  do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint *unaff_s0;" (type_identifier "uint") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int *unaff_s3;" (primitive_type "int") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "undefined *puVar16;" (type_identifier "undefined") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "code *pcVar17;" (type_identifier "code") (pointer_declarator "*pcVar17" (* "*") (identifier "pcVar17")) (; ";")) (declaration "undefined *puVar18;" (type_identifier "undefined") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "undefined4 *unaff_s8;" (type_identifier "undefined4") (pointer_declarator "*unaff_s8" (* "*") (identifier "unaff_s8")) (; ";")) (declaration "code *pcVar19;" (type_identifier "code") (pointer_declarator "*pcVar19" (* "*") (identifier "pcVar19")) (; ";")) (declaration "int iStack_e0;" (primitive_type "int") (identifier "iStack_e0") (; ";")) (declaration "int iStack_dc;" (primitive_type "int") (identifier "iStack_dc") (; ";")) (declaration "int iStack_d4;" (primitive_type "int") (identifier "iStack_d4") (; ";")) (declaration "uint *puStack_d0;" (type_identifier "uint") (pointer_declarator "*puStack_d0" (* "*") (identifier "puStack_d0")) (; ";")) (declaration "uint *puStack_cc;" (type_identifier "uint") (pointer_declarator "*puStack_cc" (* "*") (identifier "puStack_cc")) (; ";")) (declaration "uint uStack_c8;" (type_identifier "uint") (identifier "uStack_c8") (; ";")) (declaration "int *piStack_c4;" (primitive_type "int") (pointer_declarator "*piStack_c4" (* "*") (identifier "piStack_c4")) (; ";")) (declaration "int *piStack_c0;" (primitive_type "int") (pointer_declarator "*piStack_c0" (* "*") (identifier "piStack_c0")) (; ";")) (declaration "uint *puStack_bc;" (type_identifier "uint") (pointer_declarator "*puStack_bc" (* "*") (identifier "puStack_bc")) (; ";")) (declaration "uint *puStack_b8;" (type_identifier "uint") (pointer_declarator "*puStack_b8" (* "*") (identifier "puStack_b8")) (; ";")) (declaration "uint uStack_b4;" (type_identifier "uint") (identifier "uStack_b4") (; ";")) (declaration "undefined4 *puStack_b0;" (type_identifier "undefined4") (pointer_declarator "*puStack_b0" (* "*") (identifier "puStack_b0")) (; ";")) (declaration "code *pcStack_ac;" (type_identifier "code") (pointer_declarator "*pcStack_ac" (* "*") (identifier "pcStack_ac")) (; ";")) (declaration "uint uStack_98;" (type_identifier "uint") (identifier "uStack_98") (; ";")) (declaration "uint uStack_94;" (type_identifier "uint") (identifier "uStack_94") (; ";")) (declaration "undefined *puStack_90;" (type_identifier "undefined") (pointer_declarator "*puStack_90" (* "*") (identifier "puStack_90")) (; ";")) (declaration "undefined4 uStack_88;" (type_identifier "undefined4") (identifier "uStack_88") (; ";")) (declaration "int iStack_84;" (primitive_type "int") (identifier "iStack_84") (; ";")) (declaration "uint *puStack_80;" (type_identifier "uint") (pointer_declarator "*puStack_80" (* "*") (identifier "puStack_80")) (; ";")) (declaration "uint *puStack_7c;" (type_identifier "uint") (pointer_declarator "*puStack_7c" (* "*") (identifier "puStack_7c")) (; ";")) (declaration "undefined *puStack_78;" (type_identifier "undefined") (pointer_declarator "*puStack_78" (* "*") (identifier "puStack_78")) (; ";")) (declaration "int *piStack_74;" (primitive_type "int") (pointer_declarator "*piStack_74" (* "*") (identifier "piStack_74")) (; ";")) (declaration "uint local_2c [2];" (type_identifier "uint") (array_declarator "local_2c [2]" (identifier "local_2c") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "uint *local_24;" (type_identifier "uint") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "uint *local_1c;" (type_identifier "uint") (pointer_declarator "*local_1c" (* "*") (identifier "local_1c")) (; ";")) (expression_statement "puVar18 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar18 = PTR___stack_chk_guard_000f5568" (identifier "puVar18") (= "=") (identifier "PTR___stack_chk_guard_000f5568")) (; ";")) (expression_statement "local_24 = (uint *)0x0;" (assignment_expression "local_24 = (uint *)0x0" (identifier "local_24") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_2c[1] = 0;" (assignment_expression "local_2c[1] = 0" (subscript_expression "local_2c[1]" (identifier "local_2c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1c = *(uint **)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_1c = *(uint **)PTR___stack_chk_guard_000f5568" (identifier "local_1c") (= "=") (pointer_expression "*(uint **)PTR___stack_chk_guard_000f5568" (* "*") (cast_expression "(uint **)PTR___stack_chk_guard_000f5568" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_000f5568")))) (; ";")) (if_statement "if ((int)*param_1 < (int)param_1[2]) {\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }" (if "if") (parenthesized_expression "((int)*param_1 < (int)param_1[2])" (( "(") (binary_expression "(int)*param_1 < (int)param_1[2]" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (< "<") (cast_expression "(int)param_1[2]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\nLAB_00058f90:\n    puVar9 = local_2c + 1;\n    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);\n    if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }\n    goto LAB_0005907c;\n  }" ({ "{") (labeled_statement "LAB_00058f90:\n    puVar9 = local_2c + 1;" (statement_identifier "LAB_00058f90") (: ":") (expression_statement "puVar9 = local_2c + 1;" (assignment_expression "puVar9 = local_2c + 1" (identifier "puVar9") (= "=") (binary_expression "local_2c + 1" (identifier "local_2c") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x61b4))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x61b4)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + 0x61b4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + 0x61b4)" (( "(") (binary_expression "PTR_LAB_000f52ec + 0x61b4" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "0x61b4")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (uVar1 == 0) {\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_1[5] = (uint)local_24;\n      if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }\n    }" ({ "{") (expression_statement "param_1[5] = (uint)local_24;" (assignment_expression "param_1[5] = (uint)local_24" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(uint)local_24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_24"))) (; ";")) (if_statement "if (param_1[0xb] == 0) {\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }\n      else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" (if "if") (parenthesized_expression "(param_1[0xb] == 0)" (( "(") (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_3 = param_1 + 8;\n        puVar9 = local_24;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);\n      }" ({ "{") (expression_statement "param_3 = param_1 + 8;" (assignment_expression "param_3 = param_1 + 8" (identifier "param_3") (= "=") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar9 = local_24;" (assignment_expression "puVar9 = local_24" (identifier "puVar9") (= "=") (identifier "local_24")) (; ";")) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5ea0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5ea0)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5ea0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + 0x5ea0)" (( "(") (binary_expression "PTR_LAB_000f52ec + 0x5ea0" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "0x5ea0")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" (else "else") (compound_statement "{\n        param_3 = (uint *)param_1[1];\n        param_4 = (uint *)((int)local_24 + (int)param_3);\n        param_1[1] = (uint)param_4;\n        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);\n        param_1[8] = param_1[0xb] + (int)param_3;\n        *param_1 = (uint)puVar9;\n      }" ({ "{") (expression_statement "param_3 = (uint *)param_1[1];" (assignment_expression "param_3 = (uint *)param_1[1]" (identifier "param_3") (= "=") (cast_expression "(uint *)param_1[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_4 = (uint *)((int)local_24 + (int)param_3);" (assignment_expression "param_4 = (uint *)((int)local_24 + (int)param_3)" (identifier "param_4") (= "=") (cast_expression "(uint *)((int)local_24 + (int)param_3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_24 + (int)param_3)" (( "(") (binary_expression "(int)local_24 + (int)param_3" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")")))) (; ";")) (expression_statement "param_1[1] = (uint)param_4;" (assignment_expression "param_1[1] = (uint)param_4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4"))) (; ";")) (expression_statement "puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);" (assignment_expression "puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" (identifier "puVar9") (= "=") (cast_expression "(uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1)" (( "(") (binary_expression "(uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1" (binary_expression "(uint)(param_4 < local_24) + ((int)local_24 >> 0x1f)" (call_expression "(uint)(param_4 < local_24)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_4 < local_24)" (( "(") (binary_expression "param_4 < local_24" (identifier "param_4") (< "<") (identifier "local_24")) () ")"))) (+ "+") (parenthesized_expression "((int)local_24 >> 0x1f)" (( "(") (binary_expression "(int)local_24 >> 0x1f" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")))) (; ";")) (expression_statement "param_1[8] = param_1[0xb] + (int)param_3;" (assignment_expression "param_1[8] = param_1[0xb] + (int)param_3" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "param_1[0xb] + (int)param_3" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")))) (; ";")) (expression_statement "*param_1 = (uint)puVar9;" (assignment_expression "*param_1 = (uint)puVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9"))) (; ";")) (} "}")))) (} "}"))) (goto_statement "goto LAB_0005907c;" (goto "goto") (statement_identifier "LAB_0005907c") (; ";")) (} "}"))) (if_statement "if (param_1[2] == *param_1) {\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }\n  else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }" (if "if") (parenthesized_expression "(param_1[2] == *param_1)" (( "(") (binary_expression "param_1[2] == *param_1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (compound_statement "{\n    if (param_1[1] < param_1[3]) goto LAB_00058f90;\n    unaff_s0 = (uint *)param_1[0xc];\n  }" ({ "{") (if_statement "if (param_1[1] < param_1[3]) goto LAB_00058f90;" (if "if") (parenthesized_expression "(param_1[1] < param_1[3])" (( "(") (binary_expression "param_1[1] < param_1[3]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (< "<") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) () ")")) (goto_statement "goto LAB_00058f90;" (goto "goto") (statement_identifier "LAB_00058f90") (; ";"))) (expression_statement "unaff_s0 = (uint *)param_1[0xc];" (assignment_expression "unaff_s0 = (uint *)param_1[0xc]" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)param_1[0xc]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n    unaff_s0 = (uint *)param_1[0xc];\n  }" (else "else") (compound_statement "{\n    unaff_s0 = (uint *)param_1[0xc];\n  }" ({ "{") (expression_statement "unaff_s0 = (uint *)param_1[0xc];" (assignment_expression "unaff_s0 = (uint *)param_1[0xc]" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)param_1[0xc]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (} "}")))) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = local_1c;" (assignment_expression "puVar9 = local_1c" (identifier "puVar9") (= "=") (identifier "local_1c")) (; ";")) (if_statement "if (unaff_s0 != (uint *)0x0) {\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(unaff_s0 != (uint *)0x0)" (( "(") (binary_expression "unaff_s0 != (uint *)0x0" (identifier "unaff_s0") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (unaff_s0[6] == 0) {\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }\n    else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(unaff_s0[6] == 0)" (( "(") (binary_expression "unaff_s0[6] == 0" (subscript_expression "unaff_s0[6]" (identifier "unaff_s0") ([ "[") (number_literal "6") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar1 = FUN_00058b04(unaff_s0);\n      param_4 = (uint *)unaff_s0[0xc];\n      param_3 = (uint *)unaff_s0[0xd];\n      puVar9 = (uint *)unaff_s0[2];\n      unaff_s0[8] = (uint)param_4;\n      unaff_s0[9] = (uint)param_3;\n      unaff_s0[10] = unaff_s0[0xe];\n      unaff_s0[0xb] = unaff_s0[0xf];\n      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;\n      unaff_s0[5] = 1;\n      if (uVar1 != 0) goto LAB_00059064;\nLAB_0005905c:\n      uVar1 = 0;\n    }" ({ "{") (expression_statement "uVar1 = FUN_00058b04(unaff_s0);" (assignment_expression "uVar1 = FUN_00058b04(unaff_s0)" (identifier "uVar1") (= "=") (call_expression "FUN_00058b04(unaff_s0)" (identifier "FUN_00058b04") (argument_list "(unaff_s0)" (( "(") (identifier "unaff_s0") () ")")))) (; ";")) (expression_statement "param_4 = (uint *)unaff_s0[0xc];" (assignment_expression "param_4 = (uint *)unaff_s0[0xc]" (identifier "param_4") (= "=") (cast_expression "(uint *)unaff_s0[0xc]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[0xc]" (identifier "unaff_s0") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "param_3 = (uint *)unaff_s0[0xd];" (assignment_expression "param_3 = (uint *)unaff_s0[0xd]" (identifier "param_3") (= "=") (cast_expression "(uint *)unaff_s0[0xd]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[0xd]" (identifier "unaff_s0") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (expression_statement "puVar9 = (uint *)unaff_s0[2];" (assignment_expression "puVar9 = (uint *)unaff_s0[2]" (identifier "puVar9") (= "=") (cast_expression "(uint *)unaff_s0[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[2]" (identifier "unaff_s0") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "unaff_s0[8] = (uint)param_4;" (assignment_expression "unaff_s0[8] = (uint)param_4" (subscript_expression "unaff_s0[8]" (identifier "unaff_s0") ([ "[") (number_literal "8") (] "]")) (= "=") (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4"))) (; ";")) (expression_statement "unaff_s0[9] = (uint)param_3;" (assignment_expression "unaff_s0[9] = (uint)param_3" (subscript_expression "unaff_s0[9]" (identifier "unaff_s0") ([ "[") (number_literal "9") (] "]")) (= "=") (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "unaff_s0[10] = unaff_s0[0xe];" (assignment_expression "unaff_s0[10] = unaff_s0[0xe]" (subscript_expression "unaff_s0[10]" (identifier "unaff_s0") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "unaff_s0[0xe]" (identifier "unaff_s0") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "unaff_s0[0xb] = unaff_s0[0xf];" (assignment_expression "unaff_s0[0xb] = unaff_s0[0xf]" (subscript_expression "unaff_s0[0xb]" (identifier "unaff_s0") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "unaff_s0[0xf]" (identifier "unaff_s0") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (if_statement "if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;" (if "if") (parenthesized_expression "(((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3]))" (( "(") (binary_expression "((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])" (parenthesized_expression "((uint *)unaff_s0[0xe] != puVar9)" (( "(") (binary_expression "(uint *)unaff_s0[0xe] != puVar9" (cast_expression "(uint *)unaff_s0[0xe]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[0xe]" (identifier "unaff_s0") ([ "[") (number_literal "0xe") (] "]"))) (!= "!=") (identifier "puVar9")) () ")")) (|| "||") (parenthesized_expression "(unaff_s0[0xf] != unaff_s0[3])" (( "(") (binary_expression "unaff_s0[0xf] != unaff_s0[3]" (subscript_expression "unaff_s0[0xf]" (identifier "unaff_s0") ([ "[") (number_literal "0xf") (] "]")) (!= "!=") (subscript_expression "unaff_s0[3]" (identifier "unaff_s0") ([ "[") (number_literal "3") (] "]"))) () ")"))) () ")")) (goto_statement "goto LAB_00058f48;" (goto "goto") (statement_identifier "LAB_00058f48") (; ";"))) (expression_statement "unaff_s0[5] = 1;" (assignment_expression "unaff_s0[5] = 1" (subscript_expression "unaff_s0[5]" (identifier "unaff_s0") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (uVar1 != 0) goto LAB_00059064;" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00059064;" (goto "goto") (statement_identifier "LAB_00059064") (; ";"))) (labeled_statement "LAB_0005905c:\n      uVar1 = 0;" (statement_identifier "LAB_0005905c") (: ":") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      unaff_s3 = (int *)*unaff_s0;\n      if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }\n      param_4 = (uint *)unaff_s0[0xb];\n      param_3 = (uint *)unaff_s0[10];\n      puVar9 = (uint *)unaff_s0[8];\n      uVar1 = unaff_s0[0xe];\n      uVar6 = unaff_s0[0xf];\n      unaff_s0[8] = unaff_s0[0xc];\n      unaff_s0[9] = unaff_s0[0xd];\n      unaff_s0[10] = uVar1;\n      unaff_s0[0xb] = uVar6;\n      unaff_s0[0xc] = (uint)puVar9;\n      unaff_s0[0xf] = (uint)param_4;\n      unaff_s0[0xe] = (uint)param_3;\n      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }\n    }" ({ "{") (expression_statement "unaff_s3 = (int *)*unaff_s0;" (assignment_expression "unaff_s3 = (int *)*unaff_s0" (identifier "unaff_s3") (= "=") (cast_expression "(int *)*unaff_s0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")))) (; ";")) (if_statement "if (*unaff_s3 != 0) {\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }" (if "if") (parenthesized_expression "(*unaff_s3 != 0)" (( "(") (binary_expression "*unaff_s3 != 0" (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar9 = local_2c;\n        local_2c[0] = 1;\n        FUN_0003fa58();\n        unaff_s3[1] = 0;\n        *unaff_s3 = 0;\n        uVar1 = local_2c[0];\n        if (local_2c[0] != 0) goto LAB_00059064;\n      }" ({ "{") (expression_statement "puVar9 = local_2c;" (assignment_expression "puVar9 = local_2c" (identifier "puVar9") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "local_2c[0] = 1;" (assignment_expression "local_2c[0] = 1" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_0003fa58();" (call_expression "FUN_0003fa58()" (identifier "FUN_0003fa58") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "unaff_s3[1] = 0;" (assignment_expression "unaff_s3[1] = 0" (subscript_expression "unaff_s3[1]" (identifier "unaff_s3") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*unaff_s3 = 0;" (assignment_expression "*unaff_s3 = 0" (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar1 = local_2c[0];" (assignment_expression "uVar1 = local_2c[0]" (identifier "uVar1") (= "=") (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (local_2c[0] != 0) goto LAB_00059064;" (if "if") (parenthesized_expression "(local_2c[0] != 0)" (( "(") (binary_expression "local_2c[0] != 0" (subscript_expression "local_2c[0]" (identifier "local_2c") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00059064;" (goto "goto") (statement_identifier "LAB_00059064") (; ";"))) (} "}"))) (expression_statement "param_4 = (uint *)unaff_s0[0xb];" (assignment_expression "param_4 = (uint *)unaff_s0[0xb]" (identifier "param_4") (= "=") (cast_expression "(uint *)unaff_s0[0xb]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[0xb]" (identifier "unaff_s0") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (expression_statement "param_3 = (uint *)unaff_s0[10];" (assignment_expression "param_3 = (uint *)unaff_s0[10]" (identifier "param_3") (= "=") (cast_expression "(uint *)unaff_s0[10]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[10]" (identifier "unaff_s0") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "puVar9 = (uint *)unaff_s0[8];" (assignment_expression "puVar9 = (uint *)unaff_s0[8]" (identifier "puVar9") (= "=") (cast_expression "(uint *)unaff_s0[8]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[8]" (identifier "unaff_s0") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "uVar1 = unaff_s0[0xe];" (assignment_expression "uVar1 = unaff_s0[0xe]" (identifier "uVar1") (= "=") (subscript_expression "unaff_s0[0xe]" (identifier "unaff_s0") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "uVar6 = unaff_s0[0xf];" (assignment_expression "uVar6 = unaff_s0[0xf]" (identifier "uVar6") (= "=") (subscript_expression "unaff_s0[0xf]" (identifier "unaff_s0") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "unaff_s0[8] = unaff_s0[0xc];" (assignment_expression "unaff_s0[8] = unaff_s0[0xc]" (subscript_expression "unaff_s0[8]" (identifier "unaff_s0") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "unaff_s0[0xc]" (identifier "unaff_s0") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "unaff_s0[9] = unaff_s0[0xd];" (assignment_expression "unaff_s0[9] = unaff_s0[0xd]" (subscript_expression "unaff_s0[9]" (identifier "unaff_s0") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "unaff_s0[0xd]" (identifier "unaff_s0") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "unaff_s0[10] = uVar1;" (assignment_expression "unaff_s0[10] = uVar1" (subscript_expression "unaff_s0[10]" (identifier "unaff_s0") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "unaff_s0[0xb] = uVar6;" (assignment_expression "unaff_s0[0xb] = uVar6" (subscript_expression "unaff_s0[0xb]" (identifier "unaff_s0") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "unaff_s0[0xc] = (uint)puVar9;" (assignment_expression "unaff_s0[0xc] = (uint)puVar9" (subscript_expression "unaff_s0[0xc]" (identifier "unaff_s0") ([ "[") (number_literal "0xc") (] "]")) (= "=") (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9"))) (; ";")) (expression_statement "unaff_s0[0xf] = (uint)param_4;" (assignment_expression "unaff_s0[0xf] = (uint)param_4" (subscript_expression "unaff_s0[0xf]" (identifier "unaff_s0") ([ "[") (number_literal "0xf") (] "]")) (= "=") (cast_expression "(uint)param_4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_4"))) (; ";")) (expression_statement "unaff_s0[0xe] = (uint)param_3;" (assignment_expression "unaff_s0[0xe] = (uint)param_3" (subscript_expression "unaff_s0[0xe]" (identifier "unaff_s0") ([ "[") (number_literal "0xe") (] "]")) (= "=") (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3"))) (; ";")) (if_statement "if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }\n      else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" (if "if") (parenthesized_expression "((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3]))" (( "(") (binary_expression "(uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])" (parenthesized_expression "(uVar1 == unaff_s0[2])" (( "(") (binary_expression "uVar1 == unaff_s0[2]" (identifier "uVar1") (== "==") (subscript_expression "unaff_s0[2]" (identifier "unaff_s0") ([ "[") (number_literal "2") (] "]"))) () ")")) (&& "&&") (parenthesized_expression "(uVar6 == unaff_s0[3])" (( "(") (binary_expression "uVar6 == unaff_s0[3]" (identifier "uVar6") (== "==") (subscript_expression "unaff_s0[3]" (identifier "unaff_s0") ([ "[") (number_literal "3") (] "]"))) () ")"))) () ")")) (compound_statement "{\n        uVar1 = 0;\n        unaff_s0[5] = 1;\n      }" ({ "{") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s0[5] = 1;" (assignment_expression "unaff_s0[5] = 1" (subscript_expression "unaff_s0[5]" (identifier "unaff_s0") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" (else "else") (compound_statement "{\n        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);\n        param_3 = unaff_s0;\n        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);\nLAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }\n      }" ({ "{") (expression_statement "puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);" (assignment_expression "puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8)" (identifier "puVar9") (= "=") (cast_expression "(uint *)(PTR_FUN_000f5300 + -0x6aa8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_FUN_000f5300 + -0x6aa8)" (( "(") (binary_expression "PTR_FUN_000f5300 + -0x6aa8" (identifier "PTR_FUN_000f5300") (+ "+") (number_literal "-0x6aa8")) () ")")))) (; ";")) (expression_statement "param_3 = unaff_s0;" (assignment_expression "param_3 = unaff_s0" (identifier "param_3") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x5930))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x5930)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + 0x5930)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + 0x5930)" (( "(") (binary_expression "PTR_LAB_000f52ec + 0x5930" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "0x5930")) () ")")))) () ")")) (argument_list "(*unaff_s0)" (( "(") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")) () ")")))) (; ";")) (labeled_statement "LAB_00058f48:\n        if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" (statement_identifier "LAB_00058f48") (: ":") (if_statement "if (uVar1 == 0) {\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }\n          goto LAB_0005905c;\n        }" ({ "{") (if_statement "if (unaff_s0[5] == 0) {\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" (if "if") (parenthesized_expression "(unaff_s0[5] == 0)" (( "(") (binary_expression "unaff_s0[5] == 0" (subscript_expression "unaff_s0[5]" (identifier "unaff_s0") ([ "[") (number_literal "5") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            param_4 = unaff_s0 + 10;\n            param_3 = unaff_s0 + 8;\n            puVar9 = param_1;\n            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);\n            if (uVar1 != 0) goto LAB_0005907c;\n            goto LAB_00058f90;\n          }" ({ "{") (expression_statement "param_4 = unaff_s0 + 10;" (assignment_expression "param_4 = unaff_s0 + 10" (identifier "param_4") (= "=") (binary_expression "unaff_s0 + 10" (identifier "unaff_s0") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "param_3 = unaff_s0 + 8;" (assignment_expression "param_3 = unaff_s0 + 8" (identifier "param_3") (= "=") (binary_expression "unaff_s0 + 8" (identifier "unaff_s0") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "puVar9 = param_1;" (assignment_expression "puVar9 = param_1" (identifier "puVar9") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x6530))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x6530)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + 0x6530)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + 0x6530)" (( "(") (binary_expression "PTR_LAB_000f52ec + 0x6530" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "0x6530")) () ")")))) () ")")) (argument_list "(*unaff_s0)" (( "(") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")) () ")")))) (; ";")) (if_statement "if (uVar1 != 0) goto LAB_0005907c;" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0005907c;" (goto "goto") (statement_identifier "LAB_0005907c") (; ";"))) (goto_statement "goto LAB_00058f90;" (goto "goto") (statement_identifier "LAB_00058f90") (; ";")) (} "}"))) (goto_statement "goto LAB_0005905c;" (goto "goto") (statement_identifier "LAB_0005905c") (; ";")) (} "}")))) (} "}")))) (} "}")))) (} "}"))) (labeled_statement "LAB_00059064:\n  FUN_0003fbf0(param_1);" (statement_identifier "LAB_00059064") (: ":") (expression_statement "FUN_0003fbf0(param_1);" (call_expression "FUN_0003fbf0(param_1)" (identifier "FUN_0003fbf0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";"))) (labeled_statement "LAB_0005907c:\n  if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }" (statement_identifier "LAB_0005907c") (: ":") (if_statement "if (local_1c == *(uint **)puVar18) {\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(local_1c == *(uint **)puVar18)" (( "(") (binary_expression "local_1c == *(uint **)puVar18" (identifier "local_1c") (== "==") (pointer_expression "*(uint **)puVar18" (* "*") (cast_expression "(uint **)puVar18" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar18")))) () ")")) (compound_statement "{\n    return uVar1;\n  }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))) (expression_statement "puVar7 = local_1c;" (assignment_expression "puVar7 = local_1c" (identifier "puVar7") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" (identifier "puVar16") (= "=") (identifier "PTR___stack_chk_fail_000f5540")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000f5540)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000f5540" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000f5540"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_90 = puVar16 + 0xa41c8;" (assignment_expression "puStack_90 = puVar16 + 0xa41c8" (identifier "puStack_90") (= "=") (binary_expression "puVar16 + 0xa41c8" (identifier "puVar16") (+ "+") (number_literal "0xa41c8"))) (; ";")) (expression_statement "puStack_78 = puVar18;" (assignment_expression "puStack_78 = puVar18" (identifier "puStack_78") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "piVar13 = *(int **)(puVar16 + 0x9c490);" (assignment_expression "piVar13 = *(int **)(puVar16 + 0x9c490)" (identifier "piVar13") (= "=") (pointer_expression "*(int **)(puVar16 + 0x9c490)" (* "*") (cast_expression "(int **)(puVar16 + 0x9c490)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar16 + 0x9c490)" (( "(") (binary_expression "puVar16 + 0x9c490" (identifier "puVar16") (+ "+") (number_literal "0x9c490")) () ")"))))) (; ";")) (expression_statement "uVar6 = *(uint *)(puVar7[2] + 4);" (assignment_expression "uVar6 = *(uint *)(puVar7[2] + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(puVar7[2] + 4)" (* "*") (cast_expression "(uint *)(puVar7[2] + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7[2] + 4)" (( "(") (binary_expression "puVar7[2] + 4" (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iStack_84 = *piVar13;" (assignment_expression "iStack_84 = *piVar13" (identifier "iStack_84") (= "=") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (; ";")) (expression_statement "uVar15 = puVar7[1];" (assignment_expression "uVar15 = puVar7[1]" (identifier "uVar15") (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar11 = puVar9;" (assignment_expression "puVar11 = puVar9" (identifier "puVar11") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puStack_80 = unaff_s0;" (assignment_expression "puStack_80 = unaff_s0" (identifier "puStack_80") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "puStack_7c = param_1;" (assignment_expression "puStack_7c = param_1" (identifier "puStack_7c") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piStack_74 = unaff_s3;" (assignment_expression "piStack_74 = unaff_s3" (identifier "piStack_74") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38);" (assignment_expression "uVar1 = FUN_00058e28(puVar7[3] + uVar6 * 0x38)" (identifier "uVar1") (= "=") (call_expression "FUN_00058e28(puVar7[3] + uVar6 * 0x38)" (identifier "FUN_00058e28") (argument_list "(puVar7[3] + uVar6 * 0x38)" (( "(") (binary_expression "puVar7[3] + uVar6 * 0x38" (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "uVar6 * 0x38" (identifier "uVar6") (* "*") (number_literal "0x38"))) () ")")))) (; ";")) (expression_statement "puVar18 = puStack_90;" (assignment_expression "puVar18 = puStack_90" (identifier "puVar18") (= "=") (identifier "puStack_90")) (; ";")) (if_statement "if (uVar1 == 0) {\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = uVar6 & 0xfffe;\n    uVar1 = uVar6 | 1;\n    uVar8 = puVar7[3];\n    uStack_88 = 0;\n    uVar6 = (int)(uVar6 + *puVar7) / 2;\n    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);\n    param_1 = (uint *)(uVar8 + uVar1 * 0x38);\n    if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }\nLAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);\n    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);\n    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);\n  }" ({ "{") (expression_statement "uVar10 = uVar6 & 0xfffe;" (assignment_expression "uVar10 = uVar6 & 0xfffe" (identifier "uVar10") (= "=") (binary_expression "uVar6 & 0xfffe" (identifier "uVar6") (& "&") (number_literal "0xfffe"))) (; ";")) (expression_statement "uVar1 = uVar6 | 1;" (assignment_expression "uVar1 = uVar6 | 1" (identifier "uVar1") (= "=") (binary_expression "uVar6 | 1" (identifier "uVar6") (| "|") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" (identifier "uVar8") (= "=") (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" (identifier "uStack_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = (int)(uVar6 + *puVar7) / 2;" (assignment_expression "uVar6 = (int)(uVar6 + *puVar7) / 2" (identifier "uVar6") (= "=") (binary_expression "(int)(uVar6 + *puVar7) / 2" (cast_expression "(int)(uVar6 + *puVar7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar6 + *puVar7)" (( "(") (binary_expression "uVar6 + *puVar7" (identifier "uVar6") (+ "+") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) () ")"))) (/ "/") (number_literal "2"))) (; ";")) (expression_statement "unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);" (assignment_expression "unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)(uVar8 + uVar10 * 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + uVar10 * 0x38)" (( "(") (binary_expression "uVar8 + uVar10 * 0x38" (identifier "uVar8") (+ "+") (binary_expression "uVar10 * 0x38" (identifier "uVar10") (* "*") (number_literal "0x38"))) () ")")))) (; ";")) (expression_statement "param_1 = (uint *)(uVar8 + uVar1 * 0x38);" (assignment_expression "param_1 = (uint *)(uVar8 + uVar1 * 0x38)" (identifier "param_1") (= "=") (cast_expression "(uint *)(uVar8 + uVar1 * 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + uVar1 * 0x38)" (( "(") (binary_expression "uVar8 + uVar1 * 0x38" (identifier "uVar8") (+ "+") (binary_expression "uVar1 * 0x38" (identifier "uVar1") (* "*") (number_literal "0x38"))) () ")")))) (; ";")) (if_statement "if ((int)uVar6 < 1) {\n      uVar1 = puVar7[2];\n    }\n    else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" (if "if") (parenthesized_expression "((int)uVar6 < 1)" (( "(") (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      uVar1 = puVar7[2];\n    }" ({ "{") (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" (identifier "uVar1") (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" (else "else") (compound_statement "{\n      unaff_s8 = &uStack_88;\n      unaff_s3 = (int *)0xb6db6db7;\n      uVar10 = uVar6;\n      do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);\n    }" ({ "{") (expression_statement "unaff_s8 = &uStack_88;" (assignment_expression "unaff_s8 = &uStack_88" (identifier "unaff_s8") (= "=") (pointer_expression "&uStack_88" (& "&") (identifier "uStack_88"))) (; ";")) (expression_statement "unaff_s3 = (int *)0xb6db6db7;" (assignment_expression "unaff_s3 = (int *)0xb6db6db7" (identifier "unaff_s3") (= "=") (cast_expression "(int *)0xb6db6db7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xb6db6db7"))) (; ";")) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" (identifier "uVar10") (= "=") (identifier "uVar6")) (; ";")) (do_statement "do {\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      } while (uVar6 != 0);" (do "do") (compound_statement "{\n        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }\n        uVar1 = puVar7[2];\n        param_3 = (uint *)(uVar1 + uVar10 * 4);\n        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;\n        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n        uVar10 = uVar6;\n      }" ({ "{") (while_statement "while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }" (while "while") (parenthesized_expression "(uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0)" (( "(") (comma_expression "uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0" (assignment_expression "uVar6 = (int)uVar10 >> 1" (identifier "uVar6") (= "=") (binary_expression "(int)uVar10 >> 1" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "1"))) (, ",") (binary_expression "unaff_s0[6] != 0" (subscript_expression "unaff_s0[6]" (identifier "unaff_s0") ([ "[") (number_literal "6") (] "]")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }\n          uVar1 = puVar7[2];\n          param_3 = (uint *)(uVar1 + uVar10 * 4);\n          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;\n          uStack_88 = 0;\n          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);\n          uVar10 = uVar6;\n          if (uVar6 == 0) goto LAB_000592a8;\n        }" ({ "{") (if_statement "if (param_1[6] != 0) {\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }" (if "if") (parenthesized_expression "(param_1[6] != 0)" (( "(") (binary_expression "param_1[6] != 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uStack_94 = param_1[5];\n            param_4 = (uint *)unaff_s0[5];\n            uStack_98 = param_1[8];\n            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);\n            puVar18 = puStack_90;\n            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }\n            uVar8 = puVar7[3];\n          }" ({ "{") (expression_statement "uStack_94 = param_1[5];" (assignment_expression "uStack_94 = param_1[5]" (identifier "uStack_94") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "param_4 = (uint *)unaff_s0[5];" (assignment_expression "param_4 = (uint *)unaff_s0[5]" (identifier "param_4") (= "=") (cast_expression "(uint *)unaff_s0[5]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "unaff_s0[5]" (identifier "unaff_s0") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "uStack_98 = param_1[8];" (assignment_expression "uStack_98 = param_1[8]" (identifier "uStack_98") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);" (assignment_expression "iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8])" (identifier "iVar2") (= "=") (call_expression "(**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8])" (parenthesized_expression "(**(code **)(uVar15 + 0x20))" (( "(") (pointer_expression "**(code **)(uVar15 + 0x20)" (* "*") (pointer_expression "*(code **)(uVar15 + 0x20)" (* "*") (cast_expression "(code **)(uVar15 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar15 + 0x20)" (( "(") (binary_expression "uVar15 + 0x20" (identifier "uVar15") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(uVar15,unaff_s8,unaff_s0[8])" (( "(") (identifier "uVar15") (, ",") (identifier "unaff_s8") (, ",") (subscript_expression "unaff_s0[8]" (identifier "unaff_s0") ([ "[") (number_literal "8") (] "]")) () ")")))) (; ";")) (expression_statement "puVar18 = puStack_90;" (assignment_expression "puVar18 = puStack_90" (identifier "puVar18") (= "=") (identifier "puStack_90")) (; ";")) (if_statement "if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" (if "if") (parenthesized_expression "((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0))))" (( "(") (binary_expression "(-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))" (parenthesized_expression "(-1 < iVar2)" (( "(") (binary_expression "-1 < iVar2" (number_literal "-1") (< "<") (identifier "iVar2")) () ")")) (&& "&&") (parenthesized_expression "((iVar2 != 0 || (param_1 <= unaff_s0)))" (( "(") (parenthesized_expression "(iVar2 != 0 || (param_1 <= unaff_s0))" (( "(") (binary_expression "iVar2 != 0 || (param_1 <= unaff_s0)" (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(param_1 <= unaff_s0)" (( "(") (binary_expression "param_1 <= unaff_s0" (identifier "param_1") (<= "<=") (identifier "unaff_s0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              uVar8 = puVar7[3];\n              if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }\n              break;\n            }" ({ "{") (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" (identifier "uVar8") (= "=") (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if (unaff_s0[6] != 0) {\n                uStack_88 = 0;\n              }" (if "if") (parenthesized_expression "(unaff_s0[6] != 0)" (( "(") (binary_expression "unaff_s0[6] != 0" (subscript_expression "unaff_s0[6]" (identifier "unaff_s0") ([ "[") (number_literal "6") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                uStack_88 = 0;\n              }" ({ "{") (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" (identifier "uStack_88") (= "=") (number_literal "0")) (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar8 = puVar7[3];" (assignment_expression "uVar8 = puVar7[3]" (identifier "uVar8") (= "=") (subscript_expression "puVar7[3]" (identifier "puVar7") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" (identifier "uVar1") (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_3 = (uint *)(uVar1 + uVar10 * 4);" (assignment_expression "param_3 = (uint *)(uVar1 + uVar10 * 4)" (identifier "param_3") (= "=") (cast_expression "(uint *)(uVar1 + uVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + uVar10 * 4)" (( "(") (binary_expression "uVar1 + uVar10 * 4" (identifier "uVar1") (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;" (assignment_expression "*param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249" (parenthesized_expression "((int)((int)unaff_s0 - uVar8) >> 3)" (( "(") (binary_expression "(int)((int)unaff_s0 - uVar8) >> 3" (cast_expression "(int)((int)unaff_s0 - uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)unaff_s0 - uVar8)" (( "(") (binary_expression "(int)unaff_s0 - uVar8" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (- "-") (identifier "uVar8")) () ")"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x49249249"))) (; ";")) (expression_statement "uStack_88 = 0;" (assignment_expression "uStack_88 = 0" (identifier "uStack_88") (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);" (assignment_expression "param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" (identifier "param_1") (= "=") (cast_expression "(uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" (( "(") (binary_expression "uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (identifier "uVar8") (+ "+") (binary_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4)" (* "*") (cast_expression "(int *)(uVar1 + (uVar10 ^ 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + (uVar10 ^ 1) * 4)" (( "(") (binary_expression "uVar1 + (uVar10 ^ 1) * 4" (identifier "uVar1") (+ "+") (binary_expression "(uVar10 ^ 1) * 4" (parenthesized_expression "(uVar10 ^ 1)" (( "(") (binary_expression "uVar10 ^ 1" (identifier "uVar10") (^ "^") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (* "*") (number_literal "0x38"))) () ")")))) (; ";")) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" (identifier "uVar10") (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (uVar6 == 0) goto LAB_000592a8;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000592a8;" (goto "goto") (statement_identifier "LAB_000592a8") (; ";"))) (} "}"))) (expression_statement "uVar1 = puVar7[2];" (assignment_expression "uVar1 = puVar7[2]" (identifier "uVar1") (= "=") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_3 = (uint *)(uVar1 + uVar10 * 4);" (assignment_expression "param_3 = (uint *)(uVar1 + uVar10 * 4)" (identifier "param_3") (= "=") (cast_expression "(uint *)(uVar1 + uVar10 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + uVar10 * 4)" (( "(") (binary_expression "uVar1 + uVar10 * 4" (identifier "uVar1") (+ "+") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "*param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;" (assignment_expression "*param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "((int)((int)param_1 - uVar8) >> 3) * -0x49249249" (parenthesized_expression "((int)((int)param_1 - uVar8) >> 3)" (( "(") (binary_expression "(int)((int)param_1 - uVar8) >> 3" (cast_expression "(int)((int)param_1 - uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)param_1 - uVar8)" (( "(") (binary_expression "(int)param_1 - uVar8" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (- "-") (identifier "uVar8")) () ")"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x49249249"))) (; ";")) (expression_statement "unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);" (assignment_expression "unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" (identifier "unaff_s0") (= "=") (cast_expression "(uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38)" (( "(") (binary_expression "uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (identifier "uVar8") (+ "+") (binary_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38" (pointer_expression "*(int *)(uVar1 + (uVar10 ^ 1) * 4)" (* "*") (cast_expression "(int *)(uVar1 + (uVar10 ^ 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + (uVar10 ^ 1) * 4)" (( "(") (binary_expression "uVar1 + (uVar10 ^ 1) * 4" (identifier "uVar1") (+ "+") (binary_expression "(uVar10 ^ 1) * 4" (parenthesized_expression "(uVar10 ^ 1)" (( "(") (binary_expression "uVar10 ^ 1" (identifier "uVar10") (^ "^") (number_literal "1")) () ")")) (* "*") (number_literal "4"))) () ")")))) (* "*") (number_literal "0x38"))) () ")")))) (; ";")) (expression_statement "uVar10 = uVar6;" (assignment_expression "uVar10 = uVar6" (identifier "uVar10") (= "=") (identifier "uVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (labeled_statement "LAB_000592a8:\n    puVar11 = *(uint **)(uVar15 + 0xc);" (statement_identifier "LAB_000592a8") (: ":") (expression_statement "puVar11 = *(uint **)(uVar15 + 0xc);" (assignment_expression "puVar11 = *(uint **)(uVar15 + 0xc)" (identifier "puVar11") (= "=") (pointer_expression "*(uint **)(uVar15 + 0xc)" (* "*") (cast_expression "(uint **)(uVar15 + 0xc)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar15 + 0xc)" (( "(") (binary_expression "uVar15 + 0xc" (identifier "uVar15") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (expression_statement "*puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);" (assignment_expression "*puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (call_expression "(uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0)" (( "(") (binary_expression "*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0" (pointer_expression "*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" (* "*") (cast_expression "(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18)" (( "(") (binary_expression "uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18" (binary_expression "uVar8 + *(int *)(uVar1 + 4) * 0x38" (identifier "uVar8") (+ "+") (binary_expression "*(int *)(uVar1 + 4) * 0x38" (pointer_expression "*(int *)(uVar1 + 4)" (* "*") (cast_expression "(int *)(uVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + 4)" (( "(") (binary_expression "uVar1 + 4" (identifier "uVar1") (+ "+") (number_literal "4")) () ")")))) (* "*") (number_literal "0x38"))) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")))) (; ";")) (expression_statement "uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);" (assignment_expression "uVar1 = (uint)*(byte *)((int)puVar11 + 0xb)" (identifier "uVar1") (= "=") (binary_expression "(uint)*(byte *)((int)puVar11 + 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)puVar11 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar11 + 0xb)" (( "(") (binary_expression "(int)puVar11 + 0xb" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (iStack_84 == *piVar13) {\n    return uVar1;\n  }" (if "if") (parenthesized_expression "(iStack_84 == *piVar13)" (( "(") (binary_expression "iStack_84 == *piVar13" (identifier "iStack_84") (== "==") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) () ")")) (compound_statement "{\n    return uVar1;\n  }" ({ "{") (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}"))) (expression_statement "pcVar17 = *(code **)(puVar18 + -0x7d60);" (assignment_expression "pcVar17 = *(code **)(puVar18 + -0x7d60)" (identifier "pcVar17") (= "=") (pointer_expression "*(code **)(puVar18 + -0x7d60)" (* "*") (cast_expression "(code **)(puVar18 + -0x7d60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar18 + -0x7d60)" (( "(") (binary_expression "puVar18 + -0x7d60" (identifier "puVar18") (+ "+") (number_literal "-0x7d60")) () ")"))))) (; ";")) (expression_statement "pcVar19 = FUN_00059320;" (assignment_expression "pcVar19 = FUN_00059320" (identifier "pcVar19") (= "=") (identifier "FUN_00059320")) (; ";")) (expression_statement "iVar2 = iStack_84;" (assignment_expression "iVar2 = iStack_84" (identifier "iVar2") (= "=") (identifier "iStack_84")) (; ";")) (expression_statement "(*pcVar17)();" (call_expression "(*pcVar17)()" (parenthesized_expression "(*pcVar17)" (( "(") (pointer_expression "*pcVar17" (* "*") (identifier "pcVar17")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar3 = *(int **)(pcVar17 + 0x9c248);" (assignment_expression "piVar3 = *(int **)(pcVar17 + 0x9c248)" (identifier "piVar3") (= "=") (pointer_expression "*(int **)(pcVar17 + 0x9c248)" (* "*") (cast_expression "(int **)(pcVar17 + 0x9c248)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar17 + 0x9c248)" (( "(") (binary_expression "pcVar17 + 0x9c248" (identifier "pcVar17") (+ "+") (number_literal "0x9c248")) () ")"))))) (; ";")) (expression_statement "uVar10 = param_3[1];" (assignment_expression "uVar10 = param_3[1]" (identifier "uVar10") (= "=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar8 = *param_3;" (assignment_expression "uVar8 = *param_3" (identifier "uVar8") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "iStack_d4 = *piVar3;" (assignment_expression "iStack_d4 = *piVar3" (identifier "iStack_d4") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "puStack_d0 = unaff_s0;" (assignment_expression "puStack_d0 = unaff_s0" (identifier "puStack_d0") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "puStack_cc = param_1;" (assignment_expression "puStack_cc = param_1" (identifier "puStack_cc") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uStack_c8 = uVar6;" (assignment_expression "uStack_c8 = uVar6" (identifier "uStack_c8") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "piStack_c4 = unaff_s3;" (assignment_expression "piStack_c4 = unaff_s3" (identifier "piStack_c4") (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "piStack_c0 = piVar13;" (assignment_expression "piStack_c0 = piVar13" (identifier "piStack_c0") (= "=") (identifier "piVar13")) (; ";")) (expression_statement "puStack_bc = puVar9;" (assignment_expression "puStack_bc = puVar9" (identifier "puStack_bc") (= "=") (identifier "puVar9")) (; ";")) (expression_statement "puStack_b8 = puVar7;" (assignment_expression "puStack_b8 = puVar7" (identifier "puStack_b8") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "uStack_b4 = uVar15;" (assignment_expression "uStack_b4 = uVar15" (identifier "uStack_b4") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "puStack_b0 = unaff_s8;" (assignment_expression "puStack_b0 = unaff_s8" (identifier "puStack_b0") (= "=") (identifier "unaff_s8")) (; ";")) (expression_statement "pcStack_ac = pcVar19;" (assignment_expression "pcStack_ac = pcVar19" (identifier "pcStack_ac") (= "=") (identifier "pcVar19")) (; ";")) (expression_statement "uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);" (assignment_expression "uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11)" (parenthesized_expression "(*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))" (( "(") (pointer_expression "*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" (* "*") (cast_expression "(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68)" (( "(") (binary_expression "*(int *)(pcVar17 + 0x9bfcc) + 0x4d68" (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" (* "*") (cast_expression "(int *)(pcVar17 + 0x9bfcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0x9bfcc)" (( "(") (binary_expression "pcVar17 + 0x9bfcc" (identifier "pcVar17") (+ "+") (number_literal "0x9bfcc")) () ")")))) (+ "+") (number_literal "0x4d68")) () ")")))) () ")")) (argument_list "(puVar11)" (( "(") (identifier "puVar11") () ")")))) (; ";")) (expression_statement "*param_4 = uVar1;" (assignment_expression "*param_4 = uVar1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar1 == 0) {\n    uVar6 = 7;\n  }\n  else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = 7;\n  }" ({ "{") (expression_statement "uVar6 = 7;" (assignment_expression "uVar6 = 7" (identifier "uVar6") (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" (else "else") (compound_statement "{\n    uVar6 = 0;\n    if ((int)puVar11 < 1) goto LAB_00059470;\n    iVar14 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar12 = 0;\n    puVar9 = (uint *)0x0;\n    iVar4 = *(int *)(pcVar17 + 0x9bfcc);\n    iVar5 = *(int *)(pcVar17 + 0x9bfe0);\n    do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);\n  }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)puVar11 < 1) goto LAB_00059470;" (if "if") (parenthesized_expression "((int)puVar11 < 1)" (( "(") (binary_expression "(int)puVar11 < 1" (cast_expression "(int)puVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar11")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00059470;" (goto "goto") (statement_identifier "LAB_00059470") (; ";"))) (expression_statement "iVar14 = *(int *)(pcVar17 + 0x9bfcc);" (assignment_expression "iVar14 = *(int *)(pcVar17 + 0x9bfcc)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" (* "*") (cast_expression "(int *)(pcVar17 + 0x9bfcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0x9bfcc)" (( "(") (binary_expression "pcVar17 + 0x9bfcc" (identifier "pcVar17") (+ "+") (number_literal "0x9bfcc")) () ")"))))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = (uint *)0x0;" (assignment_expression "puVar9 = (uint *)0x0" (identifier "puVar9") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar4 = *(int *)(pcVar17 + 0x9bfcc);" (assignment_expression "iVar4 = *(int *)(pcVar17 + 0x9bfcc)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(pcVar17 + 0x9bfcc)" (* "*") (cast_expression "(int *)(pcVar17 + 0x9bfcc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0x9bfcc)" (( "(") (binary_expression "pcVar17 + 0x9bfcc" (identifier "pcVar17") (+ "+") (number_literal "0x9bfcc")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(pcVar17 + 0x9bfe0);" (assignment_expression "iVar5 = *(int *)(pcVar17 + 0x9bfe0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(pcVar17 + 0x9bfe0)" (* "*") (cast_expression "(int *)(pcVar17 + 0x9bfe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar17 + 0x9bfe0)" (( "(") (binary_expression "pcVar17 + 0x9bfe0" (identifier "pcVar17") (+ "+") (number_literal "0x9bfe0")) () ")"))))) (; ";")) (do_statement "do {\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    } while (uVar6 == 0);" (do "do") (compound_statement "{\n      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);\n      puVar9 = (uint *)((int)puVar9 + 1);\n      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);\n      if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }\n      iStack_dc = 0;\n      iStack_e0 = 0;\n      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);\n      uVar15 = piVar13[1] + iStack_dc;\n      piVar13[3] = uVar15;\n      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;\n      if (uVar6 != 0) goto LAB_00059430;\n      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);\n      uVar10 = piVar13[3];\n      uVar8 = piVar13[2];\n      if (puVar9 == puVar11) goto LAB_00059548;\n      iVar12 = iVar12 + 0x38;\n    }" ({ "{") (expression_statement "piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);" (assignment_expression "piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12)" (identifier "piVar13") (= "=") (cast_expression "(int *)(*(int *)(uVar1 + 0xc) + iVar12)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar1 + 0xc) + iVar12)" (( "(") (binary_expression "*(int *)(uVar1 + 0xc) + iVar12" (pointer_expression "*(int *)(uVar1 + 0xc)" (* "*") (cast_expression "(int *)(uVar1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + 0xc)" (( "(") (binary_expression "uVar1 + 0xc" (identifier "uVar1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (identifier "iVar12")) () ")")))) (; ";")) (expression_statement "puVar9 = (uint *)((int)puVar9 + 1);" (assignment_expression "puVar9 = (uint *)((int)puVar9 + 1)" (identifier "puVar9") (= "=") (cast_expression "(uint *)((int)puVar9 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar9 + 1)" (( "(") (binary_expression "(int)puVar9 + 1" (cast_expression "(int)puVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);" (assignment_expression "uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" (identifier "uVar6") (= "=") (call_expression "(*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" (parenthesized_expression "(*(code *)(iVar14 + 0x6530))" (( "(") (pointer_expression "*(code *)(iVar14 + 0x6530)" (* "*") (cast_expression "(code *)(iVar14 + 0x6530)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar14 + 0x6530)" (( "(") (binary_expression "iVar14 + 0x6530" (identifier "iVar14") (+ "+") (number_literal "0x6530")) () ")")))) () ")")) (argument_list "(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10)" (( "(") (identifier "iVar2") (, ",") (identifier "piVar13") (, ",") (binary_expression "iVar2 + 0x28" (identifier "iVar2") (+ "+") (number_literal "0x28")) (, ",") (binary_expression "iVar2 + 0x30" (identifier "iVar2") (+ "+") (number_literal "0x30")) (, ",") (identifier "uVar8") (, ",") (identifier "uVar10") () ")")))) (; ";")) (if_statement "if (uVar6 != 0) {\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00059430:\n        uVar10 = piVar13[3];\n        uVar8 = piVar13[2];\n        break;\n      }" ({ "{") (labeled_statement "LAB_00059430:\n        uVar10 = piVar13[3];" (statement_identifier "LAB_00059430") (: ":") (expression_statement "uVar10 = piVar13[3];" (assignment_expression "uVar10 = piVar13[3]" (identifier "uVar10") (= "=") (subscript_expression "piVar13[3]" (identifier "piVar13") ([ "[") (number_literal "3") (] "]"))) (; ";"))) (expression_statement "uVar8 = piVar13[2];" (assignment_expression "uVar8 = piVar13[2]" (identifier "uVar8") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iStack_dc = 0;" (assignment_expression "iStack_dc = 0" (identifier "iStack_dc") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_e0 = 0;" (assignment_expression "iStack_e0 = 0" (identifier "iStack_e0") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);" (assignment_expression "uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0)" (identifier "uVar6") (= "=") (call_expression "(*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0)" (parenthesized_expression "(*(code *)(iVar4 + 0x61b4))" (( "(") (pointer_expression "*(code *)(iVar4 + 0x61b4)" (* "*") (cast_expression "(code *)(iVar4 + 0x61b4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x61b4)" (( "(") (binary_expression "iVar4 + 0x61b4" (identifier "iVar4") (+ "+") (number_literal "0x61b4")) () ")")))) () ")")) (argument_list "(piVar13,&iStack_e0)" (( "(") (identifier "piVar13") (, ",") (pointer_expression "&iStack_e0" (& "&") (identifier "iStack_e0")) () ")")))) (; ";")) (expression_statement "uVar15 = piVar13[1] + iStack_dc;" (assignment_expression "uVar15 = piVar13[1] + iStack_dc" (identifier "uVar15") (= "=") (binary_expression "piVar13[1] + iStack_dc" (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iStack_dc"))) (; ";")) (expression_statement "piVar13[3] = uVar15;" (assignment_expression "piVar13[3] = uVar15" (subscript_expression "piVar13[3]" (identifier "piVar13") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;" (assignment_expression "piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0" (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0" (binary_expression "(uint)(uVar15 < (uint)piVar13[1]) + *piVar13" (call_expression "(uint)(uVar15 < (uint)piVar13[1])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar15 < (uint)piVar13[1])" (( "(") (binary_expression "uVar15 < (uint)piVar13[1]" (identifier "uVar15") (< "<") (cast_expression "(uint)piVar13[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar13[1]" (identifier "piVar13") ([ "[") (number_literal "1") (] "]")))) () ")"))) (+ "+") (pointer_expression "*piVar13" (* "*") (identifier "piVar13"))) (+ "+") (identifier "iStack_e0"))) (; ";")) (if_statement "if (uVar6 != 0) goto LAB_00059430;" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00059430;" (goto "goto") (statement_identifier "LAB_00059430") (; ";"))) (expression_statement "uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);" (assignment_expression "uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13)" (identifier "uVar6") (= "=") (call_expression "(*(code *)(iVar5 + -0x71d8))(piVar13)" (parenthesized_expression "(*(code *)(iVar5 + -0x71d8))" (( "(") (pointer_expression "*(code *)(iVar5 + -0x71d8)" (* "*") (cast_expression "(code *)(iVar5 + -0x71d8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + -0x71d8)" (( "(") (binary_expression "iVar5 + -0x71d8" (identifier "iVar5") (+ "+") (number_literal "-0x71d8")) () ")")))) () ")")) (argument_list "(piVar13)" (( "(") (identifier "piVar13") () ")")))) (; ";")) (expression_statement "uVar10 = piVar13[3];" (assignment_expression "uVar10 = piVar13[3]" (identifier "uVar10") (= "=") (subscript_expression "piVar13[3]" (identifier "piVar13") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar8 = piVar13[2];" (assignment_expression "uVar8 = piVar13[2]" (identifier "uVar8") (= "=") (subscript_expression "piVar13[2]" (identifier "piVar13") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (puVar9 == puVar11) goto LAB_00059548;" (if "if") (parenthesized_expression "(puVar9 == puVar11)" (( "(") (binary_expression "puVar9 == puVar11" (identifier "puVar9") (== "==") (identifier "puVar11")) () ")")) (goto_statement "goto LAB_00059548;" (goto "goto") (statement_identifier "LAB_00059548") (; ";"))) (expression_statement "iVar12 = iVar12 + 0x38;" (assignment_expression "iVar12 = iVar12 + 0x38" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 0x38" (identifier "iVar12") (+ "+") (number_literal "0x38"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")))) (do_statement "do {\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  } while( true );" (do "do") (compound_statement "{\n    FUN_0003fc8c(uVar1);\n    *param_4 = 0;\nLAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);\n  }" ({ "{") (expression_statement "FUN_0003fc8c(uVar1);" (call_expression "FUN_0003fc8c(uVar1)" (identifier "FUN_0003fc8c") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00059470:\n    do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);" (statement_identifier "LAB_00059470") (: ":") (do_statement "do {\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    } while (uVar6 == 0);" (do "do") (compound_statement "{\n      iVar2 = *piVar3;\n      param_3[1] = uVar10;\n      *param_3 = uVar8;\n      if (iStack_d4 == iVar2) {\n        return uVar6;\n      }\n      uVar6 = (**(code **)(pcVar17 + 0x9c220))();\nLAB_00059548:\n    }" ({ "{") (expression_statement "iVar2 = *piVar3;" (assignment_expression "iVar2 = *piVar3" (identifier "iVar2") (= "=") (pointer_expression "*piVar3" (* "*") (identifier "piVar3"))) (; ";")) (expression_statement "param_3[1] = uVar10;" (assignment_expression "param_3[1] = uVar10" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*param_3 = uVar8;" (assignment_expression "*param_3 = uVar8" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (iStack_d4 == iVar2) {\n        return uVar6;\n      }" (if "if") (parenthesized_expression "(iStack_d4 == iVar2)" (( "(") (binary_expression "iStack_d4 == iVar2" (identifier "iStack_d4") (== "==") (identifier "iVar2")) () ")")) (compound_statement "{\n        return uVar6;\n      }" ({ "{") (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (expression_statement "uVar6 = (**(code **)(pcVar17 + 0x9c220))();" (assignment_expression "uVar6 = (**(code **)(pcVar17 + 0x9c220))()" (identifier "uVar6") (= "=") (call_expression "(**(code **)(pcVar17 + 0x9c220))()" (parenthesized_expression "(**(code **)(pcVar17 + 0x9c220))" (( "(") (pointer_expression "**(code **)(pcVar17 + 0x9c220)" (* "*") (pointer_expression "*(code **)(pcVar17 + 0x9c220)" (* "*") (cast_expression "(code **)(pcVar17 + 0x9c220)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar17 + 0x9c220)" (( "(") (binary_expression "pcVar17 + 0x9c220" (identifier "pcVar17") (+ "+") (number_literal "0x9c220")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_00059548:" (statement_identifier "LAB_00059548") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

int function_1(type_1 *var_21)

{
  int var_5;
  void *var_2;
  type_2 var_19;
  int var_13;
  int *piVar5;
  type_3 *var_25;
  int var_31;
  type_4 *var_3;
  type_1 *var_8;
  int var_12;
  type_1 *var_9;
  type_2 var_20;
  type_1 *var_32;
  type_5 *in_a2;
  type_1 *var_4;
  type_6 uVar13;
  type_7 *pSVar14;
  type_8 *pMVar15;
  type_5 *var_6;
  int var_26;
  type_2 var_18;
  type_7 *unaff_s3;
  int *piVar18;
  int var_27;
  type_9 *var_17;
  type_10 *var_24;
  type_9 *var_23;
  type_6 *unaff_s8;
  type_11 *var_28;
  type_10 *pcVar24;
  int var_30;
  int var_29;
  int var_34;
  type_5 *pIStack_d0;
  type_5 *pIStack_cc;
  type_2 uStack_c8;
  type_7 *pSStack_c4;
  int *piStack_c0;
  type_1 *pPStack_bc;
  type_1 *pPStack_b8;
  int iStack_b4;
  type_6 *puStack_b0;
  type_10 *pcStack_ac;
  type_12 *psStack_98;
  int iStack_94;
  type_9 *puStack_90;
  type_6 uStack_88;
  int var_22;
  type_5 *pIStack_80;
  type_1 *pPStack_7c;
  type_9 *puStack_78;
  type_7 *pSStack_74;
  void *var_11;
  type_13 nRec;
  type_1 *var_16;
  
  var_23 = PTR___stack_chk_guard_000f5568;
  nRec._4_4_ = (type_1 *)0x0;
  nRec._0_4_ = 0;
  var_16 = *(type_1 **)PTR___stack_chk_guard_000f5568;
  if (*(int *)&var_21->iReadOff < *(int *)&var_21->iEof) {
LAB_00058f90:
    var_9 = (type_1 *)&nRec;
    var_2 = (void *)(*(type_10 *)(var_1 + 0x61b4))(var_21);
    if (var_2 == (void *)0x0) {
      var_3 = var_21->aMap;
      var_21->nKey = (int)nRec._4_4_;
      if (var_3 == (type_4 *)0x0) {
        in_a2 = (type_5 *)&var_21->aKey;
        var_9 = nRec._4_4_;
        var_2 = (void *)(*(type_10 *)(var_1 + 0x5ea0))(var_21);
      }
      else {
        in_a2 = *(type_5 **)((int)&var_21->iReadOff + 4);
        var_5 = *(int *)&var_21->iReadOff;
        var_4 = (type_1 *)((int)&nRec._4_4_[-1].pFd + (int)&in_a2->aFile[0].pFd);
        *(type_1 **)((int)&var_21->iReadOff + 4) = var_4;
        var_9 = (type_1 *)((type_2)(var_4 < nRec._4_4_) + ((int)nRec._4_4_ >> 0x1f) + var_5);
        var_21->aKey = var_3 + (int)in_a2;
        *(type_1 **)&var_21->iReadOff = var_9;
      }
    }
    goto LAB_0005907c;
  }
  if (*(int *)&var_21->iEof == *(int *)&var_21->iReadOff) {
    if ((type_2)var_21->iReadOff < (type_2)var_21->iEof) goto LAB_00058f90;
    var_6 = var_21->pIncr;
  }
  else {
    var_6 = var_21->pIncr;
  }
  var_2 = (void *)0x0;
  var_9 = var_16;
  if (var_6 != (type_5 *)0x0) {
    if (var_6->bUseThread == 0) {
      var_2 = (void *)var_7(var_6);
      var_4 = (type_1 *)var_6->aFile[1].pFd;
      in_a2 = *(type_5 **)&var_6->aFile[1].field_0x4;
      var_8 = *(type_1 **)&var_6->aFile[1].iEof;
      var_5 = (int)var_6->aFile[1].iEof;
      var_9 = *(type_1 **)&var_6->iStartOff;
      var_6->aFile[0].pFd = (type_12 *)var_4;
      *(type_5 **)&var_6->aFile[0].field_0x4 = in_a2;
      *(type_1 **)&var_6->aFile[0].iEof = var_8;
      *(int *)((int)&var_6->aFile[0].iEof + 4) = var_5;
      if ((var_8 != var_9) || (var_5 != (int)var_6->iStartOff)) goto LAB_00058f48;
      var_6->bEof = 1;
      if (var_2 != (void *)0x0) goto LAB_00059064;
LAB_0005905c:
      var_2 = (void *)0x0;
    }
    else {
      unaff_s3 = var_6->pTask;
      if (unaff_s3->pThread != (type_14 *)0x0) {
        var_9 = (type_1 *)&var_11;
        var_11 = (void *)0x1;
        var_10(unaff_s3->pThread,(void **)var_9);
        unaff_s3->bDone = 0;
        unaff_s3->pThread = (type_14 *)0x0;
        var_2 = var_11;
        if (var_11 != (void *)0x0) goto LAB_00059064;
      }
      var_4 = *(type_1 **)((int)&var_6->aFile[0].iEof + 4);
      in_a2 = *(type_5 **)&var_6->aFile[0].iEof;
      var_9 = (type_1 *)var_6->aFile[0].pFd;
      var_5 = *(int *)&var_6->aFile[1].iEof;
      var_13 = (int)var_6->aFile[1].iEof;
      uVar13 = *(type_6 *)&var_6->aFile[1].field_0x4;
      var_12 = *(int *)&var_6->iStartOff;
      var_6->aFile[0].pFd = var_6->aFile[1].pFd;
      *(type_6 *)&var_6->aFile[0].field_0x4 = uVar13;
      *(int *)&var_6->aFile[0].iEof = var_5;
      *(int *)((int)&var_6->aFile[0].iEof + 4) = var_13;
      var_6->aFile[1].pFd = (type_12 *)var_9;
      *(type_1 **)((int)&var_6->aFile[1].iEof + 4) = var_4;
      *(type_5 **)&var_6->aFile[1].iEof = in_a2;
      if ((var_5 == var_12) && (var_13 == (int)var_6->iStartOff)) {
        var_2 = (void *)0x0;
        var_6->bEof = 1;
      }
      else {
        var_9 = (type_1 *)(var_14 + -0x6aa8);
        in_a2 = var_6;
        var_2 = (void *)(*(type_10 *)(var_1 + 0x5930))(var_6->pTask);
LAB_00058f48:
        if (var_2 == (void *)0x0) {
          if (var_6->bEof == 0) {
            var_4 = (type_1 *)&var_6->aFile[0].iEof;
            in_a2 = (type_5 *)var_6->aFile;
            var_9 = var_21;
            var_2 = (void *)(*(type_10 *)(var_1 + 0x6530))(var_6->pTask);
            if (var_2 != (void *)0x0) goto LAB_0005907c;
            goto LAB_00058f90;
          }
          goto LAB_0005905c;
        }
      }
    }
  }
LAB_00059064:
  var_15(var_21);
LAB_0005907c:
  if (var_16 == *(type_1 **)var_23) {
    return (int)var_2;
  }
  var_8 = var_16;
  var_17 = PTR___stack_chk_fail_000f5540;
  (*(type_10 *)PTR___stack_chk_fail_000f5540)();
  puStack_90 = var_17 + 0xa41c8;
  puStack_78 = var_23;
  piVar18 = *(int **)(var_17 + 0x9c490);
  var_18 = *(type_2 *)(*(int *)&var_8->iEof + 4);
  var_22 = *piVar18;
  var_5 = *(int *)((int)&var_8->iReadOff + 4);
  var_32 = var_9;
  pIStack_80 = var_6;
  pPStack_7c = var_21;
  pSStack_74 = unaff_s3;
  var_19 = function_1((type_1 *)((int)var_8->iEof + var_18 * 0x38));
  var_23 = puStack_90;
  if (var_19 == 0) {
    var_20 = var_18 & 0xfffe;
    var_19 = var_18 | 1;
    var_13 = (int)var_8->iEof;
    uStack_88 = 0;
    var_18 = (int)((int)&(*(type_3 **)&var_8->iReadOff)->iVersion + var_18) / 2;
    var_6 = (type_5 *)(var_13 + var_20 * 0x38);
    var_21 = (type_1 *)(var_13 + var_19 * 0x38);
    if ((int)var_18 < 1) {
      var_12 = *(int *)&var_8->iEof;
    }
    else {
      unaff_s8 = &uStack_88;
      unaff_s3 = (type_7 *)0xb6db6db7;
      var_19 = var_18;
      do {
        while (var_18 = (int)var_19 >> 1, var_6->bUseThread != 0) {
          if (((type_5 *)var_21)->bUseThread != 0) {
            iStack_94 = ((type_5 *)var_21)->bEof;
            var_4 = (type_1 *)var_6->bEof;
            psStack_98 = ((type_5 *)var_21)->aFile[0].pFd;
            var_13 = (**(type_10 **)(var_5 + 0x20))(var_5,unaff_s8,var_6->aFile[0].pFd);
            var_23 = puStack_90;
            if ((-1 < var_13) && ((var_13 != 0 || (var_21 <= var_6)))) {
              var_13 = (int)var_8->iEof;
              if (var_6->bUseThread != 0) {
                uStack_88 = 0;
              }
              break;
            }
            var_13 = (int)var_8->iEof;
          }
          var_12 = *(int *)&var_8->iEof;
          in_a2 = (type_5 *)(var_12 + var_19 * 4);
          in_a2->pTask = (type_7 *)(((int)var_6 - var_13 >> 3) * -0x49249249);
          uStack_88 = 0;
          var_21 = (type_1 *)(var_13 + *(int *)(var_12 + (var_19 ^ 1) * 4) * 0x38);
          var_19 = var_18;
          if (var_18 == 0) goto LAB_000592a8;
        }
        var_12 = *(int *)&var_8->iEof;
        in_a2 = (type_5 *)(var_12 + var_19 * 4);
        in_a2->pTask = (type_7 *)(((int)var_21 - var_13 >> 3) * -0x49249249);
        var_6 = (type_5 *)(var_13 + *(int *)(var_12 + (var_19 ^ 1) * 4) * 0x38);
        var_19 = var_18;
      } while (var_18 != 0);
    }
LAB_000592a8:
    var_32 = *(type_1 **)(var_5 + 0xc);
    *(type_3 **)&var_9->iReadOff =
         (type_3 *)(type_2)(*(int *)(var_13 + *(int *)(var_12 + 4) * 0x38 + 0x18) == 0);
    var_19 = (type_2)*(type_15 *)((int)&var_32->iEof + 3);
  }
  if (var_22 == *piVar18) {
    return var_19;
  }
  var_24 = *(type_10 **)(var_23 + -0x7d60);
  pcVar24 = vdbeMergeEngineLevel0;
  var_13 = var_22;
  (*var_24)();
  piVar5 = *(int **)(var_24 + 0x9c248);
  pMVar15 = in_a2->var_25;
  pSVar14 = in_a2->pTask;
  var_34 = *piVar5;
  pIStack_d0 = var_6;
  pIStack_cc = (type_5 *)var_21;
  uStack_c8 = var_18;
  pSStack_c4 = unaff_s3;
  piStack_c0 = piVar18;
  pPStack_bc = var_9;
  pPStack_b8 = var_8;
  iStack_b4 = var_5;
  puStack_b0 = unaff_s8;
  pcStack_ac = pcVar24;
  var_25 = (type_3 *)(*(type_10 *)(*(int *)(var_24 + 0x9bfcc) + 0x4d68))(var_32);
  *(type_3 **)&var_4->iReadOff = var_25;
  if (var_25 == (type_3 *)0x0) {
    var_5 = 7;
  }
  else {
    var_5 = 0;
    if ((int)var_32 < 1) goto LAB_00059470;
    var_27 = *(int *)(var_24 + 0x9bfcc);
    var_26 = 0;
    var_9 = (type_1 *)0x0;
    var_12 = *(int *)(var_24 + 0x9bfcc);
    var_31 = *(int *)(var_24 + 0x9bfe0);
    do {
      var_28 = var_25->xWrite + var_26;
      var_9 = (type_1 *)((int)&var_9->iReadOff + 1);
      var_5 = (*(type_10 *)(var_27 + 0x6530))(var_13,var_28,var_13 + 0x28,var_13 + 0x30,pSVar14,pMVar15);
      if (var_5 != 0) {
LAB_00059430:
        pMVar15 = *(type_8 **)(var_28 + 0xc);
        pSVar14 = *(type_7 **)(var_28 + 8);
        break;
      }
      var_29 = 0;
      var_30 = 0;
      var_5 = (*(type_10 *)(var_12 + 0x61b4))(var_28,&var_30);
      var_19 = *(type_2 *)(var_28 + 4) + var_29;
      *(type_2 *)(var_28 + 0xc) = var_19;
      *(type_2 *)(var_28 + 8) = (type_2)(var_19 < *(type_2 *)(var_28 + 4)) + *(int *)var_28 + var_30;
      if (var_5 != 0) goto LAB_00059430;
      var_5 = (*(type_10 *)(var_31 + -0x71d8))(var_28);
      pMVar15 = *(type_8 **)(var_28 + 0xc);
      pSVar14 = *(type_7 **)(var_28 + 8);
      if (var_9 == var_32) goto LAB_00059548;
      var_26 = var_26 + 0x38;
    } while (var_5 == 0);
  }
  do {
    var_33((type_8 *)var_25);
    *(type_3 **)&var_4->iReadOff = (type_3 *)0x0;
LAB_00059470:
    do {
      var_13 = *piVar5;
      in_a2->var_25 = pMVar15;
      in_a2->pTask = pSVar14;
      if (var_34 == var_13) {
        return var_5;
      }
      var_5 = (**(type_10 **)(var_24 + 0x9c220))();
LAB_00059548:
    } while (var_5 == 0);
  } while( true );
}


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

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

{
  uint uVar1;
  int iVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  uint uVar6;
  uint *puVar7;
  uint uVar8;
  uint *puVar9;
  uint uVar10;
  uint *puVar11;
  uint *unaff_s0;
  int iVar12;
  int *unaff_s3;
  int *piVar13;
  int iVar14;
  uint uVar15;
  undefined *puVar16;
  code *pcVar17;
  undefined *puVar18;
  undefined4 *unaff_s8;
  code *pcVar19;
  int iStack_e0;
  int iStack_dc;
  int iStack_d4;
  uint *puStack_d0;
  uint *puStack_cc;
  uint uStack_c8;
  int *piStack_c4;
  int *piStack_c0;
  uint *puStack_bc;
  uint *puStack_b8;
  uint uStack_b4;
  undefined4 *puStack_b0;
  code *pcStack_ac;
  uint uStack_98;
  uint uStack_94;
  undefined *puStack_90;
  undefined4 uStack_88;
  int iStack_84;
  uint *puStack_80;
  uint *puStack_7c;
  undefined *puStack_78;
  int *piStack_74;
  uint local_2c [2];
  uint *local_24;
  uint *local_1c;
  
  puVar18 = PTR___stack_chk_guard_000f5568;
  local_24 = (uint *)0x0;
  local_2c[1] = 0;
  local_1c = *(uint **)PTR___stack_chk_guard_000f5568;
  if ((int)*param_1 < (int)param_1[2]) {
LAB_00058f90:
    puVar9 = local_2c + 1;
    uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x61b4))(param_1);
    if (uVar1 == 0) {
      param_1[5] = (uint)local_24;
      if (param_1[0xb] == 0) {
        param_3 = param_1 + 8;
        puVar9 = local_24;
        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5ea0))(param_1);
      }
      else {
        param_3 = (uint *)param_1[1];
        param_4 = (uint *)((int)local_24 + (int)param_3);
        param_1[1] = (uint)param_4;
        puVar9 = (uint *)((uint)(param_4 < local_24) + ((int)local_24 >> 0x1f) + *param_1);
        param_1[8] = param_1[0xb] + (int)param_3;
        *param_1 = (uint)puVar9;
      }
    }
    goto LAB_0005907c;
  }
  if (param_1[2] == *param_1) {
    if (param_1[1] < param_1[3]) goto LAB_00058f90;
    unaff_s0 = (uint *)param_1[0xc];
  }
  else {
    unaff_s0 = (uint *)param_1[0xc];
  }
  uVar1 = 0;
  puVar9 = local_1c;
  if (unaff_s0 != (uint *)0x0) {
    if (unaff_s0[6] == 0) {
      uVar1 = FUN_00058b04(unaff_s0);
      param_4 = (uint *)unaff_s0[0xc];
      param_3 = (uint *)unaff_s0[0xd];
      puVar9 = (uint *)unaff_s0[2];
      unaff_s0[8] = (uint)param_4;
      unaff_s0[9] = (uint)param_3;
      unaff_s0[10] = unaff_s0[0xe];
      unaff_s0[0xb] = unaff_s0[0xf];
      if (((uint *)unaff_s0[0xe] != puVar9) || (unaff_s0[0xf] != unaff_s0[3])) goto LAB_00058f48;
      unaff_s0[5] = 1;
      if (uVar1 != 0) goto LAB_00059064;
LAB_0005905c:
      uVar1 = 0;
    }
    else {
      unaff_s3 = (int *)*unaff_s0;
      if (*unaff_s3 != 0) {
        puVar9 = local_2c;
        local_2c[0] = 1;
        FUN_0003fa58();
        unaff_s3[1] = 0;
        *unaff_s3 = 0;
        uVar1 = local_2c[0];
        if (local_2c[0] != 0) goto LAB_00059064;
      }
      param_4 = (uint *)unaff_s0[0xb];
      param_3 = (uint *)unaff_s0[10];
      puVar9 = (uint *)unaff_s0[8];
      uVar1 = unaff_s0[0xe];
      uVar6 = unaff_s0[0xf];
      unaff_s0[8] = unaff_s0[0xc];
      unaff_s0[9] = unaff_s0[0xd];
      unaff_s0[10] = uVar1;
      unaff_s0[0xb] = uVar6;
      unaff_s0[0xc] = (uint)puVar9;
      unaff_s0[0xf] = (uint)param_4;
      unaff_s0[0xe] = (uint)param_3;
      if ((uVar1 == unaff_s0[2]) && (uVar6 == unaff_s0[3])) {
        uVar1 = 0;
        unaff_s0[5] = 1;
      }
      else {
        puVar9 = (uint *)(PTR_FUN_000f5300 + -0x6aa8);
        param_3 = unaff_s0;
        uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x5930))(*unaff_s0);
LAB_00058f48:
        if (uVar1 == 0) {
          if (unaff_s0[5] == 0) {
            param_4 = unaff_s0 + 10;
            param_3 = unaff_s0 + 8;
            puVar9 = param_1;
            uVar1 = (*(code *)(PTR_LAB_000f52ec + 0x6530))(*unaff_s0);
            if (uVar1 != 0) goto LAB_0005907c;
            goto LAB_00058f90;
          }
          goto LAB_0005905c;
        }
      }
    }
  }
LAB_00059064:
  FUN_0003fbf0(param_1);
LAB_0005907c:
  if (local_1c == *(uint **)puVar18) {
    return uVar1;
  }
  puVar7 = local_1c;
  puVar16 = PTR___stack_chk_fail_000f5540;
  (*(code *)PTR___stack_chk_fail_000f5540)();
  puStack_90 = puVar16 + 0xa41c8;
  puStack_78 = puVar18;
  piVar13 = *(int **)(puVar16 + 0x9c490);
  uVar6 = *(uint *)(puVar7[2] + 4);
  iStack_84 = *piVar13;
  uVar15 = puVar7[1];
  puVar11 = puVar9;
  puStack_80 = unaff_s0;
  puStack_7c = param_1;
  piStack_74 = unaff_s3;
  uVar1 = MASKED(puVar7[3] + uVar6 * 0x38);
  puVar18 = puStack_90;
  if (uVar1 == 0) {
    uVar10 = uVar6 & 0xfffe;
    uVar1 = uVar6 | 1;
    uVar8 = puVar7[3];
    uStack_88 = 0;
    uVar6 = (int)(uVar6 + *puVar7) / 2;
    unaff_s0 = (uint *)(uVar8 + uVar10 * 0x38);
    param_1 = (uint *)(uVar8 + uVar1 * 0x38);
    if ((int)uVar6 < 1) {
      uVar1 = puVar7[2];
    }
    else {
      unaff_s8 = &uStack_88;
      unaff_s3 = (int *)0xb6db6db7;
      uVar10 = uVar6;
      do {
        while (uVar6 = (int)uVar10 >> 1, unaff_s0[6] != 0) {
          if (param_1[6] != 0) {
            uStack_94 = param_1[5];
            param_4 = (uint *)unaff_s0[5];
            uStack_98 = param_1[8];
            iVar2 = (**(code **)(uVar15 + 0x20))(uVar15,unaff_s8,unaff_s0[8]);
            puVar18 = puStack_90;
            if ((-1 < iVar2) && ((iVar2 != 0 || (param_1 <= unaff_s0)))) {
              uVar8 = puVar7[3];
              if (unaff_s0[6] != 0) {
                uStack_88 = 0;
              }
              break;
            }
            uVar8 = puVar7[3];
          }
          uVar1 = puVar7[2];
          param_3 = (uint *)(uVar1 + uVar10 * 4);
          *param_3 = ((int)((int)unaff_s0 - uVar8) >> 3) * -0x49249249;
          uStack_88 = 0;
          param_1 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);
          uVar10 = uVar6;
          if (uVar6 == 0) goto LAB_000592a8;
        }
        uVar1 = puVar7[2];
        param_3 = (uint *)(uVar1 + uVar10 * 4);
        *param_3 = ((int)((int)param_1 - uVar8) >> 3) * -0x49249249;
        unaff_s0 = (uint *)(uVar8 + *(int *)(uVar1 + (uVar10 ^ 1) * 4) * 0x38);
        uVar10 = uVar6;
      } while (uVar6 != 0);
    }
LAB_000592a8:
    puVar11 = *(uint **)(uVar15 + 0xc);
    *puVar9 = (uint)(*(int *)(uVar8 + *(int *)(uVar1 + 4) * 0x38 + 0x18) == 0);
    uVar1 = (uint)*(byte *)((int)puVar11 + 0xb);
  }
  if (iStack_84 == *piVar13) {
    return uVar1;
  }
  pcVar17 = *(code **)(puVar18 + -0x7d60);
  pcVar19 = FUN_00059320;
  iVar2 = iStack_84;
  (*pcVar17)();
  piVar3 = *(int **)(pcVar17 + 0x9c248);
  uVar10 = param_3[1];
  uVar8 = *param_3;
  iStack_d4 = *piVar3;
  puStack_d0 = unaff_s0;
  puStack_cc = param_1;
  uStack_c8 = uVar6;
  piStack_c4 = unaff_s3;
  piStack_c0 = piVar13;
  puStack_bc = puVar9;
  puStack_b8 = puVar7;
  uStack_b4 = uVar15;
  puStack_b0 = unaff_s8;
  pcStack_ac = pcVar19;
  uVar1 = (*(code *)(*(int *)(pcVar17 + 0x9bfcc) + 0x4d68))(puVar11);
  *param_4 = uVar1;
  if (uVar1 == 0) {
    uVar6 = 7;
  }
  else {
    uVar6 = 0;
    if ((int)puVar11 < 1) goto LAB_00059470;
    iVar14 = *(int *)(pcVar17 + 0x9bfcc);
    iVar12 = 0;
    puVar9 = (uint *)0x0;
    iVar4 = *(int *)(pcVar17 + 0x9bfcc);
    iVar5 = *(int *)(pcVar17 + 0x9bfe0);
    do {
      piVar13 = (int *)(*(int *)(uVar1 + 0xc) + iVar12);
      puVar9 = (uint *)((int)puVar9 + 1);
      uVar6 = (*(code *)(iVar14 + 0x6530))(iVar2,piVar13,iVar2 + 0x28,iVar2 + 0x30,uVar8,uVar10);
      if (uVar6 != 0) {
LAB_00059430:
        uVar10 = piVar13[3];
        uVar8 = piVar13[2];
        break;
      }
      iStack_dc = 0;
      iStack_e0 = 0;
      uVar6 = (*(code *)(iVar4 + 0x61b4))(piVar13,&iStack_e0);
      uVar15 = piVar13[1] + iStack_dc;
      piVar13[3] = uVar15;
      piVar13[2] = (uint)(uVar15 < (uint)piVar13[1]) + *piVar13 + iStack_e0;
      if (uVar6 != 0) goto LAB_00059430;
      uVar6 = (*(code *)(iVar5 + -0x71d8))(piVar13);
      uVar10 = piVar13[3];
      uVar8 = piVar13[2];
      if (puVar9 == puVar11) goto LAB_00059548;
      iVar12 = iVar12 + 0x38;
    } while (uVar6 == 0);
  }
  do {
    FUN_0003fc8c(uVar1);
    *param_4 = 0;
LAB_00059470:
    do {
      iVar2 = *piVar3;
      param_3[1] = uVar10;
      *param_3 = uVar8;
      if (iStack_d4 == iVar2) {
        return uVar6;
      }
      uVar6 = (**(code **)(pcVar17 + 0x9c220))();
LAB_00059548:
    } while (uVar6 == 0);
  } while( true );
}

