
int __regparm3 balance(BtCursor *pCur)

{
  int iVar1;
  byte bVar2;
  u16 uVar3;
  u32 uVar4;
  MemPage *pFrom;
  BtCursor *pBVar5;
  BtShared *pBVar6;
  void *p;
  byte *pbVar7;
  char cVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  MemPage *pMVar12;
  Pgno *pPVar13;
  int iVar14;
  undefined4 *puVar15;
  byte *pbVar16;
  byte *pbVar17;
  undefined4 *puVar18;
  byte *pbVar19;
  int in_GS_OFFSET;
  byte bVar20;
  Pgno *in_stack_ffffff4c;
  Pgno PVar21;
  int in_stack_ffffff54;
  void *local_9c;
  u16 szCell;
  MemPage *pNew;
  int rc;
  Pgno pgnoNew;
  u8 *pCell;
  CellArray b;
  u8 aBalanceQuickSpace [13];
  
  bVar20 = 0;
  pMVar12 = pCur->pPage;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  local_9c = (void *)0x0;
  uVar4 = pCur->pBt->usableSize;
LAB_00066d0d:
  iVar14 = pMVar12->nFree;
  pFrom = pMVar12;
  p = local_9c;
  do {
    local_9c = p;
    if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {
LAB_00066e17:
      iVar9 = 0;
      goto LAB_00066ea6;
    }
    if (pFrom->nOverflow == '\0') {
      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))
      goto LAB_00066e17;
    }
    else {
      iVar14 = (int)pCur->iPage;
      if (iVar14 == 0) break;
    }
    pMVar12 = pCur->apPage[iVar14 + -1];
    uVar3 = pCur->aiIdx[iVar14 + -1];
    PVar21 = 0x66d55;
    iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);
    if (iVar9 != 0) {
LAB_00066ff0:
      pFrom->nOverflow = '\0';
      sqlite3PagerUnrefNotNull(pFrom->pDbPage);
      cVar8 = pCur->iPage + -1;
      pCur->iPage = cVar8;
      pCur->pPage = pCur->apPage[cVar8];
      goto LAB_00066ea6;
    }
    if (pMVar12->nFree < 0) {
      PVar21 = 0x66fe2;
      iVar9 = btreeComputeFreeSpace(pMVar12);
      if (iVar9 != 0) goto LAB_00066ff0;
    }
    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||
        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))
    {
      iVar9 = 0x66d89;
      local_9c = pcache1Alloc(pCur->pBt->pageSize);
      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c
                              ,iVar9,in_stack_ffffff54);
      if (p != (void *)0x0) {
        pcache1Free(p);
      }
    }
    else if (pFrom->aiOvfl[0] == 0) {
      iVar9 = sqlite3CorruptError(0x1185d);
    }
    else {
      pBVar6 = pFrom->pBt;
      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,
                             (u8)in_stack_ffffff54);
      iVar9 = rc;
      if (rc == 0) {
        pCell = pFrom->apOvfl[0];
        szCell = (*pFrom->xCellSize)(pFrom,pCell);
        zeroPage(pNew,0xd);
        b.nCell = 1;
        b.szCell = &szCell;
        b.apEnd[0] = pFrom->aDataEnd;
        b.ixNx[0] = 2;
        b.pRef = pFrom;
        b.apCell = &pCell;
        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);
        rc = (int)pPVar13;
        if (pPVar13 == (Pgno *)0x0) {
          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;
          if (pBVar6->autoVacuum != '\0') {
            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);
            in_stack_ffffff4c = pPVar13;
            if (pNew->minLocal < szCell) {
              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);
              in_stack_ffffff4c = pPVar13;
            }
          }
          pbVar16 = pFrom->aData +
                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |
                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &
                    pFrom->maskPage);
          do {
            pbVar19 = pbVar16;
            pbVar16 = pbVar19 + 1;
          } while ((*pbVar19 >> 7 &
                   pbVar19 + 1 <
                   pFrom->aData +
                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |
                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &
                   pFrom->maskPage) + 9) != 0);
          pbVar16 = aBalanceQuickSpace + 4;
          pbVar7 = pbVar19 + 2;
          do {
            pCell = pbVar7;
            pbVar17 = pbVar16 + 1;
            bVar2 = pCell[-1];
            *pbVar16 = bVar2;
            if (pbVar19 + 10 <= pCell) break;
            pbVar16 = pbVar17;
            pbVar7 = pCell + 1;
          } while ((char)bVar2 < '\0');
          if (rc == 0) {
            in_stack_ffffff4c = (Pgno *)pFrom->pgno;
            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,
                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)
            ;
          }
          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =
               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |
               pgnoNew << 0x18;
        }
        iVar9 = rc;
        if (pNew != (MemPage *)0x0) {
          sqlite3PagerUnrefNotNull(pNew->pDbPage);
          iVar9 = rc;
        }
      }
    }
    pFrom->nOverflow = '\0';
    sqlite3PagerUnrefNotNull(pFrom->pDbPage);
    cVar8 = pCur->iPage + -1;
    pCur->iPage = cVar8;
    pFrom = pCur->apPage[cVar8];
    pCur->pPage = pFrom;
    if (iVar9 != 0) goto LAB_00066ea6;
    iVar14 = pFrom->nFree;
    p = local_9c;
  } while( true );
  for (pBVar5 = pCur->pBt->pCursor; pBVar5 != (BtCursor *)0x0; pBVar5 = pBVar5->pNext) {
    if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {
      iVar9 = sqlite3CorruptError(0x11c93);
      if (iVar9 != 0) goto LAB_00066ea6;
      break;
    }
  }
  pgnoNew = 0;
  pCell = (u8 *)0x0;
  pBVar6 = pFrom->pBt;
  PVar21 = 0x66e77;
  rc = sqlite3PagerWrite(pFrom->pDbPage);
  if (rc != 0) goto LAB_00066e83;
  rc = allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,
                         (u8)in_stack_ffffff54);
  if (rc == 0) {
    copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);
    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;
LAB_00066f2a:
    if (rc == 0) {
      uVar10 = (uint)pFrom->nOverflow;
      uVar11 = uVar10 * 2;
      if (uVar11 < 4) {
        if (uVar10 != 0) {
          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];
          if ((uVar11 & 2) == 0) goto LAB_00066f67;
          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];
          uVar10 = (uint)pFrom->nOverflow;
        }
      }
      else {
        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;
        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));
        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);
        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;
        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);
        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
          *puVar18 = *puVar15;
          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;
          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;
        }
LAB_00066f67:
        uVar10 = (uint)pFrom->nOverflow;
      }
      uVar11 = uVar10 * 4;
      if (uVar11 < 4) {
        if (uVar10 != 0) {
          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;
        }
      }
      else {
        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];
        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];
        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);
        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;
        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);
        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
          *puVar18 = *puVar15;
          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;
          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;
        }
      }
      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;
      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);
      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =
           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |
           (int)pCell << 0x18;
      pCur->apPage[1] = (MemPage *)pgnoNew;
      pMVar12 = (MemPage *)pgnoNew;
      goto LAB_00066fb5;
    }
  }
  else if (pBVar6->autoVacuum != '\0') {
LAB_00066f10:
    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);
    goto LAB_00066f2a;
  }
LAB_00066e83:
  pCur->apPage[1] = (MemPage *)0x0;
  iVar9 = rc;
  if ((pgnoNew == 0) ||
     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)) {
LAB_00066ea6:
    if (local_9c != (void *)0x0) {
      pcache1Free(local_9c);
    }
    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
      return iVar9;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  pMVar12 = pCur->apPage[1];
LAB_00066fb5:
  pCur->apPage[0] = pFrom;
  pCur->iPage = '\x01';
  pCur->ix = 0;
  pCur->aiIdx[0] = 0;
  pCur->pPage = pMVar12;
  goto LAB_00066d0d;
}



int __regparm3 FUN_00066cc0(char *param_1)

{
  char cVar1;
  byte bVar2;
  short sVar3;
  ushort uVar4;
  int iVar5;
  uint uVar6;
  char *pcVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  undefined4 *puVar13;
  byte *pbVar14;
  byte *pbVar15;
  undefined4 *puVar16;
  byte *pbVar17;
  byte *pbVar18;
  int in_GS_OFFSET;
  bool bVar19;
  byte bVar20;
  int local_9c;
  ushort local_82;
  int local_80;
  int local_7c;
  uint local_78;
  byte *local_74;
  undefined4 local_70;
  uint local_6c;
  byte **local_68;
  ushort *local_64;
  undefined4 local_60;
  undefined4 local_48;
  undefined1 local_2d [4];
  byte local_29 [9];
  int local_20;
  
  bVar20 = 0;
  uVar11 = *(uint *)(param_1 + 0x6c);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_9c = 0;
  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);
LAB_00066d0d:
  iVar12 = *(int *)(uVar11 + 0x14);
  uVar6 = uVar11;
  do {
    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {
LAB_00066e17:
      iVar8 = 0;
      goto LAB_00066ea6;
    }
    if (*(char *)(uVar6 + 0xc) == '\0') {
      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||
         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;
    }
    else {
      iVar12 = (int)param_1[0x3c];
      if (iVar12 == 0) break;
    }
    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);
    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);
    iVar8 = FUN_0005f680();
    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {
      *(undefined1 *)(uVar6 + 0xc) = 0;
      FUN_0001f150();
      cVar1 = param_1[0x3c];
      param_1[0x3c] = cVar1 + -1;
      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);
      goto LAB_00066ea6;
    }
    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||
        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||
       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {
      iVar9 = FUN_0002df20();
      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);
      bVar19 = local_9c != 0;
      local_9c = iVar9;
      if (bVar19) {
        FUN_00026f80();
      }
    }
    else if (*(short *)(uVar6 + 0x1c) == 0) {
      iVar8 = FUN_000383f0();
    }
    else {
      iVar12 = *(int *)(uVar6 + 0x34);
      local_7c = FUN_000634d0(0,0);
      iVar8 = local_7c;
      if (local_7c == 0) {
        local_74 = *(byte **)(uVar6 + 0x24);
        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);
        FUN_00038500();
        local_70 = 1;
        local_64 = &local_82;
        local_60 = *(undefined4 *)(uVar6 + 0x3c);
        local_48 = 2;
        local_6c = uVar6;
        local_68 = &local_74;
        local_7c = FUN_000393d0(local_80);
        if (local_7c == 0) {
          *(uint *)(local_80 + 0x14) =
               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +
               *(int *)(iVar12 + 0x28);
          if (*(char *)(iVar12 + 0x11) != '\0') {
            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);
            if (*(ushort *)(local_80 + 0x10) < local_82) {
              FUN_00063eb0(&local_7c);
            }
          }
          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);
          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +
                            *(int *)(uVar6 + 0x38));
          pbVar14 = pbVar17;
          do {
            pbVar18 = pbVar14;
            pbVar14 = pbVar18 + 1;
          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);
          pbVar14 = local_29;
          pbVar17 = pbVar18 + 2;
          do {
            local_74 = pbVar17;
            pbVar15 = pbVar14 + 1;
            bVar2 = local_74[-1];
            *pbVar14 = bVar2;
            if (pbVar18 + 10 <= local_74) break;
            pbVar14 = pbVar15;
            pbVar17 = local_74 + 1;
          } while ((char)bVar2 < '\0');
          if (local_7c == 0) {
            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);
          }
          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =
               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |
               local_78 << 0x18;
        }
        iVar8 = local_7c;
        if (local_80 != 0) {
          FUN_0001f150();
          iVar8 = local_7c;
        }
      }
    }
    *(undefined1 *)(uVar6 + 0xc) = 0;
    FUN_0001f150();
    cVar1 = param_1[0x3c];
    param_1[0x3c] = cVar1 + -1;
    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);
    *(uint *)(param_1 + 0x6c) = uVar6;
    if (iVar8 != 0) goto LAB_00066ea6;
    iVar12 = *(int *)(uVar6 + 0x14);
  } while( true );
  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;
      pcVar7 = *(char **)(pcVar7 + 0x18)) {
    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&
       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {
      iVar8 = FUN_000383f0();
      if (iVar8 != 0) goto LAB_00066ea6;
      break;
    }
  }
  local_78 = 0;
  local_74 = (byte *)0x0;
  iVar12 = *(int *)(uVar6 + 0x34);
  local_7c = FUN_0005f680();
  if (local_7c != 0) goto LAB_00066e83;
  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);
  if (local_7c == 0) {
    FUN_00064080();
    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;
LAB_00066f2a:
    if (local_7c == 0) {
      uVar10 = (uint)*(byte *)(uVar6 + 0xc);
      uVar11 = uVar10 * 2;
      if (uVar11 < 4) {
        if (uVar10 != 0) {
          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);
          if ((uVar11 & 2) == 0) goto LAB_00066f67;
          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);
          uVar10 = (uint)*(byte *)(uVar6 + 0xc);
        }
      }
      else {
        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);
        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);
        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);
        iVar12 = (local_78 + 0x1c) - (int)puVar16;
        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);
        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
          *puVar16 = *puVar13;
          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;
          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;
        }
LAB_00066f67:
        uVar10 = (uint)*(byte *)(uVar6 + 0xc);
      }
      uVar11 = uVar10 * 4;
      if (uVar11 < 4) {
        if (uVar10 != 0) {
          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);
        }
      }
      else {
        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);
        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);
        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);
        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;
        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);
        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
          *puVar16 = *puVar13;
          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;
          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;
        }
      }
      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);
      FUN_00038500();
      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =
           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |
           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;
      *(uint *)(param_1 + 0x74) = local_78;
      uVar11 = local_78;
      goto LAB_00066fb5;
    }
  }
  else if (*(char *)(iVar12 + 0x11) != '\0') {
LAB_00066f10:
    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);
    goto LAB_00066f2a;
  }
LAB_00066e83:
  param_1[0x74] = '\0';
  param_1[0x75] = '\0';
  param_1[0x76] = '\0';
  param_1[0x77] = '\0';
  iVar8 = local_7c;
  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {
LAB_00066ea6:
    if (local_9c != 0) {
      FUN_00026f80();
    }
    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
      return iVar8;
    }
                    /* WARNING: Subroutine does not return */
    FUN_000a9ea0();
  }
  uVar11 = *(uint *)(param_1 + 0x74);
LAB_00066fb5:
  *(uint *)(param_1 + 0x70) = uVar6;
  param_1[0x3c] = '\x01';
  param_1[0x3e] = '\0';
  param_1[0x3f] = '\0';
  param_1[0x40] = '\0';
  param_1[0x41] = '\0';
  *(uint *)(param_1 + 0x6c) = uVar11;
  goto LAB_00066d0d;
}


PUSH EBP
PUSH EDI
MOV ECX,0xaaaaaaab
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0x9c
MOV EBP,dword ptr [EBX + 0x6c]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x8c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EBX + 0x14]
MOV dword ptr [ESP + 0x10],0x0
MOV EDX,dword ptr [EAX + 0x28]
ADD EDX,EDX
MOV EAX,EDX
MUL ECX
LEA EAX,[ESP + 0x38]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[ESP + 0x34]
SHR EDX,0x1
MOV dword ptr [ESP + 0x8],EDX
MOV dword ptr [ESP + 0x18],EAX
MOV EDI,dword ptr [EBP + 0x14]
TEST EDI,EDI
JS 0x00066e08
CMP byte ptr [EBP + 0xc],0x0
JNZ 0x00066e20
MOV EAX,dword ptr [ESP + 0x8]
CMP dword ptr [EBP + 0x14],EAX
JLE 0x00066e17
MOVSX ESI,byte ptr [EBX + 0x3c]
TEST ESI,ESI
JZ 0x00066e17
MOV EAX,dword ptr [EBX + ESI*0x4 + 0x6c]
MOVZX EDI,word ptr [EBX + ESI*0x2 + 0x3e]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [EAX + 0x48]
MOV word ptr [ESP + 0xc],DI
CALL 0x0005f680
TEST EAX,EAX
MOV EDI,EAX
JNZ 0x00066ff0
MOV EAX,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [EAX + 0x14]
TEST ECX,ECX
JS 0x00066fd9
CMP byte ptr [EBP + 0x3],0x0
JZ 0x00066d7e
CMP byte ptr [EBP + 0xc],0x1
JZ 0x000670bc
MOV EAX,dword ptr [EBX + 0x14]
MOV EAX,dword ptr [EAX + 0x24]
CALL 0x0002df20
MOV dword ptr [ESP + 0x1c],EAX
MOV EDI,EAX
MOVZX EAX,byte ptr [EBX + 0x3]
MOVZX EDX,word ptr [ESP + 0xc]
SUB ESP,0x8
MOV ECX,EDI
AND EAX,0x1
PUSH EAX
XOR EAX,EAX
CMP ESI,0x1
SETZ AL
MOV ESI,EDI
PUSH EAX
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x000653e0
ADD ESP,0x10
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JZ 0x00067090
CALL 0x00026f80
MOV dword ptr [ESP + 0x10],ESI
MOV EAX,dword ptr [EBP + 0x48]
MOV byte ptr [EBP + 0xc],0x0
CALL 0x0001f150
MOVZX EAX,byte ptr [EBX + 0x3c]
SUB EAX,0x1
TEST EDI,EDI
MOV byte ptr [EBX + 0x3c],AL
MOVSX EAX,AL
MOV EBP,dword ptr [EBX + EAX*0x4 + 0x70]
MOV dword ptr [EBX + 0x6c],EBP
JNZ 0x00066ea6
MOV EDI,dword ptr [EBP + 0x14]
TEST EDI,EDI
JNS 0x00066d18
LEA ESI,[ESI]
MOV EAX,EBP
CALL 0x00038800
TEST EAX,EAX
JZ 0x00066d18
XOR EDI,EDI
JMP 0x00066ea6
MOVSX ESI,byte ptr [EBX + 0x3c]
TEST ESI,ESI
JNZ 0x00066d3b
MOV EAX,dword ptr [EBX + 0x14]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00066e5c
LEA ESI,[ESI]
LEA EDI,[EDI]
CMP EAX,EBX
JZ 0x00066e55
CMP byte ptr [EAX],0x0
JNZ 0x00066e55
MOV ECX,dword ptr [EBX + 0x6c]
CMP dword ptr [EAX + 0x6c],ECX
JZ 0x00067018
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JNZ 0x00066e40
MOV EAX,dword ptr [EBP + 0x48]
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV ESI,dword ptr [EBP + 0x34]
CALL 0x0005f680
TEST EAX,EAX
MOV dword ptr [ESP + 0x30],EAX
JZ 0x00066ed8
MOV EDX,dword ptr [ESP + 0x34]
TEST EDX,EDX
MOV dword ptr [EBX + 0x74],0x0
JZ 0x00066fd0
MOV EAX,dword ptr [EDX + 0x48]
CALL 0x0001f150
MOV EDI,dword ptr [ESP + 0x30]
TEST EDI,EDI
JZ 0x000671ef
MOV EAX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JZ 0x00066eb3
CALL 0x00026f80
MOV ESI,dword ptr [ESP + 0x8c]
XOR ESI,dword ptr GS:[0x14]
MOV EAX,EDI
JNZ 0x000672bc
ADD ESP,0x9c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
MOV EAX,ESI
PUSH 0x0
PUSH dword ptr [EBP + 0x4]
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x24]
CALL 0x000634d0
MOV EDX,dword ptr [ESP + 0x44]
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000670a0
CMP byte ptr [ESI + 0x11],0x0
LEA EDI,[ESP + 0x30]
JZ 0x00066e83
SUB ESP,0x8
MOV ECX,0x5
MOV EAX,ESI
PUSH EDI
PUSH dword ptr [EBP + 0x4]
MOV EDX,dword ptr [ESP + 0x48]
CALL 0x00063d70
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x30]
MOV EDX,dword ptr [ESP + 0x34]
TEST ESI,ESI
JNZ 0x00066e83
MOVZX EAX,byte ptr [EBP + 0xc]
LEA EDI,[EDX + 0x1c]
LEA ESI,[EBP + 0x1c]
MOV dword ptr [ESP + 0x4],EDI
LEA ECX,[EAX + EAX*0x1]
CMP ECX,0x4
JNC 0x00067060
TEST ECX,ECX
JZ 0x00066f6b
MOVZX EAX,byte ptr [ESI]
TEST CL,0x2
MOV byte ptr [EDX + 0x1c],AL
JNZ 0x000671f7
MOVZX EAX,byte ptr [EBP + 0xc]
SHL EAX,0x2
LEA ECX,[EDX + 0x24]
LEA ESI,[EBP + 0x24]
CMP EAX,0x4
JNC 0x00067038
TEST EAX,EAX
JZ 0x00066f86
MOVZX EAX,byte ptr [ESI]
MOV byte ptr [ECX],AL
MOVZX EAX,byte ptr [EBP + 0xc]
MOV byte ptr [EDX + 0xc],AL
MOV EAX,dword ptr [EDX + 0x38]
MOVZX EDX,byte ptr [EAX]
MOV EAX,EBP
AND EDX,0xfffffff7
CALL 0x00038500
MOV EAX,dword ptr [ESP + 0x38]
MOVZX EDX,byte ptr [EBP + 0x9]
MOV ECX,dword ptr [EBP + 0x38]
BSWAP EAX
MOV dword ptr [ECX + EDX*0x1 + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV dword ptr [EBX + 0x74],EAX
MOV dword ptr [EBX + 0x70],EBP
MOV byte ptr [EBX + 0x3c],0x1
MOV EBP,EAX
MOV dword ptr [EBX + 0x3e],0x0
MOV dword ptr [EBX + 0x6c],EAX
JMP 0x00066d0d
MOV EDI,dword ptr [ESP + 0x30]
JMP 0x00066ea6
MOV EAX,dword ptr [ESP + 0x4]
CALL 0x00038800
TEST EAX,EAX
MOV EDI,EAX
JZ 0x00066d6e
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + 0x48]
MOV byte ptr [EBP + 0xc],0x0
CALL 0x0001f150
MOVZX EAX,byte ptr [EBX + 0x3c]
SUB EAX,0x1
MOV byte ptr [EBX + 0x3c],AL
MOVSX EAX,AL
MOV EAX,dword ptr [EBX + EAX*0x4 + 0x70]
MOV dword ptr [EBX + 0x6c],EAX
JMP 0x00066ea6
MOV EAX,0x11c93
CALL 0x000383f0
TEST EAX,EAX
MOV EDI,EAX
JZ 0x00066e5c
JMP 0x00066ea6
MOV EDI,dword ptr [EBP + 0x24]
MOV dword ptr [EDX + 0x24],EDI
MOV EDI,dword ptr [ESI + EAX*0x1 + -0x4]
MOV dword ptr [ECX + EAX*0x1 + -0x4],EDI
LEA EDI,[EDX + 0x28]
AND EDI,0xfffffffc
SUB ECX,EDI
SUB ESI,ECX
ADD ECX,EAX
SHR ECX,0x2
MOVSD.REP ES:EDI,ESI
JMP 0x00066f86
MOV EAX,dword ptr [EBP + 0x1c]
MOV dword ptr [EDX + 0x1c],EAX
MOV EAX,dword ptr [ESI + ECX*0x1 + -0x4]
MOV EDI,dword ptr [ESP + 0x4]
MOV dword ptr [EDI + ECX*0x1 + -0x4],EAX
LEA EDI,[EDX + 0x20]
MOV EAX,dword ptr [ESP + 0x4]
AND EDI,0xfffffffc
SUB EAX,EDI
ADD ECX,EAX
SUB ESI,EAX
SHR ECX,0x2
MOVSD.REP ES:EDI,ESI
JMP 0x00066f67
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0x10],EAX
JMP 0x00066dcf
LEA EDI,[ESP + 0x30]
MOV EAX,EBP
MOV ECX,EDI
CALL 0x00064080
CMP byte ptr [ESI + 0x11],0x0
JZ 0x00066f2a
JMP 0x00066f10
MOVZX EAX,word ptr [EBP + 0x1c]
CMP AX,word ptr [EBP + 0x18]
JNZ 0x00066d7e
MOV EDX,dword ptr [ESP + 0x4]
CMP dword ptr [EDX + 0x4],0x1
JZ 0x00066d7e
MOVZX EDI,word ptr [ESP + 0xc]
CMP DI,word ptr [EDX + 0x18]
JNZ 0x00066d7e
TEST AX,AX
JZ 0x00067272
MOV ESI,dword ptr [EBP + 0x34]
LEA EDX,[ESP + 0x2c]
SUB ESP,0x8
PUSH 0x0
PUSH 0x0
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,ESI
CALL 0x000634d0
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00067269
MOV EAX,dword ptr [EBP + 0x24]
SUB ESP,0x8
MOV dword ptr [ESP + 0x40],EAX
PUSH EAX
PUSH EBP
CALL dword ptr [EBP + 0x4c]
MOV word ptr [ESP + 0x3a],AX
MOV EAX,dword ptr [ESP + 0x3c]
MOV EDX,0xd
CALL 0x00038500
MOV EAX,dword ptr [ESP + 0x24]
MOV dword ptr [ESP + 0x4c],0x1
MOV ECX,0x1
MOV dword ptr [ESP + 0x50],EBP
MOV dword ptr [ESP + 0x54],EAX
LEA EAX,[ESP + 0x3a]
MOV dword ptr [ESP + 0x58],EAX
MOV EAX,dword ptr [EBP + 0x3c]
MOV dword ptr [ESP + 0x74],0x2
MOV dword ptr [ESP + 0x5c],EAX
LEA EAX,[ESP + 0x4c]
POP EDX
PUSH dword ptr [ESP + 0x38]
XOR EDX,EDX
CALL 0x000393d0
MOV dword ptr [ESP + 0x40],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00067259
MOVZX ECX,word ptr [ESP + 0x2a]
MOV EDI,dword ptr [ESP + 0x2c]
MOV EDX,0xfffffffe
SUB EDX,ECX
MOVZX ECX,word ptr [EDI + 0x12]
SUB EDX,ECX
ADD EDX,dword ptr [ESI + 0x28]
MOV dword ptr [EDI + 0x14],EDX
CMP byte ptr [ESI + 0x11],0x0
JNZ 0x00067283
MOVZX ECX,word ptr [EBP + 0x18]
MOV EDX,dword ptr [EBP + 0x40]
MOVZX EDI,word ptr [EDX + ECX*0x2 + -0x2]
MOV EDX,EAX
ROL DI,0x8
AND DI,word ptr [EBP + 0x1a]
MOVZX EDI,DI
ADD EDI,dword ptr [EBP + 0x38]
LEA ESI,[EDI + 0x9]
LEA EAX,[EDI + 0x1]
MOV dword ptr [ESP + 0x38],EAX
MOVZX ECX,byte ptr [EAX + -0x1]
SHR CL,0x7
CMP ESI,EAX
MOV byte ptr [ESP + 0xc],CL
SETA CL
TEST byte ptr [ESP + 0xc],CL
JZ 0x0006720e
MOV EDI,EAX
JMP 0x000671ce
MOV EAX,dword ptr [EBX + 0x74]
JMP 0x00066fb5
MOVZX EAX,word ptr [ESI + ECX*0x1 + -0x2]
MOV ESI,dword ptr [ESP + 0x4]
MOV word ptr [ESI + ECX*0x1 + -0x2],AX
MOVZX EAX,byte ptr [EBP + 0xc]
JMP 0x00066f6b
MOV EAX,EDX
LEA EDX,[EDI + 0xa]
LEA ESI,[ESP + 0x83]
ADD EDI,0x2
MOV dword ptr [ESP + 0xc],EDX
JMP 0x00067227
TEST DL,DL
JNS 0x00067240
MOV ECX,EDI
MOV dword ptr [ESP + 0x38],EDI
ADD ESI,0x1
MOVZX EDX,byte ptr [EDI + -0x1]
ADD EDI,0x1
CMP dword ptr [ESP + 0xc],ECX
MOV byte ptr [ESI + -0x1],DL
JA 0x00067223
TEST EAX,EAX
JZ 0x000672c1
MOV ESI,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EDX,byte ptr [ESI + 0x9]
MOV ECX,dword ptr [ESI + 0x38]
BSWAP EAX
MOV dword ptr [ECX + EDX*0x1 + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x2c]
TEST EAX,EAX
JZ 0x00067269
MOV EAX,dword ptr [EAX + 0x48]
CALL 0x0001f150
MOV EDI,dword ptr [ESP + 0x30]
JMP 0x00066dcf
MOV EAX,0x1185d
CALL 0x000383f0
MOV EDI,EAX
JMP 0x00066dcf
PUSH EAX
PUSH EAX
MOV ECX,0x5
LEA EDI,[ESP + 0x38]
PUSH EDI
MOV EAX,dword ptr [ESP + 0x10]
PUSH dword ptr [EAX + 0x4]
MOV EDX,dword ptr [ESP + 0x44]
MOV EAX,ESI
CALL 0x00063d70
MOV EAX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
MOVZX ESI,word ptr [ESP + 0x2a]
CMP word ptr [EAX + 0x10],SI
JC 0x000672e7
MOV EAX,dword ptr [ESP + 0x30]
JMP 0x000671af
CALL 0x000a9ea0
MOV EAX,dword ptr [ESP + 0x4]
LEA ECX,[ESP + 0x7f]
LEA EDI,[ESP + 0x30]
SUB ESI,ECX
MOVZX EDX,word ptr [EAX + 0x18]
PUSH EDI
PUSH dword ptr [EBP + 0x4]
PUSH 0x0
PUSH ESI
CALL 0x00065060
ADD ESP,0x10
JMP 0x00067244
SUB ESP,0xc
LEA EDX,[EAX + 0x3c]
PUSH EDI
MOV ECX,dword ptr [ESP + 0x48]
CALL 0x00063eb0
MOV EAX,dword ptr [ESP + 0x40]
ADD ESP,0x10
JMP 0x000671af
(translation_unit "int __regparm3 FUN_00066cc0(char *param_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}\n\n" (function_definition "int __regparm3 FUN_00066cc0(char *param_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00066cc0(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "ushort local_82;" type_identifier identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "byte *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "byte **local_68;" type_identifier (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "ushort *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined1 local_2d [4];" type_identifier (array_declarator "local_2d [4]" identifier [ number_literal ]) ;) (declaration "byte local_29 [9];" type_identifier (array_declarator "local_29 [9]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x14) + 0x28)" * (cast_expression "(int *)(*(int *)(param_1 + 0x14) + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x14) + 0x28)" ( (binary_expression "*(int *)(param_1 + 0x14) + 0x28" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (labeled_statement "LAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);" statement_identifier : (expression_statement "iVar12 = *(int *)(uVar11 + 0x14);" (assignment_expression "iVar12 = *(int *)(uVar11 + 0x14)" identifier = (pointer_expression "*(int *)(uVar11 + 0x14)" * (cast_expression "(int *)(uVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 + 0x14)" ( (binary_expression "uVar11 + 0x14" identifier + number_literal) ))))) ;)) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (do_statement "do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );" do (compound_statement "{\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  }" { (if_statement "if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }" if (parenthesized_expression "((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0))" ( (binary_expression "(iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)" (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) && (parenthesized_expression "(iVar12 = FUN_00038800(), iVar12 != 0)" ( (comma_expression "iVar12 = FUN_00038800(), iVar12 != 0" (assignment_expression "iVar12 = FUN_00038800()" identifier = (call_expression "FUN_00038800()" identifier (argument_list "()" ( )))) , (binary_expression "iVar12 != 0" identifier != number_literal)) ))) )) (compound_statement "{\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }" { (labeled_statement "LAB_00066e17:\n      iVar8 = 0;" statement_identifier : (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;) })) (if_statement "if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" if (parenthesized_expression "(*(char *)(uVar6 + 0xc) == '\0')" ( (binary_expression "*(char *)(uVar6 + 0xc) == '\0'" (pointer_expression "*(char *)(uVar6 + 0xc)" * (cast_expression "(char *)(uVar6 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }" { (if_statement "if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;" if (parenthesized_expression "((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0))" ( (binary_expression "(*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)" (parenthesized_expression "(*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3))" ( (binary_expression "*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)" (pointer_expression "*(int *)(uVar6 + 0x14)" * (cast_expression "(int *)(uVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x14)" ( (binary_expression "uVar6 + 0x14" identifier + number_literal) )))) <= (cast_expression "(int)((uint)(iVar5 * 2) / 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(iVar5 * 2) / 3)" ( (binary_expression "(uint)(iVar5 * 2) / 3" (call_expression "(uint)(iVar5 * 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 * 2)" ( (binary_expression "iVar5 * 2" identifier * number_literal) ))) / number_literal) )))) )) || (parenthesized_expression "(iVar12 = (int)param_1[0x3c], iVar12 == 0)" ( (comma_expression "iVar12 = (int)param_1[0x3c], iVar12 == 0" (assignment_expression "iVar12 = (int)param_1[0x3c]" identifier = (cast_expression "(int)param_1[0x3c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x3c]" identifier [ number_literal ]))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00066e17;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" else (compound_statement "{\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" { (expression_statement "iVar12 = (int)param_1[0x3c];" (assignment_expression "iVar12 = (int)param_1[0x3c]" identifier = (cast_expression "(int)param_1[0x3c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x3c]" identifier [ number_literal ]))) ;) (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }))) (expression_statement "iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);" (assignment_expression "iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c)" identifier = (pointer_expression "*(int *)(param_1 + iVar12 * 4 + 0x6c)" * (cast_expression "(int *)(param_1 + iVar12 * 4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar12 * 4 + 0x6c)" ( (binary_expression "param_1 + iVar12 * 4 + 0x6c" (binary_expression "param_1 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);" (assignment_expression "sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e)" identifier = (pointer_expression "*(short *)(param_1 + iVar12 * 2 + 0x3e)" * (cast_expression "(short *)(param_1 + iVar12 * 2 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar12 * 2 + 0x3e)" ( (binary_expression "param_1 + iVar12 * 2 + 0x3e" (binary_expression "param_1 + iVar12 * 2" identifier + (binary_expression "iVar12 * 2" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar8 = FUN_0005f680();" (assignment_expression "iVar8 = FUN_0005f680()" identifier = (call_expression "FUN_0005f680()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }" if (parenthesized_expression "((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0))))" ( (binary_expression "(iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))" ( (parenthesized_expression "(*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0))" ( (binary_expression "*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)" (binary_expression "*(int *)(iVar9 + 0x14) < 0" (pointer_expression "*(int *)(iVar9 + 0x14)" * (cast_expression "(int *)(iVar9 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14)" ( (binary_expression "iVar9 + 0x14" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(iVar8 = FUN_00038800(), iVar8 != 0)" ( (comma_expression "iVar8 = FUN_00038800(), iVar8 != 0" (assignment_expression "iVar8 = FUN_00038800()" identifier = (call_expression "FUN_00038800()" identifier (argument_list "()" ( )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }" { (expression_statement "*(undefined1 *)(uVar6 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(uVar6 + 0xc) = 0" (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" * (cast_expression "(undefined1 *)(uVar6 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = param_1[0x3c];" (assignment_expression "cVar1 = param_1[0x3c]" identifier = (subscript_expression "param_1[0x3c]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x3c] = cVar1 + -1;" (assignment_expression "param_1[0x3c] = cVar1 + -1" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = (binary_expression "cVar1 + -1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" * (cast_expression "(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (binary_expression "param_1 + (char)(cVar1 + -1) * 4 + 0x70" (binary_expression "param_1 + (char)(cVar1 + -1) * 4" identifier + (binary_expression "(char)(cVar1 + -1) * 4" (cast_expression "(char)(cVar1 + -1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(cVar1 + -1)" ( (binary_expression "cVar1 + -1" identifier + number_literal) ))) * number_literal)) + number_literal) ))))) ;) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;) })) (if_statement "if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" if (parenthesized_expression "((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18)))))" ( (binary_expression "(((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))" (parenthesized_expression "(((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18)))" ( (binary_expression "((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))" (parenthesized_expression "((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01'))" ( (binary_expression "(*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')" (parenthesized_expression "(*(char *)(uVar6 + 3) == '\0')" ( (binary_expression "*(char *)(uVar6 + 3) == '\0'" (pointer_expression "*(char *)(uVar6 + 3)" * (cast_expression "(char *)(uVar6 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 3)" ( (binary_expression "uVar6 + 3" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(uVar6 + 0xc) != '\x01')" ( (binary_expression "*(char *)(uVar6 + 0xc) != '\x01'" (pointer_expression "*(char *)(uVar6 + 0xc)" * (cast_expression "(char *)(uVar6 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))" ( (binary_expression "*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18)" (pointer_expression "*(short *)(uVar6 + 0x1c)" * (cast_expression "(short *)(uVar6 + 0x1c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))) != (pointer_expression "*(short *)(uVar6 + 0x18)" * (cast_expression "(short *)(uVar6 + 0x18)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x18)" ( (binary_expression "uVar6 + 0x18" identifier + number_literal) ))))) ))) )) || (parenthesized_expression "((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))" ( (parenthesized_expression "(*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18)))" ( (binary_expression "*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))" (binary_expression "*(int *)(iVar9 + 4) == 1" (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) || (parenthesized_expression "(sVar3 != *(short *)(iVar9 + 0x18))" ( (binary_expression "sVar3 != *(short *)(iVar9 + 0x18)" identifier != (pointer_expression "*(short *)(iVar9 + 0x18)" * (cast_expression "(short *)(iVar9 + 0x18)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x18)" ( (binary_expression "iVar9 + 0x18" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }" { (expression_statement "iVar9 = FUN_0002df20();" (assignment_expression "iVar9 = FUN_0002df20()" identifier = (call_expression "FUN_0002df20()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);" (assignment_expression "iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1)" identifier = (call_expression "FUN_000653e0(iVar12 == 1,param_1[3] & 1)" identifier (argument_list "(iVar12 == 1,param_1[3] & 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) , (binary_expression "param_1[3] & 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) & number_literal) )))) ;) (expression_statement "bVar19 = local_9c != 0;" (assignment_expression "bVar19 = local_9c != 0" identifier = (binary_expression "local_9c != 0" identifier != number_literal)) ;) (expression_statement "local_9c = iVar9;" (assignment_expression "local_9c = iVar9" identifier = identifier) ;) (if_statement "if (bVar19) {\n        FUN_00026f80();\n      }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n        FUN_00026f80();\n      }" { (expression_statement "FUN_00026f80();" (call_expression "FUN_00026f80()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" else (if_statement "if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" if (parenthesized_expression "(*(short *)(uVar6 + 0x1c) == 0)" ( (binary_expression "*(short *)(uVar6 + 0x1c) == 0" (pointer_expression "*(short *)(uVar6 + 0x1c)" * (cast_expression "(short *)(uVar6 + 0x1c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar8 = FUN_000383f0();\n    }" { (expression_statement "iVar8 = FUN_000383f0();" (assignment_expression "iVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" else (compound_statement "{\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" { (expression_statement "iVar12 = *(int *)(uVar6 + 0x34);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x34)" identifier = (pointer_expression "*(int *)(uVar6 + 0x34)" * (cast_expression "(int *)(uVar6 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x34)" ( (binary_expression "uVar6 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_7c = FUN_000634d0(0,0);" (assignment_expression "local_7c = FUN_000634d0(0,0)" identifier = (call_expression "FUN_000634d0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) (if_statement "if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }" { (expression_statement "local_74 = *(byte **)(uVar6 + 0x24);" (assignment_expression "local_74 = *(byte **)(uVar6 + 0x24)" identifier = (pointer_expression "*(byte **)(uVar6 + 0x24)" * (cast_expression "(byte **)(uVar6 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);" (assignment_expression "local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74)" identifier = (call_expression "(**(code **)(uVar6 + 0x4c))(uVar6,local_74)" (parenthesized_expression "(**(code **)(uVar6 + 0x4c))" ( (pointer_expression "**(code **)(uVar6 + 0x4c)" * (pointer_expression "*(code **)(uVar6 + 0x4c)" * (cast_expression "(code **)(uVar6 + 0x4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 0x4c)" ( (binary_expression "uVar6 + 0x4c" identifier + number_literal) ))))) )) (argument_list "(uVar6,local_74)" ( identifier , identifier )))) ;) (expression_statement "FUN_00038500();" (call_expression "FUN_00038500()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (expression_statement "local_64 = &local_82;" (assignment_expression "local_64 = &local_82" identifier = (pointer_expression "&local_82" & identifier)) ;) (expression_statement "local_60 = *(undefined4 *)(uVar6 + 0x3c);" (assignment_expression "local_60 = *(undefined4 *)(uVar6 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(uVar6 + 0x3c)" * (cast_expression "(undefined4 *)(uVar6 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x3c)" ( (binary_expression "uVar6 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (expression_statement "local_6c = uVar6;" (assignment_expression "local_6c = uVar6" identifier = identifier) ;) (expression_statement "local_68 = &local_74;" (assignment_expression "local_68 = &local_74" identifier = (pointer_expression "&local_74" & identifier)) ;) (expression_statement "local_7c = FUN_000393d0(local_80);" (assignment_expression "local_7c = FUN_000393d0(local_80)" identifier = (call_expression "FUN_000393d0(local_80)" identifier (argument_list "(local_80)" ( identifier )))) ;) (if_statement "if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }" { (expression_statement "*(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);" (assignment_expression "*(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28)" (pointer_expression "*(uint *)(local_80 + 0x14)" * (cast_expression "(uint *)(local_80 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 0x14)" ( (binary_expression "local_80 + 0x14" identifier + number_literal) )))) = (binary_expression "((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28)" (parenthesized_expression "((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12))" ( (binary_expression "(-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)" (parenthesized_expression "(-2 - (uint)local_82)" ( (binary_expression "-2 - (uint)local_82" number_literal - (cast_expression "(uint)local_82" ( (type_descriptor "uint" type_identifier) ) identifier)) )) - (binary_expression "(uint)*(ushort *)(local_80 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_80 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 0x12)" ( (binary_expression "local_80 + 0x12" identifier + number_literal) ))))) )) + (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))))) ;) (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }" if (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" * (cast_expression "(char *)(iVar12 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x11)" ( (binary_expression "iVar12 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }" { (expression_statement "FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);" (call_expression "FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0)" identifier (argument_list "(*(undefined4 *)(iVar9 + 4),&local_7c,0,0)" ( (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) , (pointer_expression "&local_7c" & identifier) , number_literal , number_literal ))) ;) (if_statement "if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }" if (parenthesized_expression "(*(ushort *)(local_80 + 0x10) < local_82)" ( (binary_expression "*(ushort *)(local_80 + 0x10) < local_82" (pointer_expression "*(ushort *)(local_80 + 0x10)" * (cast_expression "(ushort *)(local_80 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 0x10)" ( (binary_expression "local_80 + 0x10" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n              FUN_00063eb0(&local_7c);\n            }" { (expression_statement "FUN_00063eb0(&local_7c);" (call_expression "FUN_00063eb0(&local_7c)" identifier (argument_list "(&local_7c)" ( (pointer_expression "&local_7c" & identifier) ))) ;) })) })) (expression_statement "uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);" (assignment_expression "uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" identifier = (pointer_expression "*(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" * (cast_expression "(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" ( (binary_expression "*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2" (binary_expression "*(int *)(uVar6 + 0x40) + -2" (pointer_expression "*(int *)(uVar6 + 0x40)" * (cast_expression "(int *)(uVar6 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x40)" ( (binary_expression "uVar6 + 0x40" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(ushort *)(uVar6 + 0x18) * 2" (binary_expression "(uint)*(ushort *)(uVar6 + 0x18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(uVar6 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x18)" ( (binary_expression "uVar6 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));" (assignment_expression "pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" identifier = (cast_expression "(byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" ( (binary_expression "(uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38)" (call_expression "(uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a))" ( (binary_expression "(uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)" (parenthesized_expression "(uVar4 << 8 | uVar4 >> 8)" ( (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal)) )) & (pointer_expression "*(ushort *)(uVar6 + 0x1a)" * (cast_expression "(ushort *)(uVar6 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1a)" ( (binary_expression "uVar6 + 0x1a" identifier + number_literal) ))))) ))) + (pointer_expression "*(int *)(uVar6 + 0x38)" * (cast_expression "(int *)(uVar6 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x38)" ( (binary_expression "uVar6 + 0x38" identifier + number_literal) ))))) )))) ;) (expression_statement "pbVar14 = pbVar17;" (assignment_expression "pbVar14 = pbVar17" identifier = identifier) ;) (do_statement "do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);" do (compound_statement "{\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          }" { (expression_statement "pbVar18 = pbVar14;" (assignment_expression "pbVar18 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar14 = pbVar18 + 1;" (assignment_expression "pbVar14 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0)" ( (binary_expression "(*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0" (parenthesized_expression "(*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9)" ( (binary_expression "*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9" (binary_expression "*pbVar18 >> 7" (pointer_expression "*pbVar18" * identifier) >> number_literal) & (binary_expression "pbVar18 + 1 < pbVar17 + 9" (binary_expression "pbVar18 + 1" identifier + number_literal) < (binary_expression "pbVar17 + 9" identifier + number_literal))) )) != number_literal) )) ;) (expression_statement "pbVar14 = local_29;" (assignment_expression "pbVar14 = local_29" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar18 + 2;" (assignment_expression "pbVar17 = pbVar18 + 2" identifier = (binary_expression "pbVar18 + 2" identifier + number_literal)) ;) (do_statement "do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');" do (compound_statement "{\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          }" { (expression_statement "local_74 = pbVar17;" (assignment_expression "local_74 = pbVar17" identifier = identifier) ;) (expression_statement "pbVar15 = pbVar14 + 1;" (assignment_expression "pbVar15 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = local_74[-1];" (assignment_expression "bVar2 = local_74[-1]" identifier = (subscript_expression "local_74[-1]" identifier [ number_literal ])) ;) (expression_statement "*pbVar14 = bVar2;" (assignment_expression "*pbVar14 = bVar2" (pointer_expression "*pbVar14" * identifier) = identifier) ;) (if_statement "if (pbVar18 + 10 <= local_74) break;" if (parenthesized_expression "(pbVar18 + 10 <= local_74)" ( (binary_expression "pbVar18 + 10 <= local_74" (binary_expression "pbVar18 + 10" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar14 = pbVar15;" (assignment_expression "pbVar14 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar17 = local_74 + 1;" (assignment_expression "pbVar17 = local_74 + 1" identifier = (binary_expression "local_74 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }" { (expression_statement "FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);" (call_expression "FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c)" identifier (argument_list "((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c)" ( (binary_expression "(int)pbVar15 - (int)local_2d" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_2d" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) , (pointer_expression "&local_7c" & identifier) ))) ;) })) (expression_statement "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;" (assignment_expression "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18" (pointer_expression "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" * (cast_expression "(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" ( (binary_expression "*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)" (binary_expression "*(int *)(iVar9 + 0x38) + 8" (pointer_expression "*(int *)(iVar9 + 0x38)" * (cast_expression "(int *)(iVar9 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x38)" ( (binary_expression "iVar9 + 0x38" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)(iVar9 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar9 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 9)" ( (binary_expression "iVar9 + 9" identifier + number_literal) ))))) )))) = (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18" (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8" (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8" (binary_expression "local_78 >> 0x18" identifier >> number_literal) | (binary_expression "(local_78 & 0xff0000) >> 8" (parenthesized_expression "(local_78 & 0xff0000)" ( (binary_expression "local_78 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_78 & 0xff00) << 8" (parenthesized_expression "(local_78 & 0xff00)" ( (binary_expression "local_78 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_78 << 0x18" identifier << number_literal))) ;) })) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) (if_statement "if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }" { (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) })) })) }))))) (expression_statement "*(undefined1 *)(uVar6 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(uVar6 + 0xc) = 0" (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" * (cast_expression "(undefined1 *)(uVar6 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = param_1[0x3c];" (assignment_expression "cVar1 = param_1[0x3c]" identifier = (subscript_expression "param_1[0x3c]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x3c] = cVar1 + -1;" (assignment_expression "param_1[0x3c] = cVar1 + -1" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = (binary_expression "cVar1 + -1" identifier + number_literal)) ;) (expression_statement "uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);" (assignment_expression "uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" identifier = (pointer_expression "*(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" * (cast_expression "(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (binary_expression "param_1 + (char)(cVar1 + -1) * 4 + 0x70" (binary_expression "param_1 + (char)(cVar1 + -1) * 4" identifier + (binary_expression "(char)(cVar1 + -1) * 4" (cast_expression "(char)(cVar1 + -1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(cVar1 + -1)" ( (binary_expression "cVar1 + -1" identifier + number_literal) ))) * number_literal)) + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x6c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x6c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar8 != 0) goto LAB_00066ea6;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;)) (expression_statement "iVar12 = *(int *)(uVar6 + 0x14);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x14)" identifier = (pointer_expression "*(int *)(uVar6 + 0x14)" * (cast_expression "(int *)(uVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x14)" ( (binary_expression "uVar6 + 0x14" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (for_statement "for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" for ( (assignment_expression "pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8)" identifier = (pointer_expression "*(char **)(*(int *)(param_1 + 0x14) + 8)" * (cast_expression "(char **)(*(int *)(param_1 + 0x14) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x14) + 8)" ( (binary_expression "*(int *)(param_1 + 0x14) + 8" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ; (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pcVar7 = *(char **)(pcVar7 + 0x18)" identifier = (pointer_expression "*(char **)(pcVar7 + 0x18)" * (cast_expression "(char **)(pcVar7 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x18)" ( (binary_expression "pcVar7 + 0x18" identifier + number_literal) ))))) ) (compound_statement "{\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" { (if_statement "if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }" if (parenthesized_expression "(((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c)))" ( (binary_expression "((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))" (parenthesized_expression "((pcVar7 != param_1) && (*pcVar7 == '\0'))" ( (binary_expression "(pcVar7 != param_1) && (*pcVar7 == '\0')" (parenthesized_expression "(pcVar7 != param_1)" ( (binary_expression "pcVar7 != param_1" identifier != identifier) )) && (parenthesized_expression "(*pcVar7 == '\0')" ( (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))" ( (binary_expression "*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c)" (pointer_expression "*(int *)(pcVar7 + 0x6c)" * (cast_expression "(int *)(pcVar7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x6c)" ( (binary_expression "pcVar7 + 0x6c" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0x6c)" * (cast_expression "(int *)(param_1 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }" { (expression_statement "iVar8 = FUN_000383f0();" (assignment_expression "iVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 0) goto LAB_00066ea6;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;)) (break_statement "break;" break ;) })) })) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_74 = (byte *)0x0;" (assignment_expression "local_74 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar12 = *(int *)(uVar6 + 0x34);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x34)" identifier = (pointer_expression "*(int *)(uVar6 + 0x34)" * (cast_expression "(int *)(uVar6 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x34)" ( (binary_expression "uVar6 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_7c = FUN_0005f680();" (assignment_expression "local_7c = FUN_0005f680()" identifier = (call_expression "FUN_0005f680()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_7c != 0) goto LAB_00066e83;" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066e83;" goto statement_identifier ;)) (expression_statement "local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);" (assignment_expression "local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0)" identifier = (call_expression "FUN_000634d0(*(undefined4 *)(uVar6 + 4),0)" identifier (argument_list "(*(undefined4 *)(uVar6 + 4),0)" ( (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }" { (expression_statement "FUN_00064080();" (call_expression "FUN_00064080()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;" if (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" * (cast_expression "(char *)(iVar12 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x11)" ( (binary_expression "iVar12 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00066f10;" goto statement_identifier ;)) (labeled_statement "LAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" statement_identifier : (if_statement "if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" { (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar10 * 2;" (assignment_expression "uVar11 = uVar10 * 2" identifier = (binary_expression "uVar10 * 2" identifier * number_literal)) ;) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" if (parenthesized_expression "(uVar11 < 4)" ( (binary_expression "uVar11 < 4" identifier < number_literal) )) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }" { (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }" { (expression_statement "*(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);" (assignment_expression "*(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c)" (pointer_expression "*(undefined1 *)(local_78 + 0x1c)" * (cast_expression "(undefined1 *)(local_78 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x1c)" ( (binary_expression "local_78 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(uVar6 + 0x1c)" * (cast_expression "(undefined1 *)(uVar6 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if ((uVar11 & 2) == 0) goto LAB_00066f67;" if (parenthesized_expression "((uVar11 & 2) == 0)" ( (binary_expression "(uVar11 & 2) == 0" (parenthesized_expression "(uVar11 & 2)" ( (binary_expression "uVar11 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00066f67;" goto statement_identifier ;)) (expression_statement "*(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);" (assignment_expression "*(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11)" (pointer_expression "*(undefined2 *)(local_78 + 0x1a + uVar11)" * (cast_expression "(undefined2 *)(local_78 + 0x1a + uVar11)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x1a + uVar11)" ( (binary_expression "local_78 + 0x1a + uVar11" (binary_expression "local_78 + 0x1a" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined2 *)(uVar6 + 0x1a + uVar11)" * (cast_expression "(undefined2 *)(uVar6 + 0x1a + uVar11)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1a + uVar11)" ( (binary_expression "uVar6 + 0x1a + uVar11" (binary_expression "uVar6 + 0x1a" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" else (compound_statement "{\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" { (expression_statement "*(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);" (assignment_expression "*(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c)" (pointer_expression "*(undefined4 *)(local_78 + 0x1c)" * (cast_expression "(undefined4 *)(local_78 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x1c)" ( (binary_expression "local_78 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x1c)" * (cast_expression "(undefined4 *)(uVar6 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);" (assignment_expression "*(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11)" (pointer_expression "*(undefined4 *)(local_78 + 0x18 + uVar11)" * (cast_expression "(undefined4 *)(local_78 + 0x18 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x18 + uVar11)" ( (binary_expression "local_78 + 0x18 + uVar11" (binary_expression "local_78 + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x18 + uVar11)" * (cast_expression "(undefined4 *)(uVar6 + 0x18 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x18 + uVar11)" ( (binary_expression "uVar6 + 0x18 + uVar11" (binary_expression "uVar6 + 0x18" identifier + number_literal) + identifier) ))))) ;) (expression_statement "puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(local_78 + 0x20 & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x20 & 0xfffffffc)" ( (binary_expression "local_78 + 0x20 & 0xfffffffc" (binary_expression "local_78 + 0x20" identifier + number_literal) & number_literal) )))) ;) (expression_statement "iVar12 = (local_78 + 0x1c) - (int)puVar16;" (assignment_expression "iVar12 = (local_78 + 0x1c) - (int)puVar16" identifier = (binary_expression "(local_78 + 0x1c) - (int)puVar16" (parenthesized_expression "(local_78 + 0x1c)" ( (binary_expression "local_78 + 0x1c" identifier + number_literal) )) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);" (assignment_expression "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12)" identifier = (cast_expression "(undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)(uVar6 + 0x1c) + -iVar12)" ( (binary_expression "(undefined1 *)(uVar6 + 0x1c) + -iVar12" (cast_expression "(undefined1 *)(uVar6 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) ))) + (unary_expression "-iVar12" - identifier)) )))) ;) (for_statement "for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" for ( (assignment_expression "uVar11 = uVar11 + iVar12 >> 2" identifier = (binary_expression "uVar11 + iVar12 >> 2" (binary_expression "uVar11 + iVar12" identifier + identifier) >> number_literal)) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" { (expression_statement "*puVar16 = *puVar13;" (assignment_expression "*puVar16 = *puVar13" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar20 * -2 + 1" (binary_expression "puVar13 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar16 = puVar16 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar16 + (uint)bVar20 * -2 + 1" (binary_expression "puVar16 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);" statement_identifier : (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar11 = uVar10 * 4;" (assignment_expression "uVar11 = uVar10 * 4" identifier = (binary_expression "uVar10 * 4" identifier * number_literal)) ;) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" if (parenthesized_expression "(uVar11 < 4)" ( (binary_expression "uVar11 < 4" identifier < number_literal) )) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }" { (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }" { (expression_statement "*(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);" (assignment_expression "*(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24)" (pointer_expression "*(undefined1 *)(local_78 + 0x24)" * (cast_expression "(undefined1 *)(local_78 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x24)" ( (binary_expression "local_78 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(uVar6 + 0x24)" * (cast_expression "(undefined1 *)(uVar6 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" { (expression_statement "*(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);" (assignment_expression "*(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24)" (pointer_expression "*(undefined4 *)(local_78 + 0x24)" * (cast_expression "(undefined4 *)(local_78 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x24)" ( (binary_expression "local_78 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x24)" * (cast_expression "(undefined4 *)(uVar6 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);" (assignment_expression "*(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11)" (pointer_expression "*(undefined4 *)(local_78 + 0x20 + uVar11)" * (cast_expression "(undefined4 *)(local_78 + 0x20 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x20 + uVar11)" ( (binary_expression "local_78 + 0x20 + uVar11" (binary_expression "local_78 + 0x20" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x20 + uVar11)" * (cast_expression "(undefined4 *)(uVar6 + 0x20 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x20 + uVar11)" ( (binary_expression "uVar6 + 0x20 + uVar11" (binary_expression "uVar6 + 0x20" identifier + number_literal) + identifier) ))))) ;) (expression_statement "puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(local_78 + 0x28 & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x28 & 0xfffffffc)" ( (binary_expression "local_78 + 0x28 & 0xfffffffc" (binary_expression "local_78 + 0x28" identifier + number_literal) & number_literal) )))) ;) (expression_statement "iVar12 = (int)(local_78 + 0x24) - (int)puVar16;" (assignment_expression "iVar12 = (int)(local_78 + 0x24) - (int)puVar16" identifier = (binary_expression "(int)(local_78 + 0x24) - (int)puVar16" (cast_expression "(int)(local_78 + 0x24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_78 + 0x24)" ( (binary_expression "local_78 + 0x24" identifier + number_literal) ))) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);" (assignment_expression "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12)" identifier = (cast_expression "(undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)(uVar6 + 0x24) + -iVar12)" ( (binary_expression "(undefined1 *)(uVar6 + 0x24) + -iVar12" (cast_expression "(undefined1 *)(uVar6 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))) + (unary_expression "-iVar12" - identifier)) )))) ;) (for_statement "for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" for ( (assignment_expression "uVar11 = iVar12 + uVar11 >> 2" identifier = (binary_expression "iVar12 + uVar11 >> 2" (binary_expression "iVar12 + uVar11" identifier + identifier) >> number_literal)) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" { (expression_statement "*puVar16 = *puVar13;" (assignment_expression "*puVar16 = *puVar13" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar20 * -2 + 1" (binary_expression "puVar13 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar16 = puVar16 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar16 + (uint)bVar20 * -2 + 1" (binary_expression "puVar16 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }))) (expression_statement "*(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);" (assignment_expression "*(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc)" (pointer_expression "*(undefined1 *)(local_78 + 0xc)" * (cast_expression "(undefined1 *)(local_78 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0xc)" ( (binary_expression "local_78 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" * (cast_expression "(undefined1 *)(uVar6 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "FUN_00038500();" (call_expression "FUN_00038500()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;" (assignment_expression "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18" (pointer_expression "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" * (cast_expression "(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" ( (binary_expression "*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)" (binary_expression "*(int *)(uVar6 + 0x38) + 8" (pointer_expression "*(int *)(uVar6 + 0x38)" * (cast_expression "(int *)(uVar6 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x38)" ( (binary_expression "uVar6 + 0x38" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)(uVar6 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 9)" ( (binary_expression "uVar6 + 9" identifier + number_literal) ))))) )))) = (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18" (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8" (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8" (binary_expression "(uint)local_74 >> 0x18" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)local_74 & 0xff0000) >> 8" (parenthesized_expression "((uint)local_74 & 0xff0000)" ( (binary_expression "(uint)local_74 & 0xff0000" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)local_74 & 0xff00) << 8" (parenthesized_expression "((uint)local_74 & 0xff00)" ( (binary_expression "(uint)local_74 & 0xff00" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)local_74 << 0x18" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal))) ;) (expression_statement "*(uint *)(param_1 + 0x74) = local_78;" (assignment_expression "*(uint *)(param_1 + 0x74) = local_78" (pointer_expression "*(uint *)(param_1 + 0x74)" * (cast_expression "(uint *)(param_1 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar11 = local_78;" (assignment_expression "uVar11 = local_78" identifier = identifier) ;) (goto_statement "goto LAB_00066fb5;" goto statement_identifier ;) }))) }) (else_clause "else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" else (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" if (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" * (cast_expression "(char *)(iVar12 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x11)" ( (binary_expression "iVar12 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" { (labeled_statement "LAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);" statement_identifier : (expression_statement "FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);" (call_expression "FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c)" identifier (argument_list "(*(undefined4 *)(uVar6 + 4),&local_7c)" ( (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) , (pointer_expression "&local_7c" & identifier) ))) ;)) (goto_statement "goto LAB_00066f2a;" goto statement_identifier ;) })))) (labeled_statement "LAB_00066e83:\n  param_1[0x74] = '\0';" statement_identifier : (expression_statement "param_1[0x74] = '\0';" (assignment_expression "param_1[0x74] = '\0'" (subscript_expression "param_1[0x74]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "param_1[0x75] = '\0';" (assignment_expression "param_1[0x75] = '\0'" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x76] = '\0';" (assignment_expression "param_1[0x76] = '\0'" (subscript_expression "param_1[0x76]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x77] = '\0';" (assignment_expression "param_1[0x77] = '\0'" (subscript_expression "param_1[0x77]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) (if_statement "if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000a9ea0();\n  }" if (parenthesized_expression "((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0))" ( (binary_expression "(local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)" (parenthesized_expression "(local_78 == 0)" ( (binary_expression "local_78 == 0" identifier == number_literal) )) || (parenthesized_expression "(FUN_0001f150(), iVar8 = local_7c, local_7c != 0)" ( (comma_expression "FUN_0001f150(), iVar8 = local_7c, local_7c != 0" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) , (comma_expression "iVar8 = local_7c, local_7c != 0" (assignment_expression "iVar8 = local_7c" identifier = identifier) , (binary_expression "local_7c != 0" identifier != number_literal))) ))) )) (compound_statement "{\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    /* WARNING: Subroutine does not return */\n    FUN_000a9ea0();\n  }" { (labeled_statement "LAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }" statement_identifier : (if_statement "if (local_9c != 0) {\n      FUN_00026f80();\n    }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00026f80();\n    }" { (expression_statement "FUN_00026f80();" (call_expression "FUN_00026f80()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n      return iVar8;\n    }" { (return_statement "return iVar8;" return identifier ;) })) comment (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar11 = *(uint *)(param_1 + 0x74);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x74)" identifier = (pointer_expression "*(uint *)(param_1 + 0x74)" * (cast_expression "(uint *)(param_1 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;" statement_identifier : (expression_statement "*(uint *)(param_1 + 0x70) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x70) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) = identifier) ;)) (expression_statement "param_1[0x3c] = '\x01';" (assignment_expression "param_1[0x3c] = '\x01'" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "param_1[0x3e] = '\0';" (assignment_expression "param_1[0x3e] = '\0'" (subscript_expression "param_1[0x3e]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x3f] = '\0';" (assignment_expression "param_1[0x3f] = '\0'" (subscript_expression "param_1[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x40] = '\0';" (assignment_expression "param_1[0x40] = '\0'" (subscript_expression "param_1[0x40]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x41] = '\0';" (assignment_expression "param_1[0x41] = '\0'" (subscript_expression "param_1[0x41]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(uint *)(param_1 + 0x6c) = uVar11;" (assignment_expression "*(uint *)(param_1 + 0x6c) = uVar11" (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00066d0d;" goto statement_identifier ;) })))
(translation_unit "int __regparm3 balance(BtCursor *pCur)\n\n{\n  int iVar1;\n  byte bVar2;\n  u16 uVar3;\n  u32 uVar4;\n  MemPage *pFrom;\n  BtCursor *pBVar5;\n  BtShared *pBVar6;\n  void *p;\n  byte *pbVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  MemPage *pMVar12;\n  Pgno *pPVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int in_GS_OFFSET;\n  byte bVar20;\n  Pgno *in_stack_ffffff4c;\n  Pgno PVar21;\n  int in_stack_ffffff54;\n  void *local_9c;\n  u16 szCell;\n  MemPage *pNew;\n  int rc;\n  Pgno pgnoNew;\n  u8 *pCell;\n  CellArray b;\n  u8 aBalanceQuickSpace [13];\n  \n  bVar20 = 0;\n  pMVar12 = pCur->pPage;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = (void *)0x0;\n  uVar4 = pCur->pBt->usableSize;\nLAB_00066d0d:\n  iVar14 = pMVar12->nFree;\n  pFrom = pMVar12;\n  p = local_9c;\n  do {\n    local_9c = p;\n    if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }\n    if (pFrom->nOverflow == '\0') {\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }\n    else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }\n    pMVar12 = pCur->apPage[iVar14 + -1];\n    uVar3 = pCur->aiIdx[iVar14 + -1];\n    PVar21 = 0x66d55;\n    iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);\n    if (iVar9 != 0) {\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }\n    if (pMVar12->nFree < 0) {\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }\n    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))\n    {\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }\n    else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }\n    pFrom->nOverflow = '\0';\n    sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n    cVar8 = pCur->iPage + -1;\n    pCur->iPage = cVar8;\n    pFrom = pCur->apPage[cVar8];\n    pCur->pPage = pFrom;\n    if (iVar9 != 0) goto LAB_00066ea6;\n    iVar14 = pFrom->nFree;\n    p = local_9c;\n  } while( true );\n  for (pBVar5 = pCur->pBt->pCursor; pBVar5 != (BtCursor *)0x0; pBVar5 = pBVar5->pNext) {\n    if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  pgnoNew = 0;\n  pCell = (u8 *)0x0;\n  pBVar6 = pFrom->pBt;\n  PVar21 = 0x66e77;\n  rc = sqlite3PagerWrite(pFrom->pDbPage);\n  if (rc != 0) goto LAB_00066e83;\n  rc = allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54);\n  if (rc == 0) {\n    copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);\n    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (pBVar6->autoVacuum != '\0') {\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  pCur->apPage[1] = (MemPage *)0x0;\n  iVar9 = rc;\n  if ((pgnoNew == 0) ||\n     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)) {\nLAB_00066ea6:\n    if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar9;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  pMVar12 = pCur->apPage[1];\nLAB_00066fb5:\n  pCur->apPage[0] = pFrom;\n  pCur->iPage = '\x01';\n  pCur->ix = 0;\n  pCur->aiIdx[0] = 0;\n  pCur->pPage = pMVar12;\n  goto LAB_00066d0d;\n}\n\n" (function_definition "int __regparm3 balance(BtCursor *pCur)\n\n{\n  int iVar1;\n  byte bVar2;\n  u16 uVar3;\n  u32 uVar4;\n  MemPage *pFrom;\n  BtCursor *pBVar5;\n  BtShared *pBVar6;\n  void *p;\n  byte *pbVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  MemPage *pMVar12;\n  Pgno *pPVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int in_GS_OFFSET;\n  byte bVar20;\n  Pgno *in_stack_ffffff4c;\n  Pgno PVar21;\n  int in_stack_ffffff54;\n  void *local_9c;\n  u16 szCell;\n  MemPage *pNew;\n  int rc;\n  Pgno pgnoNew;\n  u8 *pCell;\n  CellArray b;\n  u8 aBalanceQuickSpace [13];\n  \n  bVar20 = 0;\n  pMVar12 = pCur->pPage;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = (void *)0x0;\n  uVar4 = pCur->pBt->usableSize;\nLAB_00066d0d:\n  iVar14 = pMVar12->nFree;\n  pFrom = pMVar12;\n  p = local_9c;\n  do {\n    local_9c = p;\n    if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }\n    if (pFrom->nOverflow == '\0') {\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }\n    else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }\n    pMVar12 = pCur->apPage[iVar14 + -1];\n    uVar3 = pCur->aiIdx[iVar14 + -1];\n    PVar21 = 0x66d55;\n    iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);\n    if (iVar9 != 0) {\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }\n    if (pMVar12->nFree < 0) {\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }\n    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))\n    {\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }\n    else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }\n    pFrom->nOverflow = '\0';\n    sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n    cVar8 = pCur->iPage + -1;\n    pCur->iPage = cVar8;\n    pFrom = pCur->apPage[cVar8];\n    pCur->pPage = pFrom;\n    if (iVar9 != 0) goto LAB_00066ea6;\n    iVar14 = pFrom->nFree;\n    p = local_9c;\n  } while( true );\n  for (pBVar5 = pCur->pBt->pCursor; pBVar5 != (BtCursor *)0x0; pBVar5 = pBVar5->pNext) {\n    if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  pgnoNew = 0;\n  pCell = (u8 *)0x0;\n  pBVar6 = pFrom->pBt;\n  PVar21 = 0x66e77;\n  rc = sqlite3PagerWrite(pFrom->pDbPage);\n  if (rc != 0) goto LAB_00066e83;\n  rc = allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54);\n  if (rc == 0) {\n    copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);\n    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (pBVar6->autoVacuum != '\0') {\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  pCur->apPage[1] = (MemPage *)0x0;\n  iVar9 = rc;\n  if ((pgnoNew == 0) ||\n     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)) {\nLAB_00066ea6:\n    if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar9;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  pMVar12 = pCur->apPage[1];\nLAB_00066fb5:\n  pCur->apPage[0] = pFrom;\n  pCur->iPage = '\x01';\n  pCur->ix = 0;\n  pCur->aiIdx[0] = 0;\n  pCur->pPage = pMVar12;\n  goto LAB_00066d0d;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "balance(BtCursor *pCur)" identifier (parameter_list "(BtCursor *pCur)" ( (parameter_declaration "BtCursor *pCur" type_identifier (pointer_declarator "*pCur" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  byte bVar2;\n  u16 uVar3;\n  u32 uVar4;\n  MemPage *pFrom;\n  BtCursor *pBVar5;\n  BtShared *pBVar6;\n  void *p;\n  byte *pbVar7;\n  char cVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  MemPage *pMVar12;\n  Pgno *pPVar13;\n  int iVar14;\n  undefined4 *puVar15;\n  byte *pbVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int in_GS_OFFSET;\n  byte bVar20;\n  Pgno *in_stack_ffffff4c;\n  Pgno PVar21;\n  int in_stack_ffffff54;\n  void *local_9c;\n  u16 szCell;\n  MemPage *pNew;\n  int rc;\n  Pgno pgnoNew;\n  u8 *pCell;\n  CellArray b;\n  u8 aBalanceQuickSpace [13];\n  \n  bVar20 = 0;\n  pMVar12 = pCur->pPage;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = (void *)0x0;\n  uVar4 = pCur->pBt->usableSize;\nLAB_00066d0d:\n  iVar14 = pMVar12->nFree;\n  pFrom = pMVar12;\n  p = local_9c;\n  do {\n    local_9c = p;\n    if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }\n    if (pFrom->nOverflow == '\0') {\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }\n    else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }\n    pMVar12 = pCur->apPage[iVar14 + -1];\n    uVar3 = pCur->aiIdx[iVar14 + -1];\n    PVar21 = 0x66d55;\n    iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);\n    if (iVar9 != 0) {\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }\n    if (pMVar12->nFree < 0) {\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }\n    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))\n    {\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }\n    else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }\n    pFrom->nOverflow = '\0';\n    sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n    cVar8 = pCur->iPage + -1;\n    pCur->iPage = cVar8;\n    pFrom = pCur->apPage[cVar8];\n    pCur->pPage = pFrom;\n    if (iVar9 != 0) goto LAB_00066ea6;\n    iVar14 = pFrom->nFree;\n    p = local_9c;\n  } while( true );\n  for (pBVar5 = pCur->pBt->pCursor; pBVar5 != (BtCursor *)0x0; pBVar5 = pBVar5->pNext) {\n    if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  pgnoNew = 0;\n  pCell = (u8 *)0x0;\n  pBVar6 = pFrom->pBt;\n  PVar21 = 0x66e77;\n  rc = sqlite3PagerWrite(pFrom->pDbPage);\n  if (rc != 0) goto LAB_00066e83;\n  rc = allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54);\n  if (rc == 0) {\n    copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);\n    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (pBVar6->autoVacuum != '\0') {\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  pCur->apPage[1] = (MemPage *)0x0;\n  iVar9 = rc;\n  if ((pgnoNew == 0) ||\n     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)) {\nLAB_00066ea6:\n    if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar9;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  pMVar12 = pCur->apPage[1];\nLAB_00066fb5:\n  pCur->apPage[0] = pFrom;\n  pCur->iPage = '\x01';\n  pCur->ix = 0;\n  pCur->aiIdx[0] = 0;\n  pCur->pPage = pMVar12;\n  goto LAB_00066d0d;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "u16 uVar3;" type_identifier identifier ;) (declaration "u32 uVar4;" type_identifier identifier ;) (declaration "MemPage *pFrom;" type_identifier (pointer_declarator "*pFrom" * identifier) ;) (declaration "BtCursor *pBVar5;" type_identifier (pointer_declarator "*pBVar5" * identifier) ;) (declaration "BtShared *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "void *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "MemPage *pMVar12;" type_identifier (pointer_declarator "*pMVar12" * identifier) ;) (declaration "Pgno *pPVar13;" type_identifier (pointer_declarator "*pPVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "Pgno *in_stack_ffffff4c;" type_identifier (pointer_declarator "*in_stack_ffffff4c" * identifier) ;) (declaration "Pgno PVar21;" type_identifier identifier ;) (declaration "int in_stack_ffffff54;" primitive_type identifier ;) (declaration "void *local_9c;" primitive_type (pointer_declarator "*local_9c" * identifier) ;) (declaration "u16 szCell;" type_identifier identifier ;) (declaration "MemPage *pNew;" type_identifier (pointer_declarator "*pNew" * identifier) ;) (declaration "int rc;" primitive_type identifier ;) (declaration "Pgno pgnoNew;" type_identifier identifier ;) (declaration "u8 *pCell;" type_identifier (pointer_declarator "*pCell" * identifier) ;) (declaration "CellArray b;" type_identifier identifier ;) (declaration "u8 aBalanceQuickSpace [13];" type_identifier (array_declarator "aBalanceQuickSpace [13]" identifier [ number_literal ]) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "pMVar12 = pCur->pPage;" (assignment_expression "pMVar12 = pCur->pPage" identifier = (field_expression "pCur->pPage" identifier -> field_identifier)) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_9c = (void *)0x0;" (assignment_expression "local_9c = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar4 = pCur->pBt->usableSize;" (assignment_expression "uVar4 = pCur->pBt->usableSize" identifier = (field_expression "pCur->pBt->usableSize" (field_expression "pCur->pBt" identifier -> field_identifier) -> field_identifier)) ;) (labeled_statement "LAB_00066d0d:\n  iVar14 = pMVar12->nFree;" statement_identifier : (expression_statement "iVar14 = pMVar12->nFree;" (assignment_expression "iVar14 = pMVar12->nFree" identifier = (field_expression "pMVar12->nFree" identifier -> field_identifier)) ;)) (expression_statement "pFrom = pMVar12;" (assignment_expression "pFrom = pMVar12" identifier = identifier) ;) (expression_statement "p = local_9c;" (assignment_expression "p = local_9c" identifier = identifier) ;) (do_statement "do {\n    local_9c = p;\n    if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }\n    if (pFrom->nOverflow == '\0') {\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }\n    else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }\n    pMVar12 = pCur->apPage[iVar14 + -1];\n    uVar3 = pCur->aiIdx[iVar14 + -1];\n    PVar21 = 0x66d55;\n    iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);\n    if (iVar9 != 0) {\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }\n    if (pMVar12->nFree < 0) {\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }\n    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))\n    {\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }\n    else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }\n    pFrom->nOverflow = '\0';\n    sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n    cVar8 = pCur->iPage + -1;\n    pCur->iPage = cVar8;\n    pFrom = pCur->apPage[cVar8];\n    pCur->pPage = pFrom;\n    if (iVar9 != 0) goto LAB_00066ea6;\n    iVar14 = pFrom->nFree;\n    p = local_9c;\n  } while( true );" do (compound_statement "{\n    local_9c = p;\n    if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }\n    if (pFrom->nOverflow == '\0') {\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }\n    else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }\n    pMVar12 = pCur->apPage[iVar14 + -1];\n    uVar3 = pCur->aiIdx[iVar14 + -1];\n    PVar21 = 0x66d55;\n    iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);\n    if (iVar9 != 0) {\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }\n    if (pMVar12->nFree < 0) {\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }\n    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))\n    {\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }\n    else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }\n    pFrom->nOverflow = '\0';\n    sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n    cVar8 = pCur->iPage + -1;\n    pCur->iPage = cVar8;\n    pFrom = pCur->apPage[cVar8];\n    pCur->pPage = pFrom;\n    if (iVar9 != 0) goto LAB_00066ea6;\n    iVar14 = pFrom->nFree;\n    p = local_9c;\n  }" { (expression_statement "local_9c = p;" (assignment_expression "local_9c = p" identifier = identifier) ;) (if_statement "if ((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)) {\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }" if (parenthesized_expression "((iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0))" ( (binary_expression "(iVar14 < 0) && (iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)" (parenthesized_expression "(iVar14 < 0)" ( (binary_expression "iVar14 < 0" identifier < number_literal) )) && (parenthesized_expression "(iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0)" ( (comma_expression "iVar14 = btreeComputeFreeSpace(pFrom), iVar14 != 0" (assignment_expression "iVar14 = btreeComputeFreeSpace(pFrom)" identifier = (call_expression "btreeComputeFreeSpace(pFrom)" identifier (argument_list "(pFrom)" ( identifier )))) , (binary_expression "iVar14 != 0" identifier != number_literal)) ))) )) (compound_statement "{\nLAB_00066e17:\n      iVar9 = 0;\n      goto LAB_00066ea6;\n    }" { (labeled_statement "LAB_00066e17:\n      iVar9 = 0;" statement_identifier : (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;) })) (if_statement "if (pFrom->nOverflow == '\0') {\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }\n    else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }" if (parenthesized_expression "(pFrom->nOverflow == '\0')" ( (binary_expression "pFrom->nOverflow == '\0'" (field_expression "pFrom->nOverflow" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;\n    }" { (if_statement "if ((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))\n      goto LAB_00066e17;" if (parenthesized_expression "((pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0))" ( (binary_expression "(pFrom->nFree <= (int)((uVar4 * 2) / 3)) || (iVar14 = (int)pCur->iPage, iVar14 == 0)" (parenthesized_expression "(pFrom->nFree <= (int)((uVar4 * 2) / 3))" ( (binary_expression "pFrom->nFree <= (int)((uVar4 * 2) / 3)" (field_expression "pFrom->nFree" identifier -> field_identifier) <= (cast_expression "(int)((uVar4 * 2) / 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar4 * 2) / 3)" ( (binary_expression "(uVar4 * 2) / 3" (parenthesized_expression "(uVar4 * 2)" ( (binary_expression "uVar4 * 2" identifier * number_literal) )) / number_literal) )))) )) || (parenthesized_expression "(iVar14 = (int)pCur->iPage, iVar14 == 0)" ( (comma_expression "iVar14 = (int)pCur->iPage, iVar14 == 0" (assignment_expression "iVar14 = (int)pCur->iPage" identifier = (cast_expression "(int)pCur->iPage" ( (type_descriptor "int" primitive_type) ) (field_expression "pCur->iPage" identifier -> field_identifier))) , (binary_expression "iVar14 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00066e17;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }" else (compound_statement "{\n      iVar14 = (int)pCur->iPage;\n      if (iVar14 == 0) break;\n    }" { (expression_statement "iVar14 = (int)pCur->iPage;" (assignment_expression "iVar14 = (int)pCur->iPage" identifier = (cast_expression "(int)pCur->iPage" ( (type_descriptor "int" primitive_type) ) (field_expression "pCur->iPage" identifier -> field_identifier))) ;) (if_statement "if (iVar14 == 0) break;" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }))) (expression_statement "pMVar12 = pCur->apPage[iVar14 + -1];" (assignment_expression "pMVar12 = pCur->apPage[iVar14 + -1]" identifier = (subscript_expression "pCur->apPage[iVar14 + -1]" (field_expression "pCur->apPage" identifier -> field_identifier) [ (binary_expression "iVar14 + -1" identifier + number_literal) ])) ;) (expression_statement "uVar3 = pCur->aiIdx[iVar14 + -1];" (assignment_expression "uVar3 = pCur->aiIdx[iVar14 + -1]" identifier = (subscript_expression "pCur->aiIdx[iVar14 + -1]" (field_expression "pCur->aiIdx" identifier -> field_identifier) [ (binary_expression "iVar14 + -1" identifier + number_literal) ])) ;) (expression_statement "PVar21 = 0x66d55;" (assignment_expression "PVar21 = 0x66d55" identifier = number_literal) ;) (expression_statement "iVar9 = sqlite3PagerWrite(pMVar12->pDbPage);" (assignment_expression "iVar9 = sqlite3PagerWrite(pMVar12->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pMVar12->pDbPage)" identifier (argument_list "(pMVar12->pDbPage)" ( (field_expression "pMVar12->pDbPage" identifier -> field_identifier) )))) ;) (if_statement "if (iVar9 != 0) {\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00066ff0:\n      pFrom->nOverflow = '\0';\n      sqlite3PagerUnrefNotNull(pFrom->pDbPage);\n      cVar8 = pCur->iPage + -1;\n      pCur->iPage = cVar8;\n      pCur->pPage = pCur->apPage[cVar8];\n      goto LAB_00066ea6;\n    }" { (labeled_statement "LAB_00066ff0:\n      pFrom->nOverflow = '\0';" statement_identifier : (expression_statement "pFrom->nOverflow = '\0';" (assignment_expression "pFrom->nOverflow = '\0'" (field_expression "pFrom->nOverflow" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "sqlite3PagerUnrefNotNull(pFrom->pDbPage);" (call_expression "sqlite3PagerUnrefNotNull(pFrom->pDbPage)" identifier (argument_list "(pFrom->pDbPage)" ( (field_expression "pFrom->pDbPage" identifier -> field_identifier) ))) ;) (expression_statement "cVar8 = pCur->iPage + -1;" (assignment_expression "cVar8 = pCur->iPage + -1" identifier = (binary_expression "pCur->iPage + -1" (field_expression "pCur->iPage" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pCur->iPage = cVar8;" (assignment_expression "pCur->iPage = cVar8" (field_expression "pCur->iPage" identifier -> field_identifier) = identifier) ;) (expression_statement "pCur->pPage = pCur->apPage[cVar8];" (assignment_expression "pCur->pPage = pCur->apPage[cVar8]" (field_expression "pCur->pPage" identifier -> field_identifier) = (subscript_expression "pCur->apPage[cVar8]" (field_expression "pCur->apPage" identifier -> field_identifier) [ identifier ])) ;) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;) })) (if_statement "if (pMVar12->nFree < 0) {\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }" if (parenthesized_expression "(pMVar12->nFree < 0)" ( (binary_expression "pMVar12->nFree < 0" (field_expression "pMVar12->nFree" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n      PVar21 = 0x66fe2;\n      iVar9 = btreeComputeFreeSpace(pMVar12);\n      if (iVar9 != 0) goto LAB_00066ff0;\n    }" { (expression_statement "PVar21 = 0x66fe2;" (assignment_expression "PVar21 = 0x66fe2" identifier = number_literal) ;) (expression_statement "iVar9 = btreeComputeFreeSpace(pMVar12);" (assignment_expression "iVar9 = btreeComputeFreeSpace(pMVar12)" identifier = (call_expression "btreeComputeFreeSpace(pMVar12)" identifier (argument_list "(pMVar12)" ( identifier )))) ;) (if_statement "if (iVar9 != 0) goto LAB_00066ff0;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ff0;" goto statement_identifier ;)) })) (if_statement "if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))\n    {\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }\n    else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }" if (parenthesized_expression "((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))))" ( (binary_expression "(((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell)))" (parenthesized_expression "(((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell))" ( (binary_expression "((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||\n        (pFrom->aiOvfl[0] != pFrom->nCell)" (parenthesized_expression "((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01'))" ( (binary_expression "(pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')" (parenthesized_expression "(pFrom->intKeyLeaf == '\0')" ( (binary_expression "pFrom->intKeyLeaf == '\0'" (field_expression "pFrom->intKeyLeaf" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(pFrom->nOverflow != '\x01')" ( (binary_expression "pFrom->nOverflow != '\x01'" (field_expression "pFrom->nOverflow" identifier -> field_identifier) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(pFrom->aiOvfl[0] != pFrom->nCell)" ( (binary_expression "pFrom->aiOvfl[0] != pFrom->nCell" (subscript_expression "pFrom->aiOvfl[0]" (field_expression "pFrom->aiOvfl" identifier -> field_identifier) [ number_literal ]) != (field_expression "pFrom->nCell" identifier -> field_identifier)) ))) )) || (parenthesized_expression "((pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell)))" ( (parenthesized_expression "(pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell))" ( (binary_expression "pMVar12->pgno == 1 || (uVar3 != pMVar12->nCell)" (binary_expression "pMVar12->pgno == 1" (field_expression "pMVar12->pgno" identifier -> field_identifier) == number_literal) || (parenthesized_expression "(uVar3 != pMVar12->nCell)" ( (binary_expression "uVar3 != pMVar12->nCell" identifier != (field_expression "pMVar12->nCell" identifier -> field_identifier)) ))) )) ))) )) (compound_statement "{\n      iVar9 = 0x66d89;\n      local_9c = pcache1Alloc(pCur->pBt->pageSize);\n      iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);\n      if (p != (void *)0x0) {\n        pcache1Free(p);\n      }\n    }" { (expression_statement "iVar9 = 0x66d89;" (assignment_expression "iVar9 = 0x66d89" identifier = number_literal) ;) (expression_statement "local_9c = pcache1Alloc(pCur->pBt->pageSize);" (assignment_expression "local_9c = pcache1Alloc(pCur->pBt->pageSize)" identifier = (call_expression "pcache1Alloc(pCur->pBt->pageSize)" identifier (argument_list "(pCur->pBt->pageSize)" ( (field_expression "pCur->pBt->pageSize" (field_expression "pCur->pBt" identifier -> field_identifier) -> field_identifier) )))) ;) (expression_statement "iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54);" (assignment_expression "iVar9 = balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54)" identifier = (call_expression "balance_nonroot((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54)" identifier (argument_list "((MemPage *)(uint)(iVar14 == 1),pCur->hints & 1,(u8 *)in_stack_ffffff4c\n                              ,iVar9,in_stack_ffffff54)" ( (cast_expression "(MemPage *)(uint)(iVar14 == 1)" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(iVar14 == 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 == 1)" ( (binary_expression "iVar14 == 1" identifier == number_literal) )))) , (binary_expression "pCur->hints & 1" (field_expression "pCur->hints" identifier -> field_identifier) & number_literal) , (cast_expression "(u8 *)in_stack_ffffff4c" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) (if_statement "if (p != (void *)0x0) {\n        pcache1Free(p);\n      }" if (parenthesized_expression "(p != (void *)0x0)" ( (binary_expression "p != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcache1Free(p);\n      }" { (expression_statement "pcache1Free(p);" (call_expression "pcache1Free(p)" identifier (argument_list "(p)" ( identifier ))) ;) })) }) (else_clause "else if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }" else (if_statement "if (pFrom->aiOvfl[0] == 0) {\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }\n    else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }" if (parenthesized_expression "(pFrom->aiOvfl[0] == 0)" ( (binary_expression "pFrom->aiOvfl[0] == 0" (subscript_expression "pFrom->aiOvfl[0]" (field_expression "pFrom->aiOvfl" identifier -> field_identifier) [ number_literal ]) == number_literal) )) (compound_statement "{\n      iVar9 = sqlite3CorruptError(0x1185d);\n    }" { (expression_statement "iVar9 = sqlite3CorruptError(0x1185d);" (assignment_expression "iVar9 = sqlite3CorruptError(0x1185d)" identifier = (call_expression "sqlite3CorruptError(0x1185d)" identifier (argument_list "(0x1185d)" ( number_literal )))) ;) }) (else_clause "else {\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }" else (compound_statement "{\n      pBVar6 = pFrom->pBt;\n      rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);\n      iVar9 = rc;\n      if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }\n    }" { (expression_statement "pBVar6 = pFrom->pBt;" (assignment_expression "pBVar6 = pFrom->pBt" identifier = (field_expression "pFrom->pBt" identifier -> field_identifier)) ;) (expression_statement "rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54);" (assignment_expression "rc = allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54)" identifier = (call_expression "allocateBtreePage((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54)" identifier (argument_list "((BtShared *)0x0,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                             (u8)in_stack_ffffff54)" ( (cast_expression "(BtShared *)0x0" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(MemPage **)0x0" ( (type_descriptor "MemPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , identifier , identifier , (cast_expression "(u8)in_stack_ffffff54" ( (type_descriptor "u8" type_identifier) ) identifier) )))) ;) (expression_statement "iVar9 = rc;" (assignment_expression "iVar9 = rc" identifier = identifier) ;) (if_statement "if (rc == 0) {\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n        pCell = pFrom->apOvfl[0];\n        szCell = (*pFrom->xCellSize)(pFrom,pCell);\n        zeroPage(pNew,0xd);\n        b.nCell = 1;\n        b.szCell = &szCell;\n        b.apEnd[0] = pFrom->aDataEnd;\n        b.ixNx[0] = 2;\n        b.pRef = pFrom;\n        b.apCell = &pCell;\n        pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);\n        rc = (int)pPVar13;\n        if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }\n        iVar9 = rc;\n        if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }\n      }" { (expression_statement "pCell = pFrom->apOvfl[0];" (assignment_expression "pCell = pFrom->apOvfl[0]" identifier = (subscript_expression "pFrom->apOvfl[0]" (field_expression "pFrom->apOvfl" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "szCell = (*pFrom->xCellSize)(pFrom,pCell);" (assignment_expression "szCell = (*pFrom->xCellSize)(pFrom,pCell)" identifier = (call_expression "(*pFrom->xCellSize)(pFrom,pCell)" (parenthesized_expression "(*pFrom->xCellSize)" ( (pointer_expression "*pFrom->xCellSize" * (field_expression "pFrom->xCellSize" identifier -> field_identifier)) )) (argument_list "(pFrom,pCell)" ( identifier , identifier )))) ;) (expression_statement "zeroPage(pNew,0xd);" (call_expression "zeroPage(pNew,0xd)" identifier (argument_list "(pNew,0xd)" ( identifier , number_literal ))) ;) (expression_statement "b.nCell = 1;" (assignment_expression "b.nCell = 1" (field_expression "b.nCell" identifier . field_identifier) = number_literal) ;) (expression_statement "b.szCell = &szCell;" (assignment_expression "b.szCell = &szCell" (field_expression "b.szCell" identifier . field_identifier) = (pointer_expression "&szCell" & identifier)) ;) (expression_statement "b.apEnd[0] = pFrom->aDataEnd;" (assignment_expression "b.apEnd[0] = pFrom->aDataEnd" (subscript_expression "b.apEnd[0]" (field_expression "b.apEnd" identifier . field_identifier) [ number_literal ]) = (field_expression "pFrom->aDataEnd" identifier -> field_identifier)) ;) (expression_statement "b.ixNx[0] = 2;" (assignment_expression "b.ixNx[0] = 2" (subscript_expression "b.ixNx[0]" (field_expression "b.ixNx" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "b.pRef = pFrom;" (assignment_expression "b.pRef = pFrom" (field_expression "b.pRef" identifier . field_identifier) = identifier) ;) (expression_statement "b.apCell = &pCell;" (assignment_expression "b.apCell = &pCell" (field_expression "b.apCell" identifier . field_identifier) = (pointer_expression "&pCell" & identifier)) ;) (expression_statement "pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew);" (assignment_expression "pPVar13 = (Pgno *)rebuildPage(&b,0,1,pNew)" identifier = (cast_expression "(Pgno *)rebuildPage(&b,0,1,pNew)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "rebuildPage(&b,0,1,pNew)" identifier (argument_list "(&b,0,1,pNew)" ( (pointer_expression "&b" & identifier) , number_literal , number_literal , identifier ))))) ;) (expression_statement "rc = (int)pPVar13;" (assignment_expression "rc = (int)pPVar13" identifier = (cast_expression "(int)pPVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pPVar13 == (Pgno *)0x0) {\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }" if (parenthesized_expression "(pPVar13 == (Pgno *)0x0)" ( (binary_expression "pPVar13 == (Pgno *)0x0" identifier == (cast_expression "(Pgno *)0x0" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;\n          if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }\n          pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);\n          do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);\n          pbVar16 = aBalanceQuickSpace + 4;\n          pbVar7 = pbVar19 + 2;\n          do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');\n          if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }\n          *(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;\n        }" { (expression_statement "pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize;" (assignment_expression "pNew->nFree = ((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize" (field_expression "pNew->nFree" identifier -> field_identifier) = (binary_expression "((-2 - (uint)szCell) - (uint)pNew->cellOffset) + pBVar6->usableSize" (parenthesized_expression "((-2 - (uint)szCell) - (uint)pNew->cellOffset)" ( (binary_expression "(-2 - (uint)szCell) - (uint)pNew->cellOffset" (parenthesized_expression "(-2 - (uint)szCell)" ( (binary_expression "-2 - (uint)szCell" number_literal - (cast_expression "(uint)szCell" ( (type_descriptor "uint" type_identifier) ) identifier)) )) - (cast_expression "(uint)pNew->cellOffset" ( (type_descriptor "uint" type_identifier) ) (field_expression "pNew->cellOffset" identifier -> field_identifier))) )) + (field_expression "pBVar6->usableSize" identifier -> field_identifier))) ;) (if_statement "if (pBVar6->autoVacuum != '\0') {\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }" if (parenthesized_expression "(pBVar6->autoVacuum != '\0')" ( (binary_expression "pBVar6->autoVacuum != '\0'" (field_expression "pBVar6->autoVacuum" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);\n            in_stack_ffffff4c = pPVar13;\n            if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }\n          }" { (expression_statement "ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc);" (call_expression "ptrmapPut(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc)" identifier (argument_list "(pBVar6,pgnoNew,'\x05',pMVar12->pgno,&rc)" ( identifier , identifier , (char_literal "'\x05'" ' escape_sequence ') , (field_expression "pMVar12->pgno" identifier -> field_identifier) , (pointer_expression "&rc" & identifier) ))) ;) (expression_statement "in_stack_ffffff4c = pPVar13;" (assignment_expression "in_stack_ffffff4c = pPVar13" identifier = identifier) ;) (if_statement "if (pNew->minLocal < szCell) {\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }" if (parenthesized_expression "(pNew->minLocal < szCell)" ( (binary_expression "pNew->minLocal < szCell" (field_expression "pNew->minLocal" identifier -> field_identifier) < identifier) )) (compound_statement "{\n              ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);\n              in_stack_ffffff4c = pPVar13;\n            }" { (expression_statement "ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc);" (call_expression "ptrmapPutOvflPtr(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc)" identifier (argument_list "(pNew,(MemPage *)&pNew->aDataEnd,pCell,&rc)" ( identifier , (cast_expression "(MemPage *)&pNew->aDataEnd" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pNew->aDataEnd" & (field_expression "pNew->aDataEnd" identifier -> field_identifier))) , identifier , (pointer_expression "&rc" & identifier) ))) ;) (expression_statement "in_stack_ffffff4c = pPVar13;" (assignment_expression "in_stack_ffffff4c = pPVar13" identifier = identifier) ;) })) })) (expression_statement "pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage);" (assignment_expression "pbVar16 = pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage)" identifier = (binary_expression "pFrom->aData +\n                    ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage)" (field_expression "pFrom->aData" identifier -> field_identifier) + (parenthesized_expression "((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage)" ( (binary_expression "(*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                    pFrom->maskPage" (parenthesized_expression "(*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8)" ( (binary_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                     *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8" (binary_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8" (pointer_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" * (cast_expression "(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2" (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2" (field_expression "pFrom->aCellIdx" identifier -> field_identifier) + (binary_expression "(uint)pFrom->nCell * 2" (cast_expression "(uint)pFrom->nCell" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nCell" identifier -> field_identifier)) * number_literal)) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8" (pointer_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" * (cast_expression "(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2" (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2" (field_expression "pFrom->aCellIdx" identifier -> field_identifier) + (binary_expression "(uint)pFrom->nCell * 2" (cast_expression "(uint)pFrom->nCell" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nCell" identifier -> field_identifier)) * number_literal)) + number_literal) )))) >> number_literal)) )) & (field_expression "pFrom->maskPage" identifier -> field_identifier)) )))) ;) (do_statement "do {\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          } while ((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0);" do (compound_statement "{\n            pbVar19 = pbVar16;\n            pbVar16 = pbVar19 + 1;\n          }" { (expression_statement "pbVar19 = pbVar16;" (assignment_expression "pbVar19 = pbVar16" identifier = identifier) ;) (expression_statement "pbVar16 = pbVar19 + 1;" (assignment_expression "pbVar16 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0)" ( (binary_expression "(*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9) != 0" (parenthesized_expression "(*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9)" ( (binary_expression "*pbVar19 >> 7 &\n                   pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9" (binary_expression "*pbVar19 >> 7" (pointer_expression "*pbVar19" * identifier) >> number_literal) & (binary_expression "pbVar19 + 1 <\n                   pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9" (binary_expression "pbVar19 + 1" identifier + number_literal) < (binary_expression "pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage) + 9" (binary_expression "pFrom->aData +\n                   ((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage)" (field_expression "pFrom->aData" identifier -> field_identifier) + (parenthesized_expression "((*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage)" ( (binary_expression "(*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8) &\n                   pFrom->maskPage" (parenthesized_expression "(*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8)" ( (binary_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8 |\n                    *(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8" (binary_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) << 8" (pointer_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" * (cast_expression "(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2" (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2" (field_expression "pFrom->aCellIdx" identifier -> field_identifier) + (binary_expression "(uint)pFrom->nCell * 2" (cast_expression "(uint)pFrom->nCell" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nCell" identifier -> field_identifier)) * number_literal)) + number_literal) )))) << number_literal) | (binary_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2) >> 8" (pointer_expression "*(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" * (cast_expression "(ushort *)(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2)" ( (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2 + -2" (binary_expression "pFrom->aCellIdx + (uint)pFrom->nCell * 2" (field_expression "pFrom->aCellIdx" identifier -> field_identifier) + (binary_expression "(uint)pFrom->nCell * 2" (cast_expression "(uint)pFrom->nCell" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nCell" identifier -> field_identifier)) * number_literal)) + number_literal) )))) >> number_literal)) )) & (field_expression "pFrom->maskPage" identifier -> field_identifier)) ))) + number_literal))) )) != number_literal) )) ;) (expression_statement "pbVar16 = aBalanceQuickSpace + 4;" (assignment_expression "pbVar16 = aBalanceQuickSpace + 4" identifier = (binary_expression "aBalanceQuickSpace + 4" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar19 + 2;" (assignment_expression "pbVar7 = pbVar19 + 2" identifier = (binary_expression "pbVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          } while ((char)bVar2 < '\0');" do (compound_statement "{\n            pCell = pbVar7;\n            pbVar17 = pbVar16 + 1;\n            bVar2 = pCell[-1];\n            *pbVar16 = bVar2;\n            if (pbVar19 + 10 <= pCell) break;\n            pbVar16 = pbVar17;\n            pbVar7 = pCell + 1;\n          }" { (expression_statement "pCell = pbVar7;" (assignment_expression "pCell = pbVar7" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar16 + 1;" (assignment_expression "pbVar17 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = pCell[-1];" (assignment_expression "bVar2 = pCell[-1]" identifier = (subscript_expression "pCell[-1]" identifier [ number_literal ])) ;) (expression_statement "*pbVar16 = bVar2;" (assignment_expression "*pbVar16 = bVar2" (pointer_expression "*pbVar16" * identifier) = identifier) ;) (if_statement "if (pbVar19 + 10 <= pCell) break;" if (parenthesized_expression "(pbVar19 + 10 <= pCell)" ( (binary_expression "pbVar19 + 10 <= pCell" (binary_expression "pbVar19 + 10" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar16 = pbVar17;" (assignment_expression "pbVar16 = pbVar17" identifier = identifier) ;) (expression_statement "pbVar7 = pCell + 1;" (assignment_expression "pbVar7 = pCell + 1" identifier = (binary_expression "pCell + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (rc == 0) {\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n            in_stack_ffffff4c = (Pgno *)pFrom->pgno;\n            insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;\n          }" { (expression_statement "in_stack_ffffff4c = (Pgno *)pFrom->pgno;" (assignment_expression "in_stack_ffffff4c = (Pgno *)pFrom->pgno" identifier = (cast_expression "(Pgno *)pFrom->pgno" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFrom->pgno" identifier -> field_identifier))) ;) (expression_statement "insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)\n            ;" (call_expression "insertCell(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)" identifier (argument_list "(pMVar12,(uint)pMVar12->nCell,aBalanceQuickSpace,\n                       (int)pbVar17 - (int)aBalanceQuickSpace,(u8 *)0x0,(Pgno)in_stack_ffffff4c,&rc)" ( identifier , (cast_expression "(uint)pMVar12->nCell" ( (type_descriptor "uint" type_identifier) ) (field_expression "pMVar12->nCell" identifier -> field_identifier)) , identifier , (binary_expression "(int)pbVar17 - (int)aBalanceQuickSpace" (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)aBalanceQuickSpace" ( (type_descriptor "int" primitive_type) ) identifier)) , (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Pgno)in_stack_ffffff4c" ( (type_descriptor "Pgno" type_identifier) ) identifier) , (pointer_expression "&rc" & identifier) ))) ;) })) (expression_statement "*(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18;" (assignment_expression "*(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8) =\n               pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18" (pointer_expression "*(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8)" * (cast_expression "(Pgno *)(pMVar12->aData + pMVar12->hdrOffset + 8)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pMVar12->aData + pMVar12->hdrOffset + 8)" ( (binary_expression "pMVar12->aData + pMVar12->hdrOffset + 8" (binary_expression "pMVar12->aData + pMVar12->hdrOffset" (field_expression "pMVar12->aData" identifier -> field_identifier) + (field_expression "pMVar12->hdrOffset" identifier -> field_identifier)) + number_literal) )))) = (binary_expression "pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8 |\n               pgnoNew << 0x18" (binary_expression "pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8 | (pgnoNew & 0xff00) << 8" (binary_expression "pgnoNew >> 0x18 | (pgnoNew & 0xff0000) >> 8" (binary_expression "pgnoNew >> 0x18" identifier >> number_literal) | (binary_expression "(pgnoNew & 0xff0000) >> 8" (parenthesized_expression "(pgnoNew & 0xff0000)" ( (binary_expression "pgnoNew & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(pgnoNew & 0xff00) << 8" (parenthesized_expression "(pgnoNew & 0xff00)" ( (binary_expression "pgnoNew & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "pgnoNew << 0x18" identifier << number_literal))) ;) })) (expression_statement "iVar9 = rc;" (assignment_expression "iVar9 = rc" identifier = identifier) ;) (if_statement "if (pNew != (MemPage *)0x0) {\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }" if (parenthesized_expression "(pNew != (MemPage *)0x0)" ( (binary_expression "pNew != (MemPage *)0x0" identifier != (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          sqlite3PagerUnrefNotNull(pNew->pDbPage);\n          iVar9 = rc;\n        }" { (expression_statement "sqlite3PagerUnrefNotNull(pNew->pDbPage);" (call_expression "sqlite3PagerUnrefNotNull(pNew->pDbPage)" identifier (argument_list "(pNew->pDbPage)" ( (field_expression "pNew->pDbPage" identifier -> field_identifier) ))) ;) (expression_statement "iVar9 = rc;" (assignment_expression "iVar9 = rc" identifier = identifier) ;) })) })) }))))) (expression_statement "pFrom->nOverflow = '\0';" (assignment_expression "pFrom->nOverflow = '\0'" (field_expression "pFrom->nOverflow" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "sqlite3PagerUnrefNotNull(pFrom->pDbPage);" (call_expression "sqlite3PagerUnrefNotNull(pFrom->pDbPage)" identifier (argument_list "(pFrom->pDbPage)" ( (field_expression "pFrom->pDbPage" identifier -> field_identifier) ))) ;) (expression_statement "cVar8 = pCur->iPage + -1;" (assignment_expression "cVar8 = pCur->iPage + -1" identifier = (binary_expression "pCur->iPage + -1" (field_expression "pCur->iPage" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pCur->iPage = cVar8;" (assignment_expression "pCur->iPage = cVar8" (field_expression "pCur->iPage" identifier -> field_identifier) = identifier) ;) (expression_statement "pFrom = pCur->apPage[cVar8];" (assignment_expression "pFrom = pCur->apPage[cVar8]" identifier = (subscript_expression "pCur->apPage[cVar8]" (field_expression "pCur->apPage" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "pCur->pPage = pFrom;" (assignment_expression "pCur->pPage = pFrom" (field_expression "pCur->pPage" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar9 != 0) goto LAB_00066ea6;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;)) (expression_statement "iVar14 = pFrom->nFree;" (assignment_expression "iVar14 = pFrom->nFree" identifier = (field_expression "pFrom->nFree" identifier -> field_identifier)) ;) (expression_statement "p = local_9c;" (assignment_expression "p = local_9c" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (for_statement "for (pBVar5 = pCur->pBt->pCursor; pBVar5 != (BtCursor *)0x0; pBVar5 = pBVar5->pNext) {\n    if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" for ( (assignment_expression "pBVar5 = pCur->pBt->pCursor" identifier = (field_expression "pCur->pBt->pCursor" (field_expression "pCur->pBt" identifier -> field_identifier) -> field_identifier)) ; (binary_expression "pBVar5 != (BtCursor *)0x0" identifier != (cast_expression "(BtCursor *)0x0" ( (type_descriptor "BtCursor *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pBVar5 = pBVar5->pNext" identifier = (field_expression "pBVar5->pNext" identifier -> field_identifier)) ) (compound_statement "{\n    if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" { (if_statement "if (((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)) {\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }" if (parenthesized_expression "(((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage))" ( (binary_expression "((pBVar5 != pCur) && (pBVar5->eState == '\0')) && (pBVar5->pPage == pCur->pPage)" (parenthesized_expression "((pBVar5 != pCur) && (pBVar5->eState == '\0'))" ( (binary_expression "(pBVar5 != pCur) && (pBVar5->eState == '\0')" (parenthesized_expression "(pBVar5 != pCur)" ( (binary_expression "pBVar5 != pCur" identifier != identifier) )) && (parenthesized_expression "(pBVar5->eState == '\0')" ( (binary_expression "pBVar5->eState == '\0'" (field_expression "pBVar5->eState" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(pBVar5->pPage == pCur->pPage)" ( (binary_expression "pBVar5->pPage == pCur->pPage" (field_expression "pBVar5->pPage" identifier -> field_identifier) == (field_expression "pCur->pPage" identifier -> field_identifier)) ))) )) (compound_statement "{\n      iVar9 = sqlite3CorruptError(0x11c93);\n      if (iVar9 != 0) goto LAB_00066ea6;\n      break;\n    }" { (expression_statement "iVar9 = sqlite3CorruptError(0x11c93);" (assignment_expression "iVar9 = sqlite3CorruptError(0x11c93)" identifier = (call_expression "sqlite3CorruptError(0x11c93)" identifier (argument_list "(0x11c93)" ( number_literal )))) ;) (if_statement "if (iVar9 != 0) goto LAB_00066ea6;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;)) (break_statement "break;" break ;) })) })) (expression_statement "pgnoNew = 0;" (assignment_expression "pgnoNew = 0" identifier = number_literal) ;) (expression_statement "pCell = (u8 *)0x0;" (assignment_expression "pCell = (u8 *)0x0" identifier = (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pBVar6 = pFrom->pBt;" (assignment_expression "pBVar6 = pFrom->pBt" identifier = (field_expression "pFrom->pBt" identifier -> field_identifier)) ;) (expression_statement "PVar21 = 0x66e77;" (assignment_expression "PVar21 = 0x66e77" identifier = number_literal) ;) (expression_statement "rc = sqlite3PagerWrite(pFrom->pDbPage);" (assignment_expression "rc = sqlite3PagerWrite(pFrom->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pFrom->pDbPage)" identifier (argument_list "(pFrom->pDbPage)" ( (field_expression "pFrom->pDbPage" identifier -> field_identifier) )))) ;) (if_statement "if (rc != 0) goto LAB_00066e83;" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066e83;" goto statement_identifier ;)) (expression_statement "rc = allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54);" (assignment_expression "rc = allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54)" identifier = (call_expression "allocateBtreePage((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54)" identifier (argument_list "((BtShared *)pFrom->pgno,(MemPage **)0x0,in_stack_ffffff4c,PVar21,\n                         (u8)in_stack_ffffff54)" ( (cast_expression "(BtShared *)pFrom->pgno" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFrom->pgno" identifier -> field_identifier)) , (cast_expression "(MemPage **)0x0" ( (type_descriptor "MemPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , identifier , identifier , (cast_expression "(u8)in_stack_ffffff54" ( (type_descriptor "u8" type_identifier) ) identifier) )))) ;) (if_statement "if (rc == 0) {\n    copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);\n    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (pBVar6->autoVacuum != '\0') {\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n    copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);\n    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }\n  }" { (expression_statement "copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc);" (call_expression "copyNodeContent(pFrom,(MemPage *)pgnoNew,&rc)" identifier (argument_list "(pFrom,(MemPage *)pgnoNew,&rc)" ( identifier , (cast_expression "(MemPage *)pgnoNew" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&rc" & identifier) ))) ;) (if_statement "if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;" if (parenthesized_expression "(pBVar6->autoVacuum != '\0')" ( (binary_expression "pBVar6->autoVacuum != '\0'" (field_expression "pBVar6->autoVacuum" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00066f10;" goto statement_identifier ;)) (labeled_statement "LAB_00066f2a:\n    if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }" statement_identifier : (if_statement "if (rc == 0) {\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n      uVar10 = (uint)pFrom->nOverflow;\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;\n      zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);\n      *(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;\n      pCur->apPage[1] = (MemPage *)pgnoNew;\n      pMVar12 = (MemPage *)pgnoNew;\n      goto LAB_00066fb5;\n    }" { (expression_statement "uVar10 = (uint)pFrom->nOverflow;" (assignment_expression "uVar10 = (uint)pFrom->nOverflow" identifier = (cast_expression "(uint)pFrom->nOverflow" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nOverflow" identifier -> field_identifier))) ;) (expression_statement "uVar11 = uVar10 * 2;" (assignment_expression "uVar11 = uVar10 * 2" identifier = (binary_expression "uVar10 * 2" identifier * number_literal)) ;) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }\n      else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }" if (parenthesized_expression "(uVar11 < 4)" ( (binary_expression "uVar11 < 4" identifier < number_literal) )) (compound_statement "{\n        if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }\n      }" { (if_statement "if (uVar10 != 0) {\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];\n          uVar10 = (uint)pFrom->nOverflow;\n        }" { (expression_statement "*(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0];" (assignment_expression "*(char *)(pgnoNew + 0x1c) = (char)pFrom->aiOvfl[0]" (pointer_expression "*(char *)(pgnoNew + 0x1c)" * (cast_expression "(char *)(pgnoNew + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x1c)" ( (binary_expression "pgnoNew + 0x1c" identifier + number_literal) )))) = (cast_expression "(char)pFrom->aiOvfl[0]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pFrom->aiOvfl[0]" (field_expression "pFrom->aiOvfl" identifier -> field_identifier) [ number_literal ]))) ;) (if_statement "if ((uVar11 & 2) == 0) goto LAB_00066f67;" if (parenthesized_expression "((uVar11 & 2) == 0)" ( (binary_expression "(uVar11 & 2) == 0" (parenthesized_expression "(uVar11 & 2)" ( (binary_expression "uVar11 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00066f67;" goto statement_identifier ;)) (expression_statement "*(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1];" (assignment_expression "*(u16 *)(pgnoNew + 0x1a + uVar11) = pFrom->aiOvfl[uVar10 - 1]" (pointer_expression "*(u16 *)(pgnoNew + 0x1a + uVar11)" * (cast_expression "(u16 *)(pgnoNew + 0x1a + uVar11)" ( (type_descriptor "u16 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x1a + uVar11)" ( (binary_expression "pgnoNew + 0x1a + uVar11" (binary_expression "pgnoNew + 0x1a" identifier + number_literal) + identifier) )))) = (subscript_expression "pFrom->aiOvfl[uVar10 - 1]" (field_expression "pFrom->aiOvfl" identifier -> field_identifier) [ (binary_expression "uVar10 - 1" identifier - number_literal) ])) ;) (expression_statement "uVar10 = (uint)pFrom->nOverflow;" (assignment_expression "uVar10 = (uint)pFrom->nOverflow" identifier = (cast_expression "(uint)pFrom->nOverflow" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nOverflow" identifier -> field_identifier))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }" else (compound_statement "{\n        *(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;\n        *(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));\n        puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);\n        iVar14 = (pgnoNew + 0x1c) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);\n        for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;\n      }" { (expression_statement "*(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl;" (assignment_expression "*(undefined4 *)(pgnoNew + 0x1c) = *(undefined4 *)pFrom->aiOvfl" (pointer_expression "*(undefined4 *)(pgnoNew + 0x1c)" * (cast_expression "(undefined4 *)(pgnoNew + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x1c)" ( (binary_expression "pgnoNew + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)pFrom->aiOvfl" * (cast_expression "(undefined4 *)pFrom->aiOvfl" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFrom->aiOvfl" identifier -> field_identifier)))) ;) (expression_statement "*(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2));" (assignment_expression "*(undefined4 *)(pgnoNew + 0x18 + uVar11) = *(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2))" (pointer_expression "*(undefined4 *)(pgnoNew + 0x18 + uVar11)" * (cast_expression "(undefined4 *)(pgnoNew + 0x18 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x18 + uVar11)" ( (binary_expression "pgnoNew + 0x18 + uVar11" (binary_expression "pgnoNew + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2))" * (cast_expression "(undefined4 *)(pFrom->aiOvfl + (uVar10 - 2))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFrom->aiOvfl + (uVar10 - 2))" ( (binary_expression "pFrom->aiOvfl + (uVar10 - 2)" (field_expression "pFrom->aiOvfl" identifier -> field_identifier) + (parenthesized_expression "(uVar10 - 2)" ( (binary_expression "uVar10 - 2" identifier - number_literal) ))) ))))) ;) (expression_statement "puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc);" (assignment_expression "puVar18 = (undefined4 *)(pgnoNew + 0x20 & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(pgnoNew + 0x20 & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x20 & 0xfffffffc)" ( (binary_expression "pgnoNew + 0x20 & 0xfffffffc" (binary_expression "pgnoNew + 0x20" identifier + number_literal) & number_literal) )))) ;) (expression_statement "iVar14 = (pgnoNew + 0x1c) - (int)puVar18;" (assignment_expression "iVar14 = (pgnoNew + 0x1c) - (int)puVar18" identifier = (binary_expression "(pgnoNew + 0x1c) - (int)puVar18" (parenthesized_expression "(pgnoNew + 0x1c)" ( (binary_expression "pgnoNew + 0x1c" identifier + number_literal) )) - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14);" (assignment_expression "puVar15 = (undefined4 *)((int)pFrom->aiOvfl - iVar14)" identifier = (cast_expression "(undefined4 *)((int)pFrom->aiOvfl - iVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pFrom->aiOvfl - iVar14)" ( (binary_expression "(int)pFrom->aiOvfl - iVar14" (cast_expression "(int)pFrom->aiOvfl" ( (type_descriptor "int" primitive_type) ) (field_expression "pFrom->aiOvfl" identifier -> field_identifier)) - identifier) )))) ;) (for_statement "for (uVar11 = uVar11 + iVar14 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }" for ( (assignment_expression "uVar11 = uVar11 + iVar14 >> 2" identifier = (binary_expression "uVar11 + iVar14 >> 2" (binary_expression "uVar11 + iVar14" identifier + identifier) >> number_literal)) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }" { (expression_statement "*puVar18 = *puVar15;" (assignment_expression "*puVar18 = *puVar15" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "puVar15 = puVar15 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar15 = puVar15 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar15 + (uint)bVar20 * -2 + 1" (binary_expression "puVar15 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar18 = puVar18 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar18 + (uint)bVar20 * -2 + 1" (binary_expression "puVar18 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00066f67:\n        uVar10 = (uint)pFrom->nOverflow;" statement_identifier : (expression_statement "uVar10 = (uint)pFrom->nOverflow;" (assignment_expression "uVar10 = (uint)pFrom->nOverflow" identifier = (cast_expression "(uint)pFrom->nOverflow" ( (type_descriptor "uint" type_identifier) ) (field_expression "pFrom->nOverflow" identifier -> field_identifier))) ;)) }))) (expression_statement "uVar11 = uVar10 * 4;" (assignment_expression "uVar11 = uVar10 * 4" identifier = (binary_expression "uVar10 * 4" identifier * number_literal)) ;) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }\n      else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }" if (parenthesized_expression "(uVar11 < 4)" ( (binary_expression "uVar11 < 4" identifier < number_literal) )) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }\n      }" { (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;\n        }" { (expression_statement "*(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl;" (assignment_expression "*(undefined1 *)(pgnoNew + 0x24) = *(undefined1 *)pFrom->apOvfl" (pointer_expression "*(undefined1 *)(pgnoNew + 0x24)" * (cast_expression "(undefined1 *)(pgnoNew + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x24)" ( (binary_expression "pgnoNew + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)pFrom->apOvfl" * (cast_expression "(undefined1 *)pFrom->apOvfl" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFrom->apOvfl" identifier -> field_identifier)))) ;) })) }) (else_clause "else {\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }" else (compound_statement "{\n        *(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];\n        *(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];\n        puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);\n        iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;\n        puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);\n        for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }\n      }" { (expression_statement "*(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0];" (assignment_expression "*(u8 **)(pgnoNew + 0x24) = pFrom->apOvfl[0]" (pointer_expression "*(u8 **)(pgnoNew + 0x24)" * (cast_expression "(u8 **)(pgnoNew + 0x24)" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pgnoNew + 0x24)" ( (binary_expression "pgnoNew + 0x24" identifier + number_literal) )))) = (subscript_expression "pFrom->apOvfl[0]" (field_expression "pFrom->apOvfl" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "*(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1];" (assignment_expression "*(u8 **)(pgnoNew + 0x20 + uVar11) = pFrom->apOvfl[uVar10 - 1]" (pointer_expression "*(u8 **)(pgnoNew + 0x20 + uVar11)" * (cast_expression "(u8 **)(pgnoNew + 0x20 + uVar11)" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pgnoNew + 0x20 + uVar11)" ( (binary_expression "pgnoNew + 0x20 + uVar11" (binary_expression "pgnoNew + 0x20" identifier + number_literal) + identifier) )))) = (subscript_expression "pFrom->apOvfl[uVar10 - 1]" (field_expression "pFrom->apOvfl" identifier -> field_identifier) [ (binary_expression "uVar10 - 1" identifier - number_literal) ])) ;) (expression_statement "puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc);" (assignment_expression "puVar18 = (undefined4 *)(pgnoNew + 0x28 & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(pgnoNew + 0x28 & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0x28 & 0xfffffffc)" ( (binary_expression "pgnoNew + 0x28 & 0xfffffffc" (binary_expression "pgnoNew + 0x28" identifier + number_literal) & number_literal) )))) ;) (expression_statement "iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18;" (assignment_expression "iVar14 = (int)(pgnoNew + 0x24) - (int)puVar18" identifier = (binary_expression "(int)(pgnoNew + 0x24) - (int)puVar18" (cast_expression "(int)(pgnoNew + 0x24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pgnoNew + 0x24)" ( (binary_expression "pgnoNew + 0x24" identifier + number_literal) ))) - (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14);" (assignment_expression "puVar15 = (undefined4 *)((int)pFrom->apOvfl - iVar14)" identifier = (cast_expression "(undefined4 *)((int)pFrom->apOvfl - iVar14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pFrom->apOvfl - iVar14)" ( (binary_expression "(int)pFrom->apOvfl - iVar14" (cast_expression "(int)pFrom->apOvfl" ( (type_descriptor "int" primitive_type) ) (field_expression "pFrom->apOvfl" identifier -> field_identifier)) - identifier) )))) ;) (for_statement "for (uVar11 = iVar14 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }" for ( (assignment_expression "uVar11 = iVar14 + uVar11 >> 2" identifier = (binary_expression "iVar14 + uVar11 >> 2" (binary_expression "iVar14 + uVar11" identifier + identifier) >> number_literal)) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar18 = *puVar15;\n          puVar15 = puVar15 + (uint)bVar20 * -2 + 1;\n          puVar18 = puVar18 + (uint)bVar20 * -2 + 1;\n        }" { (expression_statement "*puVar18 = *puVar15;" (assignment_expression "*puVar18 = *puVar15" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar15" * identifier)) ;) (expression_statement "puVar15 = puVar15 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar15 = puVar15 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar15 + (uint)bVar20 * -2 + 1" (binary_expression "puVar15 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar18 = puVar18 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar18 + (uint)bVar20 * -2 + 1" (binary_expression "puVar18 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }))) (expression_statement "*(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow;" (assignment_expression "*(u8 *)(pgnoNew + 0xc) = pFrom->nOverflow" (pointer_expression "*(u8 *)(pgnoNew + 0xc)" * (cast_expression "(u8 *)(pgnoNew + 0xc)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pgnoNew + 0xc)" ( (binary_expression "pgnoNew + 0xc" identifier + number_literal) )))) = (field_expression "pFrom->nOverflow" identifier -> field_identifier)) ;) (expression_statement "zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7);" (call_expression "zeroPage(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7)" identifier (argument_list "(pFrom,**(byte **)(pgnoNew + 0x38) & 0xfffffff7)" ( identifier , (binary_expression "**(byte **)(pgnoNew + 0x38) & 0xfffffff7" (pointer_expression "**(byte **)(pgnoNew + 0x38)" * (pointer_expression "*(byte **)(pgnoNew + 0x38)" * (cast_expression "(byte **)(pgnoNew + 0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pgnoNew + 0x38)" ( (binary_expression "pgnoNew + 0x38" identifier + number_literal) ))))) & number_literal) ))) ;) (expression_statement "*(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18;" (assignment_expression "*(uint *)(pFrom->aData + pFrom->hdrOffset + 8) =\n           (uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18" (pointer_expression "*(uint *)(pFrom->aData + pFrom->hdrOffset + 8)" * (cast_expression "(uint *)(pFrom->aData + pFrom->hdrOffset + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pFrom->aData + pFrom->hdrOffset + 8)" ( (binary_expression "pFrom->aData + pFrom->hdrOffset + 8" (binary_expression "pFrom->aData + pFrom->hdrOffset" (field_expression "pFrom->aData" identifier -> field_identifier) + (field_expression "pFrom->hdrOffset" identifier -> field_identifier)) + number_literal) )))) = (binary_expression "(uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8 |\n           (int)pCell << 0x18" (binary_expression "(uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8 | ((uint)pCell & 0xff00) << 8" (binary_expression "(uint)pCell >> 0x18 | ((uint)pCell & 0xff0000) >> 8" (binary_expression "(uint)pCell >> 0x18" (cast_expression "(uint)pCell" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)pCell & 0xff0000) >> 8" (parenthesized_expression "((uint)pCell & 0xff0000)" ( (binary_expression "(uint)pCell & 0xff0000" (cast_expression "(uint)pCell" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)pCell & 0xff00) << 8" (parenthesized_expression "((uint)pCell & 0xff00)" ( (binary_expression "(uint)pCell & 0xff00" (cast_expression "(uint)pCell" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)pCell << 0x18" (cast_expression "(int)pCell" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal))) ;) (expression_statement "pCur->apPage[1] = (MemPage *)pgnoNew;" (assignment_expression "pCur->apPage[1] = (MemPage *)pgnoNew" (subscript_expression "pCur->apPage[1]" (field_expression "pCur->apPage" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(MemPage *)pgnoNew" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pMVar12 = (MemPage *)pgnoNew;" (assignment_expression "pMVar12 = (MemPage *)pgnoNew" identifier = (cast_expression "(MemPage *)pgnoNew" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00066fb5;" goto statement_identifier ;) }))) }) (else_clause "else if (pBVar6->autoVacuum != '\0') {\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }" else (if_statement "if (pBVar6->autoVacuum != '\0') {\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }" if (parenthesized_expression "(pBVar6->autoVacuum != '\0')" ( (binary_expression "pBVar6->autoVacuum != '\0'" (field_expression "pBVar6->autoVacuum" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);\n    goto LAB_00066f2a;\n  }" { (labeled_statement "LAB_00066f10:\n    ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);" statement_identifier : (expression_statement "ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc);" (call_expression "ptrmapPut(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc)" identifier (argument_list "(pBVar6,(Pgno)pCell,'\x05',pFrom->pgno,&rc)" ( identifier , (cast_expression "(Pgno)pCell" ( (type_descriptor "Pgno" type_identifier) ) identifier) , (char_literal "'\x05'" ' escape_sequence ') , (field_expression "pFrom->pgno" identifier -> field_identifier) , (pointer_expression "&rc" & identifier) ))) ;)) (goto_statement "goto LAB_00066f2a;" goto statement_identifier ;) })))) (labeled_statement "LAB_00066e83:\n  pCur->apPage[1] = (MemPage *)0x0;" statement_identifier : (expression_statement "pCur->apPage[1] = (MemPage *)0x0;" (assignment_expression "pCur->apPage[1] = (MemPage *)0x0" (subscript_expression "pCur->apPage[1]" (field_expression "pCur->apPage" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar9 = rc;" (assignment_expression "iVar9 = rc" identifier = identifier) ;) (if_statement "if ((pgnoNew == 0) ||\n     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)) {\nLAB_00066ea6:\n    if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar9;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "((pgnoNew == 0) ||\n     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0))" ( (binary_expression "(pgnoNew == 0) ||\n     (sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)" (parenthesized_expression "(pgnoNew == 0)" ( (binary_expression "pgnoNew == 0" identifier == number_literal) )) || (parenthesized_expression "(sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0)" ( (comma_expression "sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48)), iVar9 = rc, rc != 0" (call_expression "sqlite3PagerUnrefNotNull(*(DbPage **)(pgnoNew + 0x48))" identifier (argument_list "(*(DbPage **)(pgnoNew + 0x48))" ( (pointer_expression "*(DbPage **)(pgnoNew + 0x48)" * (cast_expression "(DbPage **)(pgnoNew + 0x48)" ( (type_descriptor "DbPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pgnoNew + 0x48)" ( (binary_expression "pgnoNew + 0x48" identifier + number_literal) )))) ))) , (comma_expression "iVar9 = rc, rc != 0" (assignment_expression "iVar9 = rc" identifier = identifier) , (binary_expression "rc != 0" identifier != number_literal))) ))) )) (compound_statement "{\nLAB_00066ea6:\n    if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }\n    if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar9;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { (labeled_statement "LAB_00066ea6:\n    if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }" statement_identifier : (if_statement "if (local_9c != (void *)0x0) {\n      pcache1Free(local_9c);\n    }" if (parenthesized_expression "(local_9c != (void *)0x0)" ( (binary_expression "local_9c != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcache1Free(local_9c);\n    }" { (expression_statement "pcache1Free(local_9c);" (call_expression "pcache1Free(local_9c)" identifier (argument_list "(local_9c)" ( identifier ))) ;) }))) (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar9;\n    }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n      return iVar9;\n    }" { (return_statement "return iVar9;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pMVar12 = pCur->apPage[1];" (assignment_expression "pMVar12 = pCur->apPage[1]" identifier = (subscript_expression "pCur->apPage[1]" (field_expression "pCur->apPage" identifier -> field_identifier) [ number_literal ])) ;) (labeled_statement "LAB_00066fb5:\n  pCur->apPage[0] = pFrom;" statement_identifier : (expression_statement "pCur->apPage[0] = pFrom;" (assignment_expression "pCur->apPage[0] = pFrom" (subscript_expression "pCur->apPage[0]" (field_expression "pCur->apPage" identifier -> field_identifier) [ number_literal ]) = identifier) ;)) (expression_statement "pCur->iPage = '\x01';" (assignment_expression "pCur->iPage = '\x01'" (field_expression "pCur->iPage" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pCur->ix = 0;" (assignment_expression "pCur->ix = 0" (field_expression "pCur->ix" identifier -> field_identifier) = number_literal) ;) (expression_statement "pCur->aiIdx[0] = 0;" (assignment_expression "pCur->aiIdx[0] = 0" (subscript_expression "pCur->aiIdx[0]" (field_expression "pCur->aiIdx" identifier -> field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "pCur->pPage = pMVar12;" (assignment_expression "pCur->pPage = pMVar12" (field_expression "pCur->pPage" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_00066d0d;" goto statement_identifier ;) })))
(translation_unit "int __regparm3 FUN_00066cc0(char *param_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}\n\n" (function_definition "int __regparm3 FUN_00066cc0(char *param_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00066cc0(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "int local_9c;" primitive_type identifier ;) (declaration "ushort local_82;" type_identifier identifier ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "int local_7c;" primitive_type identifier ;) (declaration "uint local_78;" type_identifier identifier ;) (declaration "byte *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "byte **local_68;" type_identifier (pointer_declarator "**local_68" * (pointer_declarator "*local_68" * identifier)) ;) (declaration "ushort *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined1 local_2d [4];" type_identifier (array_declarator "local_2d [4]" identifier [ number_literal ]) ;) (declaration "byte local_29 [9];" type_identifier (array_declarator "local_29 [9]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" identifier = number_literal) ;) (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x14) + 0x28)" * (cast_expression "(int *)(*(int *)(param_1 + 0x14) + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x14) + 0x28)" ( (binary_expression "*(int *)(param_1 + 0x14) + 0x28" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ;) (labeled_statement "LAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);" statement_identifier : (expression_statement "iVar12 = *(int *)(uVar11 + 0x14);" (assignment_expression "iVar12 = *(int *)(uVar11 + 0x14)" identifier = (pointer_expression "*(int *)(uVar11 + 0x14)" * (cast_expression "(int *)(uVar11 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar11 + 0x14)" ( (binary_expression "uVar11 + 0x14" identifier + number_literal) ))))) ;)) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" identifier = identifier) ;) (do_statement "do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );" do (compound_statement "{\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  }" { (if_statement "if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }" if (parenthesized_expression "((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0))" ( (binary_expression "(iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)" (parenthesized_expression "(iVar12 < 0)" ( (binary_expression "iVar12 < 0" identifier < number_literal) )) && (parenthesized_expression "(iVar12 = FUN_00038800(), iVar12 != 0)" ( (comma_expression "iVar12 = FUN_00038800(), iVar12 != 0" (assignment_expression "iVar12 = FUN_00038800()" identifier = (call_expression "FUN_00038800()" identifier (argument_list "()" ( )))) , (binary_expression "iVar12 != 0" identifier != number_literal)) ))) )) (compound_statement "{\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }" { (labeled_statement "LAB_00066e17:\n      iVar8 = 0;" statement_identifier : (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;) })) (if_statement "if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" if (parenthesized_expression "(*(char *)(uVar6 + 0xc) == '\0')" ( (binary_expression "*(char *)(uVar6 + 0xc) == '\0'" (pointer_expression "*(char *)(uVar6 + 0xc)" * (cast_expression "(char *)(uVar6 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }" { (if_statement "if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;" if (parenthesized_expression "((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0))" ( (binary_expression "(*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)" (parenthesized_expression "(*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3))" ( (binary_expression "*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)" (pointer_expression "*(int *)(uVar6 + 0x14)" * (cast_expression "(int *)(uVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x14)" ( (binary_expression "uVar6 + 0x14" identifier + number_literal) )))) <= (cast_expression "(int)((uint)(iVar5 * 2) / 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)(iVar5 * 2) / 3)" ( (binary_expression "(uint)(iVar5 * 2) / 3" (call_expression "(uint)(iVar5 * 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 * 2)" ( (binary_expression "iVar5 * 2" identifier * number_literal) ))) / number_literal) )))) )) || (parenthesized_expression "(iVar12 = (int)param_1[0x3c], iVar12 == 0)" ( (comma_expression "iVar12 = (int)param_1[0x3c], iVar12 == 0" (assignment_expression "iVar12 = (int)param_1[0x3c]" identifier = (cast_expression "(int)param_1[0x3c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x3c]" identifier [ number_literal ]))) , (binary_expression "iVar12 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00066e17;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" else (compound_statement "{\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" { (expression_statement "iVar12 = (int)param_1[0x3c];" (assignment_expression "iVar12 = (int)param_1[0x3c]" identifier = (cast_expression "(int)param_1[0x3c]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[0x3c]" identifier [ number_literal ]))) ;) (if_statement "if (iVar12 == 0) break;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }))) (expression_statement "iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);" (assignment_expression "iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c)" identifier = (pointer_expression "*(int *)(param_1 + iVar12 * 4 + 0x6c)" * (cast_expression "(int *)(param_1 + iVar12 * 4 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar12 * 4 + 0x6c)" ( (binary_expression "param_1 + iVar12 * 4 + 0x6c" (binary_expression "param_1 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);" (assignment_expression "sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e)" identifier = (pointer_expression "*(short *)(param_1 + iVar12 * 2 + 0x3e)" * (cast_expression "(short *)(param_1 + iVar12 * 2 + 0x3e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar12 * 2 + 0x3e)" ( (binary_expression "param_1 + iVar12 * 2 + 0x3e" (binary_expression "param_1 + iVar12 * 2" identifier + (binary_expression "iVar12 * 2" identifier * number_literal)) + number_literal) ))))) ;) (expression_statement "iVar8 = FUN_0005f680();" (assignment_expression "iVar8 = FUN_0005f680()" identifier = (call_expression "FUN_0005f680()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }" if (parenthesized_expression "((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0))))" ( (binary_expression "(iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))" (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) || (parenthesized_expression "((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))" ( (parenthesized_expression "(*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0))" ( (binary_expression "*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)" (binary_expression "*(int *)(iVar9 + 0x14) < 0" (pointer_expression "*(int *)(iVar9 + 0x14)" * (cast_expression "(int *)(iVar9 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x14)" ( (binary_expression "iVar9 + 0x14" identifier + number_literal) )))) < number_literal) && (parenthesized_expression "(iVar8 = FUN_00038800(), iVar8 != 0)" ( (comma_expression "iVar8 = FUN_00038800(), iVar8 != 0" (assignment_expression "iVar8 = FUN_00038800()" identifier = (call_expression "FUN_00038800()" identifier (argument_list "()" ( )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }" { (expression_statement "*(undefined1 *)(uVar6 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(uVar6 + 0xc) = 0" (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" * (cast_expression "(undefined1 *)(uVar6 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = param_1[0x3c];" (assignment_expression "cVar1 = param_1[0x3c]" identifier = (subscript_expression "param_1[0x3c]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x3c] = cVar1 + -1;" (assignment_expression "param_1[0x3c] = cVar1 + -1" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = (binary_expression "cVar1 + -1" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" * (cast_expression "(undefined4 *)(param_1 + 0x6c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" * (cast_expression "(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (binary_expression "param_1 + (char)(cVar1 + -1) * 4 + 0x70" (binary_expression "param_1 + (char)(cVar1 + -1) * 4" identifier + (binary_expression "(char)(cVar1 + -1) * 4" (cast_expression "(char)(cVar1 + -1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(cVar1 + -1)" ( (binary_expression "cVar1 + -1" identifier + number_literal) ))) * number_literal)) + number_literal) ))))) ;) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;) })) (if_statement "if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" if (parenthesized_expression "((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18)))))" ( (binary_expression "(((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))" (parenthesized_expression "(((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18)))" ( (binary_expression "((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))" (parenthesized_expression "((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01'))" ( (binary_expression "(*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')" (parenthesized_expression "(*(char *)(uVar6 + 3) == '\0')" ( (binary_expression "*(char *)(uVar6 + 3) == '\0'" (pointer_expression "*(char *)(uVar6 + 3)" * (cast_expression "(char *)(uVar6 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 3)" ( (binary_expression "uVar6 + 3" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(uVar6 + 0xc) != '\x01')" ( (binary_expression "*(char *)(uVar6 + 0xc) != '\x01'" (pointer_expression "*(char *)(uVar6 + 0xc)" * (cast_expression "(char *)(uVar6 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))" ( (binary_expression "*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18)" (pointer_expression "*(short *)(uVar6 + 0x1c)" * (cast_expression "(short *)(uVar6 + 0x1c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))) != (pointer_expression "*(short *)(uVar6 + 0x18)" * (cast_expression "(short *)(uVar6 + 0x18)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x18)" ( (binary_expression "uVar6 + 0x18" identifier + number_literal) ))))) ))) )) || (parenthesized_expression "((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))" ( (parenthesized_expression "(*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18)))" ( (binary_expression "*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))" (binary_expression "*(int *)(iVar9 + 4) == 1" (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) || (parenthesized_expression "(sVar3 != *(short *)(iVar9 + 0x18))" ( (binary_expression "sVar3 != *(short *)(iVar9 + 0x18)" identifier != (pointer_expression "*(short *)(iVar9 + 0x18)" * (cast_expression "(short *)(iVar9 + 0x18)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x18)" ( (binary_expression "iVar9 + 0x18" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }" { (expression_statement "iVar9 = FUN_0002df20();" (assignment_expression "iVar9 = FUN_0002df20()" identifier = (call_expression "FUN_0002df20()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);" (assignment_expression "iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1)" identifier = (call_expression "FUN_000653e0(iVar12 == 1,param_1[3] & 1)" identifier (argument_list "(iVar12 == 1,param_1[3] & 1)" ( (binary_expression "iVar12 == 1" identifier == number_literal) , (binary_expression "param_1[3] & 1" (subscript_expression "param_1[3]" identifier [ number_literal ]) & number_literal) )))) ;) (expression_statement "bVar19 = local_9c != 0;" (assignment_expression "bVar19 = local_9c != 0" identifier = (binary_expression "local_9c != 0" identifier != number_literal)) ;) (expression_statement "local_9c = iVar9;" (assignment_expression "local_9c = iVar9" identifier = identifier) ;) (if_statement "if (bVar19) {\n        FUN_00026f80();\n      }" if (parenthesized_expression "(bVar19)" ( identifier )) (compound_statement "{\n        FUN_00026f80();\n      }" { (expression_statement "FUN_00026f80();" (call_expression "FUN_00026f80()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" else (if_statement "if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" if (parenthesized_expression "(*(short *)(uVar6 + 0x1c) == 0)" ( (binary_expression "*(short *)(uVar6 + 0x1c) == 0" (pointer_expression "*(short *)(uVar6 + 0x1c)" * (cast_expression "(short *)(uVar6 + 0x1c)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      iVar8 = FUN_000383f0();\n    }" { (expression_statement "iVar8 = FUN_000383f0();" (assignment_expression "iVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" else (compound_statement "{\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" { (expression_statement "iVar12 = *(int *)(uVar6 + 0x34);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x34)" identifier = (pointer_expression "*(int *)(uVar6 + 0x34)" * (cast_expression "(int *)(uVar6 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x34)" ( (binary_expression "uVar6 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_7c = FUN_000634d0(0,0);" (assignment_expression "local_7c = FUN_000634d0(0,0)" identifier = (call_expression "FUN_000634d0(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) ;) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) (if_statement "if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }" { (expression_statement "local_74 = *(byte **)(uVar6 + 0x24);" (assignment_expression "local_74 = *(byte **)(uVar6 + 0x24)" identifier = (pointer_expression "*(byte **)(uVar6 + 0x24)" * (cast_expression "(byte **)(uVar6 + 0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);" (assignment_expression "local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74)" identifier = (call_expression "(**(code **)(uVar6 + 0x4c))(uVar6,local_74)" (parenthesized_expression "(**(code **)(uVar6 + 0x4c))" ( (pointer_expression "**(code **)(uVar6 + 0x4c)" * (pointer_expression "*(code **)(uVar6 + 0x4c)" * (cast_expression "(code **)(uVar6 + 0x4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(uVar6 + 0x4c)" ( (binary_expression "uVar6 + 0x4c" identifier + number_literal) ))))) )) (argument_list "(uVar6,local_74)" ( identifier , identifier )))) ;) (expression_statement "FUN_00038500();" (call_expression "FUN_00038500()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (expression_statement "local_64 = &local_82;" (assignment_expression "local_64 = &local_82" identifier = (pointer_expression "&local_82" & identifier)) ;) (expression_statement "local_60 = *(undefined4 *)(uVar6 + 0x3c);" (assignment_expression "local_60 = *(undefined4 *)(uVar6 + 0x3c)" identifier = (pointer_expression "*(undefined4 *)(uVar6 + 0x3c)" * (cast_expression "(undefined4 *)(uVar6 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x3c)" ( (binary_expression "uVar6 + 0x3c" identifier + number_literal) ))))) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (expression_statement "local_6c = uVar6;" (assignment_expression "local_6c = uVar6" identifier = identifier) ;) (expression_statement "local_68 = &local_74;" (assignment_expression "local_68 = &local_74" identifier = (pointer_expression "&local_74" & identifier)) ;) (expression_statement "local_7c = FUN_000393d0(local_80);" (assignment_expression "local_7c = FUN_000393d0(local_80)" identifier = (call_expression "FUN_000393d0(local_80)" identifier (argument_list "(local_80)" ( identifier )))) ;) (if_statement "if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }" { (expression_statement "*(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);" (assignment_expression "*(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28)" (pointer_expression "*(uint *)(local_80 + 0x14)" * (cast_expression "(uint *)(local_80 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 0x14)" ( (binary_expression "local_80 + 0x14" identifier + number_literal) )))) = (binary_expression "((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28)" (parenthesized_expression "((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12))" ( (binary_expression "(-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)" (parenthesized_expression "(-2 - (uint)local_82)" ( (binary_expression "-2 - (uint)local_82" number_literal - (cast_expression "(uint)local_82" ( (type_descriptor "uint" type_identifier) ) identifier)) )) - (binary_expression "(uint)*(ushort *)(local_80 + 0x12)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(local_80 + 0x12)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 0x12)" ( (binary_expression "local_80 + 0x12" identifier + number_literal) ))))) )) + (pointer_expression "*(int *)(iVar12 + 0x28)" * (cast_expression "(int *)(iVar12 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x28)" ( (binary_expression "iVar12 + 0x28" identifier + number_literal) )))))) ;) (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }" if (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" * (cast_expression "(char *)(iVar12 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x11)" ( (binary_expression "iVar12 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }" { (expression_statement "FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);" (call_expression "FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0)" identifier (argument_list "(*(undefined4 *)(iVar9 + 4),&local_7c,0,0)" ( (pointer_expression "*(undefined4 *)(iVar9 + 4)" * (cast_expression "(undefined4 *)(iVar9 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) )))) , (pointer_expression "&local_7c" & identifier) , number_literal , number_literal ))) ;) (if_statement "if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }" if (parenthesized_expression "(*(ushort *)(local_80 + 0x10) < local_82)" ( (binary_expression "*(ushort *)(local_80 + 0x10) < local_82" (pointer_expression "*(ushort *)(local_80 + 0x10)" * (cast_expression "(ushort *)(local_80 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 0x10)" ( (binary_expression "local_80 + 0x10" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n              FUN_00063eb0(&local_7c);\n            }" { (expression_statement "FUN_00063eb0(&local_7c);" (call_expression "FUN_00063eb0(&local_7c)" identifier (argument_list "(&local_7c)" ( (pointer_expression "&local_7c" & identifier) ))) ;) })) })) (expression_statement "uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);" (assignment_expression "uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" identifier = (pointer_expression "*(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" * (cast_expression "(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" ( (binary_expression "*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2" (binary_expression "*(int *)(uVar6 + 0x40) + -2" (pointer_expression "*(int *)(uVar6 + 0x40)" * (cast_expression "(int *)(uVar6 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x40)" ( (binary_expression "uVar6 + 0x40" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(ushort *)(uVar6 + 0x18) * 2" (binary_expression "(uint)*(ushort *)(uVar6 + 0x18)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(uVar6 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x18)" ( (binary_expression "uVar6 + 0x18" identifier + number_literal) )))) * number_literal)) ))))) ;) (expression_statement "pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));" (assignment_expression "pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" identifier = (cast_expression "(byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" ( (binary_expression "(uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38)" (call_expression "(uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a))" ( (binary_expression "(uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)" (parenthesized_expression "(uVar4 << 8 | uVar4 >> 8)" ( (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" identifier << number_literal) | (binary_expression "uVar4 >> 8" identifier >> number_literal)) )) & (pointer_expression "*(ushort *)(uVar6 + 0x1a)" * (cast_expression "(ushort *)(uVar6 + 0x1a)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1a)" ( (binary_expression "uVar6 + 0x1a" identifier + number_literal) ))))) ))) + (pointer_expression "*(int *)(uVar6 + 0x38)" * (cast_expression "(int *)(uVar6 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x38)" ( (binary_expression "uVar6 + 0x38" identifier + number_literal) ))))) )))) ;) (expression_statement "pbVar14 = pbVar17;" (assignment_expression "pbVar14 = pbVar17" identifier = identifier) ;) (do_statement "do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);" do (compound_statement "{\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          }" { (expression_statement "pbVar18 = pbVar14;" (assignment_expression "pbVar18 = pbVar14" identifier = identifier) ;) (expression_statement "pbVar14 = pbVar18 + 1;" (assignment_expression "pbVar14 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0)" ( (binary_expression "(*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0" (parenthesized_expression "(*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9)" ( (binary_expression "*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9" (binary_expression "*pbVar18 >> 7" (pointer_expression "*pbVar18" * identifier) >> number_literal) & (binary_expression "pbVar18 + 1 < pbVar17 + 9" (binary_expression "pbVar18 + 1" identifier + number_literal) < (binary_expression "pbVar17 + 9" identifier + number_literal))) )) != number_literal) )) ;) (expression_statement "pbVar14 = local_29;" (assignment_expression "pbVar14 = local_29" identifier = identifier) ;) (expression_statement "pbVar17 = pbVar18 + 2;" (assignment_expression "pbVar17 = pbVar18 + 2" identifier = (binary_expression "pbVar18 + 2" identifier + number_literal)) ;) (do_statement "do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');" do (compound_statement "{\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          }" { (expression_statement "local_74 = pbVar17;" (assignment_expression "local_74 = pbVar17" identifier = identifier) ;) (expression_statement "pbVar15 = pbVar14 + 1;" (assignment_expression "pbVar15 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = local_74[-1];" (assignment_expression "bVar2 = local_74[-1]" identifier = (subscript_expression "local_74[-1]" identifier [ number_literal ])) ;) (expression_statement "*pbVar14 = bVar2;" (assignment_expression "*pbVar14 = bVar2" (pointer_expression "*pbVar14" * identifier) = identifier) ;) (if_statement "if (pbVar18 + 10 <= local_74) break;" if (parenthesized_expression "(pbVar18 + 10 <= local_74)" ( (binary_expression "pbVar18 + 10 <= local_74" (binary_expression "pbVar18 + 10" identifier + number_literal) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar14 = pbVar15;" (assignment_expression "pbVar14 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar17 = local_74 + 1;" (assignment_expression "pbVar17 = local_74 + 1" identifier = (binary_expression "local_74 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }" { (expression_statement "FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);" (call_expression "FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c)" identifier (argument_list "((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c)" ( (binary_expression "(int)pbVar15 - (int)local_2d" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_2d" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) , (pointer_expression "&local_7c" & identifier) ))) ;) })) (expression_statement "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;" (assignment_expression "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18" (pointer_expression "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" * (cast_expression "(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" ( (binary_expression "*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)" (binary_expression "*(int *)(iVar9 + 0x38) + 8" (pointer_expression "*(int *)(iVar9 + 0x38)" * (cast_expression "(int *)(iVar9 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x38)" ( (binary_expression "iVar9 + 0x38" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)(iVar9 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar9 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 9)" ( (binary_expression "iVar9 + 9" identifier + number_literal) ))))) )))) = (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18" (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8" (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8" (binary_expression "local_78 >> 0x18" identifier >> number_literal) | (binary_expression "(local_78 & 0xff0000) >> 8" (parenthesized_expression "(local_78 & 0xff0000)" ( (binary_expression "local_78 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_78 & 0xff00) << 8" (parenthesized_expression "(local_78 & 0xff00)" ( (binary_expression "local_78 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_78 << 0x18" identifier << number_literal))) ;) })) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) (if_statement "if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }" { (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) })) })) }))))) (expression_statement "*(undefined1 *)(uVar6 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(uVar6 + 0xc) = 0" (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" * (cast_expression "(undefined1 *)(uVar6 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) ;) (expression_statement "cVar1 = param_1[0x3c];" (assignment_expression "cVar1 = param_1[0x3c]" identifier = (subscript_expression "param_1[0x3c]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x3c] = cVar1 + -1;" (assignment_expression "param_1[0x3c] = cVar1 + -1" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = (binary_expression "cVar1 + -1" identifier + number_literal)) ;) (expression_statement "uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);" (assignment_expression "uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" identifier = (pointer_expression "*(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" * (cast_expression "(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" ( (binary_expression "param_1 + (char)(cVar1 + -1) * 4 + 0x70" (binary_expression "param_1 + (char)(cVar1 + -1) * 4" identifier + (binary_expression "(char)(cVar1 + -1) * 4" (cast_expression "(char)(cVar1 + -1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(cVar1 + -1)" ( (binary_expression "cVar1 + -1" identifier + number_literal) ))) * number_literal)) + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x6c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x6c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar8 != 0) goto LAB_00066ea6;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;)) (expression_statement "iVar12 = *(int *)(uVar6 + 0x14);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x14)" identifier = (pointer_expression "*(int *)(uVar6 + 0x14)" * (cast_expression "(int *)(uVar6 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x14)" ( (binary_expression "uVar6 + 0x14" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (for_statement "for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" for ( (assignment_expression "pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8)" identifier = (pointer_expression "*(char **)(*(int *)(param_1 + 0x14) + 8)" * (cast_expression "(char **)(*(int *)(param_1 + 0x14) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_1 + 0x14) + 8)" ( (binary_expression "*(int *)(param_1 + 0x14) + 8" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal) ))))) ; (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pcVar7 = *(char **)(pcVar7 + 0x18)" identifier = (pointer_expression "*(char **)(pcVar7 + 0x18)" * (cast_expression "(char **)(pcVar7 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x18)" ( (binary_expression "pcVar7 + 0x18" identifier + number_literal) ))))) ) (compound_statement "{\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" { (if_statement "if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }" if (parenthesized_expression "(((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c)))" ( (binary_expression "((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))" (parenthesized_expression "((pcVar7 != param_1) && (*pcVar7 == '\0'))" ( (binary_expression "(pcVar7 != param_1) && (*pcVar7 == '\0')" (parenthesized_expression "(pcVar7 != param_1)" ( (binary_expression "pcVar7 != param_1" identifier != identifier) )) && (parenthesized_expression "(*pcVar7 == '\0')" ( (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))" ( (binary_expression "*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c)" (pointer_expression "*(int *)(pcVar7 + 0x6c)" * (cast_expression "(int *)(pcVar7 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0x6c)" ( (binary_expression "pcVar7 + 0x6c" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_1 + 0x6c)" * (cast_expression "(int *)(param_1 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }" { (expression_statement "iVar8 = FUN_000383f0();" (assignment_expression "iVar8 = FUN_000383f0()" identifier = (call_expression "FUN_000383f0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 != 0) goto LAB_00066ea6;" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066ea6;" goto statement_identifier ;)) (break_statement "break;" break ;) })) })) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_74 = (byte *)0x0;" (assignment_expression "local_74 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar12 = *(int *)(uVar6 + 0x34);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x34)" identifier = (pointer_expression "*(int *)(uVar6 + 0x34)" * (cast_expression "(int *)(uVar6 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x34)" ( (binary_expression "uVar6 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_7c = FUN_0005f680();" (assignment_expression "local_7c = FUN_0005f680()" identifier = (call_expression "FUN_0005f680()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_7c != 0) goto LAB_00066e83;" if (parenthesized_expression "(local_7c != 0)" ( (binary_expression "local_7c != 0" identifier != number_literal) )) (goto_statement "goto LAB_00066e83;" goto statement_identifier ;)) (expression_statement "local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);" (assignment_expression "local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0)" identifier = (call_expression "FUN_000634d0(*(undefined4 *)(uVar6 + 4),0)" identifier (argument_list "(*(undefined4 *)(uVar6 + 4),0)" ( (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }" { (expression_statement "FUN_00064080();" (call_expression "FUN_00064080()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;" if (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" * (cast_expression "(char *)(iVar12 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x11)" ( (binary_expression "iVar12 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00066f10;" goto statement_identifier ;)) (labeled_statement "LAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" statement_identifier : (if_statement "if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" if (parenthesized_expression "(local_7c == 0)" ( (binary_expression "local_7c == 0" identifier == number_literal) )) (compound_statement "{\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" { (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = uVar10 * 2;" (assignment_expression "uVar11 = uVar10 * 2" identifier = (binary_expression "uVar10 * 2" identifier * number_literal)) ;) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" if (parenthesized_expression "(uVar11 < 4)" ( (binary_expression "uVar11 < 4" identifier < number_literal) )) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }" { (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }" { (expression_statement "*(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);" (assignment_expression "*(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c)" (pointer_expression "*(undefined1 *)(local_78 + 0x1c)" * (cast_expression "(undefined1 *)(local_78 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x1c)" ( (binary_expression "local_78 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(uVar6 + 0x1c)" * (cast_expression "(undefined1 *)(uVar6 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) ))))) ;) (if_statement "if ((uVar11 & 2) == 0) goto LAB_00066f67;" if (parenthesized_expression "((uVar11 & 2) == 0)" ( (binary_expression "(uVar11 & 2) == 0" (parenthesized_expression "(uVar11 & 2)" ( (binary_expression "uVar11 & 2" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00066f67;" goto statement_identifier ;)) (expression_statement "*(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);" (assignment_expression "*(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11)" (pointer_expression "*(undefined2 *)(local_78 + 0x1a + uVar11)" * (cast_expression "(undefined2 *)(local_78 + 0x1a + uVar11)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x1a + uVar11)" ( (binary_expression "local_78 + 0x1a + uVar11" (binary_expression "local_78 + 0x1a" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined2 *)(uVar6 + 0x1a + uVar11)" * (cast_expression "(undefined2 *)(uVar6 + 0x1a + uVar11)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1a + uVar11)" ( (binary_expression "uVar6 + 0x1a + uVar11" (binary_expression "uVar6 + 0x1a" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" else (compound_statement "{\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" { (expression_statement "*(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);" (assignment_expression "*(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c)" (pointer_expression "*(undefined4 *)(local_78 + 0x1c)" * (cast_expression "(undefined4 *)(local_78 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x1c)" ( (binary_expression "local_78 + 0x1c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x1c)" * (cast_expression "(undefined4 *)(uVar6 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);" (assignment_expression "*(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11)" (pointer_expression "*(undefined4 *)(local_78 + 0x18 + uVar11)" * (cast_expression "(undefined4 *)(local_78 + 0x18 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x18 + uVar11)" ( (binary_expression "local_78 + 0x18 + uVar11" (binary_expression "local_78 + 0x18" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x18 + uVar11)" * (cast_expression "(undefined4 *)(uVar6 + 0x18 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x18 + uVar11)" ( (binary_expression "uVar6 + 0x18 + uVar11" (binary_expression "uVar6 + 0x18" identifier + number_literal) + identifier) ))))) ;) (expression_statement "puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(local_78 + 0x20 & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x20 & 0xfffffffc)" ( (binary_expression "local_78 + 0x20 & 0xfffffffc" (binary_expression "local_78 + 0x20" identifier + number_literal) & number_literal) )))) ;) (expression_statement "iVar12 = (local_78 + 0x1c) - (int)puVar16;" (assignment_expression "iVar12 = (local_78 + 0x1c) - (int)puVar16" identifier = (binary_expression "(local_78 + 0x1c) - (int)puVar16" (parenthesized_expression "(local_78 + 0x1c)" ( (binary_expression "local_78 + 0x1c" identifier + number_literal) )) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);" (assignment_expression "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12)" identifier = (cast_expression "(undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)(uVar6 + 0x1c) + -iVar12)" ( (binary_expression "(undefined1 *)(uVar6 + 0x1c) + -iVar12" (cast_expression "(undefined1 *)(uVar6 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x1c)" ( (binary_expression "uVar6 + 0x1c" identifier + number_literal) ))) + (unary_expression "-iVar12" - identifier)) )))) ;) (for_statement "for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" for ( (assignment_expression "uVar11 = uVar11 + iVar12 >> 2" identifier = (binary_expression "uVar11 + iVar12 >> 2" (binary_expression "uVar11 + iVar12" identifier + identifier) >> number_literal)) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" { (expression_statement "*puVar16 = *puVar13;" (assignment_expression "*puVar16 = *puVar13" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar20 * -2 + 1" (binary_expression "puVar13 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar16 = puVar16 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar16 + (uint)bVar20 * -2 + 1" (binary_expression "puVar16 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (labeled_statement "LAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);" statement_identifier : (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" identifier = (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 0xc)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar11 = uVar10 * 4;" (assignment_expression "uVar11 = uVar10 * 4" identifier = (binary_expression "uVar10 * 4" identifier * number_literal)) ;) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" if (parenthesized_expression "(uVar11 < 4)" ( (binary_expression "uVar11 < 4" identifier < number_literal) )) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }" { (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }" if (parenthesized_expression "(uVar10 != 0)" ( (binary_expression "uVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }" { (expression_statement "*(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);" (assignment_expression "*(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24)" (pointer_expression "*(undefined1 *)(local_78 + 0x24)" * (cast_expression "(undefined1 *)(local_78 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x24)" ( (binary_expression "local_78 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(uVar6 + 0x24)" * (cast_expression "(undefined1 *)(uVar6 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))))) ;) })) }) (else_clause "else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" else (compound_statement "{\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" { (expression_statement "*(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);" (assignment_expression "*(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24)" (pointer_expression "*(undefined4 *)(local_78 + 0x24)" * (cast_expression "(undefined4 *)(local_78 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x24)" ( (binary_expression "local_78 + 0x24" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x24)" * (cast_expression "(undefined4 *)(uVar6 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);" (assignment_expression "*(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11)" (pointer_expression "*(undefined4 *)(local_78 + 0x20 + uVar11)" * (cast_expression "(undefined4 *)(local_78 + 0x20 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x20 + uVar11)" ( (binary_expression "local_78 + 0x20 + uVar11" (binary_expression "local_78 + 0x20" identifier + number_literal) + identifier) )))) = (pointer_expression "*(undefined4 *)(uVar6 + 0x20 + uVar11)" * (cast_expression "(undefined4 *)(uVar6 + 0x20 + uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x20 + uVar11)" ( (binary_expression "uVar6 + 0x20 + uVar11" (binary_expression "uVar6 + 0x20" identifier + number_literal) + identifier) ))))) ;) (expression_statement "puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc)" identifier = (cast_expression "(undefined4 *)(local_78 + 0x28 & 0xfffffffc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0x28 & 0xfffffffc)" ( (binary_expression "local_78 + 0x28 & 0xfffffffc" (binary_expression "local_78 + 0x28" identifier + number_literal) & number_literal) )))) ;) (expression_statement "iVar12 = (int)(local_78 + 0x24) - (int)puVar16;" (assignment_expression "iVar12 = (int)(local_78 + 0x24) - (int)puVar16" identifier = (binary_expression "(int)(local_78 + 0x24) - (int)puVar16" (cast_expression "(int)(local_78 + 0x24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_78 + 0x24)" ( (binary_expression "local_78 + 0x24" identifier + number_literal) ))) - (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);" (assignment_expression "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12)" identifier = (cast_expression "(undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((undefined1 *)(uVar6 + 0x24) + -iVar12)" ( (binary_expression "(undefined1 *)(uVar6 + 0x24) + -iVar12" (cast_expression "(undefined1 *)(uVar6 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x24)" ( (binary_expression "uVar6 + 0x24" identifier + number_literal) ))) + (unary_expression "-iVar12" - identifier)) )))) ;) (for_statement "for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" for ( (assignment_expression "uVar11 = iVar12 + uVar11 >> 2" identifier = (binary_expression "iVar12 + uVar11 >> 2" (binary_expression "iVar12 + uVar11" identifier + identifier) >> number_literal)) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" { (expression_statement "*puVar16 = *puVar13;" (assignment_expression "*puVar16 = *puVar13" (pointer_expression "*puVar16" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar20 * -2 + 1" (binary_expression "puVar13 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar16 = puVar16 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar20 * -2 + 1" identifier = (binary_expression "puVar16 + (uint)bVar20 * -2 + 1" (binary_expression "puVar16 + (uint)bVar20 * -2" identifier + (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) }))) (expression_statement "*(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);" (assignment_expression "*(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc)" (pointer_expression "*(undefined1 *)(local_78 + 0xc)" * (cast_expression "(undefined1 *)(local_78 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_78 + 0xc)" ( (binary_expression "local_78 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" * (cast_expression "(undefined1 *)(uVar6 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0xc)" ( (binary_expression "uVar6 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "FUN_00038500();" (call_expression "FUN_00038500()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;" (assignment_expression "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18" (pointer_expression "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" * (cast_expression "(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" ( (binary_expression "*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)" (binary_expression "*(int *)(uVar6 + 0x38) + 8" (pointer_expression "*(int *)(uVar6 + 0x38)" * (cast_expression "(int *)(uVar6 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 0x38)" ( (binary_expression "uVar6 + 0x38" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)(uVar6 + 9)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(uVar6 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 9)" ( (binary_expression "uVar6 + 9" identifier + number_literal) ))))) )))) = (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18" (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8" (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8" (binary_expression "(uint)local_74 >> 0x18" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) | (binary_expression "((uint)local_74 & 0xff0000) >> 8" (parenthesized_expression "((uint)local_74 & 0xff0000)" ( (binary_expression "(uint)local_74 & 0xff0000" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) >> number_literal)) | (binary_expression "((uint)local_74 & 0xff00) << 8" (parenthesized_expression "((uint)local_74 & 0xff00)" ( (binary_expression "(uint)local_74 & 0xff00" (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) << number_literal)) | (binary_expression "(int)local_74 << 0x18" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal))) ;) (expression_statement "*(uint *)(param_1 + 0x74) = local_78;" (assignment_expression "*(uint *)(param_1 + 0x74) = local_78" (pointer_expression "*(uint *)(param_1 + 0x74)" * (cast_expression "(uint *)(param_1 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar11 = local_78;" (assignment_expression "uVar11 = local_78" identifier = identifier) ;) (goto_statement "goto LAB_00066fb5;" goto statement_identifier ;) }))) }) (else_clause "else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" else (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" if (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" * (cast_expression "(char *)(iVar12 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x11)" ( (binary_expression "iVar12 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" { (labeled_statement "LAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);" statement_identifier : (expression_statement "FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);" (call_expression "FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c)" identifier (argument_list "(*(undefined4 *)(uVar6 + 4),&local_7c)" ( (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) , (pointer_expression "&local_7c" & identifier) ))) ;)) (goto_statement "goto LAB_00066f2a;" goto statement_identifier ;) })))) (labeled_statement "LAB_00066e83:\n  param_1[0x74] = '\0';" statement_identifier : (expression_statement "param_1[0x74] = '\0';" (assignment_expression "param_1[0x74] = '\0'" (subscript_expression "param_1[0x74]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "param_1[0x75] = '\0';" (assignment_expression "param_1[0x75] = '\0'" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x76] = '\0';" (assignment_expression "param_1[0x76] = '\0'" (subscript_expression "param_1[0x76]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x77] = '\0';" (assignment_expression "param_1[0x77] = '\0'" (subscript_expression "param_1[0x77]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" identifier = identifier) ;) (if_statement "if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }" if (parenthesized_expression "((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0))" ( (binary_expression "(local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)" (parenthesized_expression "(local_78 == 0)" ( (binary_expression "local_78 == 0" identifier == number_literal) )) || (parenthesized_expression "(FUN_0001f150(), iVar8 = local_7c, local_7c != 0)" ( (comma_expression "FUN_0001f150(), iVar8 = local_7c, local_7c != 0" (call_expression "FUN_0001f150()" identifier (argument_list "()" ( ))) , (comma_expression "iVar8 = local_7c, local_7c != 0" (assignment_expression "iVar8 = local_7c" identifier = identifier) , (binary_expression "local_7c != 0" identifier != number_literal))) ))) )) (compound_statement "{\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }" { (labeled_statement "LAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }" statement_identifier : (if_statement "if (local_9c != 0) {\n      FUN_00026f80();\n    }" if (parenthesized_expression "(local_9c != 0)" ( (binary_expression "local_9c != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00026f80();\n    }" { (expression_statement "FUN_00026f80();" (call_expression "FUN_00026f80()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n      return iVar8;\n    }" { (return_statement "return iVar8;" return identifier ;) })) (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "uVar11 = *(uint *)(param_1 + 0x74);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x74)" identifier = (pointer_expression "*(uint *)(param_1 + 0x74)" * (cast_expression "(uint *)(param_1 + 0x74)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x74)" ( (binary_expression "param_1 + 0x74" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;" statement_identifier : (expression_statement "*(uint *)(param_1 + 0x70) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x70) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) = identifier) ;)) (expression_statement "param_1[0x3c] = '\x01';" (assignment_expression "param_1[0x3c] = '\x01'" (subscript_expression "param_1[0x3c]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "param_1[0x3e] = '\0';" (assignment_expression "param_1[0x3e] = '\0'" (subscript_expression "param_1[0x3e]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x3f] = '\0';" (assignment_expression "param_1[0x3f] = '\0'" (subscript_expression "param_1[0x3f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x40] = '\0';" (assignment_expression "param_1[0x40] = '\0'" (subscript_expression "param_1[0x40]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[0x41] = '\0';" (assignment_expression "param_1[0x41] = '\0'" (subscript_expression "param_1[0x41]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(uint *)(param_1 + 0x6c) = uVar11;" (assignment_expression "*(uint *)(param_1 + 0x6c) = uVar11" (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_00066d0d;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (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 = (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) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT * LIT) ))) / LIT) )))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) * LIT)) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) || (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT == LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 )))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) - (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) )) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) >> LIT) & (binary_expression (binary_expression IDENT + LIT) < (binary_expression IDENT + LIT))) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) }))))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) })) (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 = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) + (unary_expression - IDENT)) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_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 (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) + (unary_expression - IDENT)) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) = (binary_expression (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) << LIT)) | (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) ))) ;)) (goto_statement goto statement_identifier ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( ))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "int __regparm3 FUN_00066cc0(char *param_1)\n\n{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00066cc0(char *param_1)" (identifier "FUN_00066cc0") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  short sVar3;\n  ushort uVar4;\n  int iVar5;\n  uint uVar6;\n  char *pcVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 *puVar13;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  byte *pbVar18;\n  int in_GS_OFFSET;\n  bool bVar19;\n  byte bVar20;\n  int local_9c;\n  ushort local_82;\n  int local_80;\n  int local_7c;\n  uint local_78;\n  byte *local_74;\n  undefined4 local_70;\n  uint local_6c;\n  byte **local_68;\n  ushort *local_64;\n  undefined4 local_60;\n  undefined4 local_48;\n  undefined1 local_2d [4];\n  byte local_29 [9];\n  int local_20;\n  \n  bVar20 = 0;\n  uVar11 = *(uint *)(param_1 + 0x6c);\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_9c = 0;\n  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);\nLAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);\n  uVar6 = uVar11;\n  do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );\n  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }\n  local_78 = 0;\n  local_74 = (byte *)0x0;\n  iVar12 = *(int *)(uVar6 + 0x34);\n  local_7c = FUN_0005f680();\n  if (local_7c != 0) goto LAB_00066e83;\n  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);\n  if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }\nLAB_00066e83:\n  param_1[0x74] = '\0';\n  param_1[0x75] = '\0';\n  param_1[0x76] = '\0';\n  param_1[0x77] = '\0';\n  iVar8 = local_7c;\n  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }\n  uVar11 = *(uint *)(param_1 + 0x74);\nLAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;\n  param_1[0x3c] = '\x01';\n  param_1[0x3e] = '\0';\n  param_1[0x3f] = '\0';\n  param_1[0x40] = '\0';\n  param_1[0x41] = '\0';\n  *(uint *)(param_1 + 0x6c) = uVar11;\n  goto LAB_00066d0d;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "short sVar3;" (sized_type_specifier "short" (short "short")) (identifier "sVar3") (; ";")) (declaration "ushort uVar4;" (type_identifier "ushort") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined4 *puVar13;" (type_identifier "undefined4") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "byte *pbVar15;" (type_identifier "byte") (pointer_declarator "*pbVar15" (* "*") (identifier "pbVar15")) (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "byte *pbVar18;" (type_identifier "byte") (pointer_declarator "*pbVar18" (* "*") (identifier "pbVar18")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar19;" (primitive_type "bool") (identifier "bVar19") (; ";")) (declaration "byte bVar20;" (type_identifier "byte") (identifier "bVar20") (; ";")) (declaration "int local_9c;" (primitive_type "int") (identifier "local_9c") (; ";")) (declaration "ushort local_82;" (type_identifier "ushort") (identifier "local_82") (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "int local_7c;" (primitive_type "int") (identifier "local_7c") (; ";")) (declaration "uint local_78;" (type_identifier "uint") (identifier "local_78") (; ";")) (declaration "byte *local_74;" (type_identifier "byte") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "undefined4 local_70;" (type_identifier "undefined4") (identifier "local_70") (; ";")) (declaration "uint local_6c;" (type_identifier "uint") (identifier "local_6c") (; ";")) (declaration "byte **local_68;" (type_identifier "byte") (pointer_declarator "**local_68" (* "*") (pointer_declarator "*local_68" (* "*") (identifier "local_68"))) (; ";")) (declaration "ushort *local_64;" (type_identifier "ushort") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined1 local_2d [4];" (type_identifier "undefined1") (array_declarator "local_2d [4]" (identifier "local_2d") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "byte local_29 [9];" (type_identifier "byte") (array_declarator "local_29 [9]" (identifier "local_29") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" (identifier "bVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(param_1 + 0x6c)" (* "*") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_9c = 0;" (assignment_expression "local_9c = 0" (identifier "local_9c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);" (assignment_expression "iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x14) + 0x28)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x14) + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x14) + 0x28)" (( "(") (binary_expression "*(int *)(param_1 + 0x14) + 0x28" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (labeled_statement "LAB_00066d0d:\n  iVar12 = *(int *)(uVar11 + 0x14);" (statement_identifier "LAB_00066d0d") (: ":") (expression_statement "iVar12 = *(int *)(uVar11 + 0x14);" (assignment_expression "iVar12 = *(int *)(uVar11 + 0x14)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(uVar11 + 0x14)" (* "*") (cast_expression "(int *)(uVar11 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar11 + 0x14)" (( "(") (binary_expression "uVar11 + 0x14" (identifier "uVar11") (+ "+") (number_literal "0x14")) () ")"))))) (; ";"))) (expression_statement "uVar6 = uVar11;" (assignment_expression "uVar6 = uVar11" (identifier "uVar6") (= "=") (identifier "uVar11")) (; ";")) (do_statement "do {\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  } while( true );" (do "do") (compound_statement "{\n    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }\n    if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }\n    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);\n    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);\n    iVar8 = FUN_0005f680();\n    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }\n    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }\n    *(undefined1 *)(uVar6 + 0xc) = 0;\n    FUN_0001f150();\n    cVar1 = param_1[0x3c];\n    param_1[0x3c] = cVar1 + -1;\n    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n    *(uint *)(param_1 + 0x6c) = uVar6;\n    if (iVar8 != 0) goto LAB_00066ea6;\n    iVar12 = *(int *)(uVar6 + 0x14);\n  }" ({ "{") (if_statement "if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }" (if "if") (parenthesized_expression "((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0))" (( "(") (binary_expression "(iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)" (parenthesized_expression "(iVar12 < 0)" (( "(") (binary_expression "iVar12 < 0" (identifier "iVar12") (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar12 = FUN_00038800(), iVar12 != 0)" (( "(") (comma_expression "iVar12 = FUN_00038800(), iVar12 != 0" (assignment_expression "iVar12 = FUN_00038800()" (identifier "iVar12") (= "=") (call_expression "FUN_00038800()" (identifier "FUN_00038800") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_00066e17:\n      iVar8 = 0;\n      goto LAB_00066ea6;\n    }" ({ "{") (labeled_statement "LAB_00066e17:\n      iVar8 = 0;" (statement_identifier "LAB_00066e17") (: ":") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00066ea6;" (goto "goto") (statement_identifier "LAB_00066ea6") (; ";")) (} "}"))) (if_statement "if (*(char *)(uVar6 + 0xc) == '\0') {\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }\n    else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" (if "if") (parenthesized_expression "(*(char *)(uVar6 + 0xc) == '\0')" (( "(") (binary_expression "*(char *)(uVar6 + 0xc) == '\0'" (pointer_expression "*(char *)(uVar6 + 0xc)" (* "*") (cast_expression "(char *)(uVar6 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;\n    }" ({ "{") (if_statement "if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;" (if "if") (parenthesized_expression "((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0))" (( "(") (binary_expression "(*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||\n         (iVar12 = (int)param_1[0x3c], iVar12 == 0)" (parenthesized_expression "(*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3))" (( "(") (binary_expression "*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)" (pointer_expression "*(int *)(uVar6 + 0x14)" (* "*") (cast_expression "(int *)(uVar6 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x14)" (( "(") (binary_expression "uVar6 + 0x14" (identifier "uVar6") (+ "+") (number_literal "0x14")) () ")")))) (<= "<=") (cast_expression "(int)((uint)(iVar5 * 2) / 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)(iVar5 * 2) / 3)" (( "(") (binary_expression "(uint)(iVar5 * 2) / 3" (call_expression "(uint)(iVar5 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 * 2)" (( "(") (binary_expression "iVar5 * 2" (identifier "iVar5") (* "*") (number_literal "2")) () ")"))) (/ "/") (number_literal "3")) () ")")))) () ")")) (|| "||") (parenthesized_expression "(iVar12 = (int)param_1[0x3c], iVar12 == 0)" (( "(") (comma_expression "iVar12 = (int)param_1[0x3c], iVar12 == 0" (assignment_expression "iVar12 = (int)param_1[0x3c]" (identifier "iVar12") (= "=") (cast_expression "(int)param_1[0x3c]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")))) (, ",") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00066e17;" (goto "goto") (statement_identifier "LAB_00066e17") (; ";"))) (} "}")) (else_clause "else {\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" (else "else") (compound_statement "{\n      iVar12 = (int)param_1[0x3c];\n      if (iVar12 == 0) break;\n    }" ({ "{") (expression_statement "iVar12 = (int)param_1[0x3c];" (assignment_expression "iVar12 = (int)param_1[0x3c]" (identifier "iVar12") (= "=") (cast_expression "(int)param_1[0x3c]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")))) (; ";")) (if_statement "if (iVar12 == 0) break;" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (expression_statement "iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);" (assignment_expression "iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + iVar12 * 4 + 0x6c)" (* "*") (cast_expression "(int *)(param_1 + iVar12 * 4 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar12 * 4 + 0x6c)" (( "(") (binary_expression "param_1 + iVar12 * 4 + 0x6c" (binary_expression "param_1 + iVar12 * 4" (identifier "param_1") (+ "+") (binary_expression "iVar12 * 4" (identifier "iVar12") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);" (assignment_expression "sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e)" (identifier "sVar3") (= "=") (pointer_expression "*(short *)(param_1 + iVar12 * 2 + 0x3e)" (* "*") (cast_expression "(short *)(param_1 + iVar12 * 2 + 0x3e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar12 * 2 + 0x3e)" (( "(") (binary_expression "param_1 + iVar12 * 2 + 0x3e" (binary_expression "param_1 + iVar12 * 2" (identifier "param_1") (+ "+") (binary_expression "iVar12 * 2" (identifier "iVar12") (* "*") (number_literal "2"))) (+ "+") (number_literal "0x3e")) () ")"))))) (; ";")) (expression_statement "iVar8 = FUN_0005f680();" (assignment_expression "iVar8 = FUN_0005f680()" (identifier "iVar8") (= "=") (call_expression "FUN_0005f680()" (identifier "FUN_0005f680") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }" (if "if") (parenthesized_expression "((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0))))" (( "(") (binary_expression "(iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))" (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))" (( "(") (parenthesized_expression "(*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0))" (( "(") (binary_expression "*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)" (binary_expression "*(int *)(iVar9 + 0x14) < 0" (pointer_expression "*(int *)(iVar9 + 0x14)" (* "*") (cast_expression "(int *)(iVar9 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x14)" (( "(") (binary_expression "iVar9 + 0x14" (identifier "iVar9") (+ "+") (number_literal "0x14")) () ")")))) (< "<") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar8 = FUN_00038800(), iVar8 != 0)" (( "(") (comma_expression "iVar8 = FUN_00038800(), iVar8 != 0" (assignment_expression "iVar8 = FUN_00038800()" (identifier "iVar8") (= "=") (call_expression "FUN_00038800()" (identifier "FUN_00038800") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      *(undefined1 *)(uVar6 + 0xc) = 0;\n      FUN_0001f150();\n      cVar1 = param_1[0x3c];\n      param_1[0x3c] = cVar1 + -1;\n      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);\n      goto LAB_00066ea6;\n    }" ({ "{") (expression_statement "*(undefined1 *)(uVar6 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(uVar6 + 0xc) = 0" (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" (* "*") (cast_expression "(undefined1 *)(uVar6 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" (identifier "FUN_0001f150") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar1 = param_1[0x3c];" (assignment_expression "cVar1 = param_1[0x3c]" (identifier "cVar1") (= "=") (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]"))) (; ";")) (expression_statement "param_1[0x3c] = cVar1 + -1;" (assignment_expression "param_1[0x3c] = cVar1 + -1" (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (binary_expression "cVar1 + -1" (identifier "cVar1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);" (assignment_expression "*(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (pointer_expression "*(undefined4 *)(param_1 + 0x6c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x6c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (* "*") (cast_expression "(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (( "(") (binary_expression "param_1 + (char)(cVar1 + -1) * 4 + 0x70" (binary_expression "param_1 + (char)(cVar1 + -1) * 4" (identifier "param_1") (+ "+") (binary_expression "(char)(cVar1 + -1) * 4" (cast_expression "(char)(cVar1 + -1)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(cVar1 + -1)" (( "(") (binary_expression "cVar1 + -1" (identifier "cVar1") (+ "+") (number_literal "-1")) () ")"))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (goto_statement "goto LAB_00066ea6;" (goto "goto") (statement_identifier "LAB_00066ea6") (; ";")) (} "}"))) (if_statement "if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }\n    else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18)))))" (( "(") (binary_expression "(((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||\n       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))" (parenthesized_expression "(((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18)))" (( "(") (binary_expression "((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||\n        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))" (parenthesized_expression "((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01'))" (( "(") (binary_expression "(*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')" (parenthesized_expression "(*(char *)(uVar6 + 3) == '\0')" (( "(") (binary_expression "*(char *)(uVar6 + 3) == '\0'" (pointer_expression "*(char *)(uVar6 + 3)" (* "*") (cast_expression "(char *)(uVar6 + 3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 3)" (( "(") (binary_expression "uVar6 + 3" (identifier "uVar6") (+ "+") (number_literal "3")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(uVar6 + 0xc) != '\x01')" (( "(") (binary_expression "*(char *)(uVar6 + 0xc) != '\x01'" (pointer_expression "*(char *)(uVar6 + 0xc)" (* "*") (cast_expression "(char *)(uVar6 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))" (( "(") (binary_expression "*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18)" (pointer_expression "*(short *)(uVar6 + 0x1c)" (* "*") (cast_expression "(short *)(uVar6 + 0x1c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1c)" (( "(") (binary_expression "uVar6 + 0x1c" (identifier "uVar6") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (pointer_expression "*(short *)(uVar6 + 0x18)" (* "*") (cast_expression "(short *)(uVar6 + 0x18)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x18)" (( "(") (binary_expression "uVar6 + 0x18" (identifier "uVar6") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))" (( "(") (parenthesized_expression "(*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18)))" (( "(") (binary_expression "*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))" (binary_expression "*(int *)(iVar9 + 4) == 1" (pointer_expression "*(int *)(iVar9 + 4)" (* "*") (cast_expression "(int *)(iVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "1")) (|| "||") (parenthesized_expression "(sVar3 != *(short *)(iVar9 + 0x18))" (( "(") (binary_expression "sVar3 != *(short *)(iVar9 + 0x18)" (identifier "sVar3") (!= "!=") (pointer_expression "*(short *)(iVar9 + 0x18)" (* "*") (cast_expression "(short *)(iVar9 + 0x18)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x18)" (( "(") (binary_expression "iVar9 + 0x18" (identifier "iVar9") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      iVar9 = FUN_0002df20();\n      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);\n      bVar19 = local_9c != 0;\n      local_9c = iVar9;\n      if (bVar19) {\n        FUN_00026f80();\n      }\n    }" ({ "{") (expression_statement "iVar9 = FUN_0002df20();" (assignment_expression "iVar9 = FUN_0002df20()" (identifier "iVar9") (= "=") (call_expression "FUN_0002df20()" (identifier "FUN_0002df20") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);" (assignment_expression "iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1)" (identifier "iVar8") (= "=") (call_expression "FUN_000653e0(iVar12 == 1,param_1[3] & 1)" (identifier "FUN_000653e0") (argument_list "(iVar12 == 1,param_1[3] & 1)" (( "(") (binary_expression "iVar12 == 1" (identifier "iVar12") (== "==") (number_literal "1")) (, ",") (binary_expression "param_1[3] & 1" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (& "&") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar19 = local_9c != 0;" (assignment_expression "bVar19 = local_9c != 0" (identifier "bVar19") (= "=") (binary_expression "local_9c != 0" (identifier "local_9c") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "local_9c = iVar9;" (assignment_expression "local_9c = iVar9" (identifier "local_9c") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (bVar19) {\n        FUN_00026f80();\n      }" (if "if") (parenthesized_expression "(bVar19)" (( "(") (identifier "bVar19") () ")")) (compound_statement "{\n        FUN_00026f80();\n      }" ({ "{") (expression_statement "FUN_00026f80();" (call_expression "FUN_00026f80()" (identifier "FUN_00026f80") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" (else "else") (if_statement "if (*(short *)(uVar6 + 0x1c) == 0) {\n      iVar8 = FUN_000383f0();\n    }\n    else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(*(short *)(uVar6 + 0x1c) == 0)" (( "(") (binary_expression "*(short *)(uVar6 + 0x1c) == 0" (pointer_expression "*(short *)(uVar6 + 0x1c)" (* "*") (cast_expression "(short *)(uVar6 + 0x1c)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1c)" (( "(") (binary_expression "uVar6 + 0x1c" (identifier "uVar6") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar8 = FUN_000383f0();\n    }" ({ "{") (expression_statement "iVar8 = FUN_000383f0();" (assignment_expression "iVar8 = FUN_000383f0()" (identifier "iVar8") (= "=") (call_expression "FUN_000383f0()" (identifier "FUN_000383f0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar12 = *(int *)(uVar6 + 0x34);\n      local_7c = FUN_000634d0(0,0);\n      iVar8 = local_7c;\n      if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }\n    }" ({ "{") (expression_statement "iVar12 = *(int *)(uVar6 + 0x34);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x34)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(uVar6 + 0x34)" (* "*") (cast_expression "(int *)(uVar6 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x34)" (( "(") (binary_expression "uVar6 + 0x34" (identifier "uVar6") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_7c = FUN_000634d0(0,0);" (assignment_expression "local_7c = FUN_000634d0(0,0)" (identifier "local_7c") (= "=") (call_expression "FUN_000634d0(0,0)" (identifier "FUN_000634d0") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" (identifier "iVar8") (= "=") (identifier "local_7c")) (; ";")) (if_statement "if (local_7c == 0) {\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }" (if "if") (parenthesized_expression "(local_7c == 0)" (( "(") (binary_expression "local_7c == 0" (identifier "local_7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_74 = *(byte **)(uVar6 + 0x24);\n        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);\n        FUN_00038500();\n        local_70 = 1;\n        local_64 = &local_82;\n        local_60 = *(undefined4 *)(uVar6 + 0x3c);\n        local_48 = 2;\n        local_6c = uVar6;\n        local_68 = &local_74;\n        local_7c = FUN_000393d0(local_80);\n        if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }\n        iVar8 = local_7c;\n        if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }\n      }" ({ "{") (expression_statement "local_74 = *(byte **)(uVar6 + 0x24);" (assignment_expression "local_74 = *(byte **)(uVar6 + 0x24)" (identifier "local_74") (= "=") (pointer_expression "*(byte **)(uVar6 + 0x24)" (* "*") (cast_expression "(byte **)(uVar6 + 0x24)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar6 + 0x24)" (( "(") (binary_expression "uVar6 + 0x24" (identifier "uVar6") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);" (assignment_expression "local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74)" (identifier "local_82") (= "=") (call_expression "(**(code **)(uVar6 + 0x4c))(uVar6,local_74)" (parenthesized_expression "(**(code **)(uVar6 + 0x4c))" (( "(") (pointer_expression "**(code **)(uVar6 + 0x4c)" (* "*") (pointer_expression "*(code **)(uVar6 + 0x4c)" (* "*") (cast_expression "(code **)(uVar6 + 0x4c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(uVar6 + 0x4c)" (( "(") (binary_expression "uVar6 + 0x4c" (identifier "uVar6") (+ "+") (number_literal "0x4c")) () ")"))))) () ")")) (argument_list "(uVar6,local_74)" (( "(") (identifier "uVar6") (, ",") (identifier "local_74") () ")")))) (; ";")) (expression_statement "FUN_00038500();" (call_expression "FUN_00038500()" (identifier "FUN_00038500") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" (identifier "local_70") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_64 = &local_82;" (assignment_expression "local_64 = &local_82" (identifier "local_64") (= "=") (pointer_expression "&local_82" (& "&") (identifier "local_82"))) (; ";")) (expression_statement "local_60 = *(undefined4 *)(uVar6 + 0x3c);" (assignment_expression "local_60 = *(undefined4 *)(uVar6 + 0x3c)" (identifier "local_60") (= "=") (pointer_expression "*(undefined4 *)(uVar6 + 0x3c)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x3c)" (( "(") (binary_expression "uVar6 + 0x3c" (identifier "uVar6") (+ "+") (number_literal "0x3c")) () ")"))))) (; ";")) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" (identifier "local_48") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_6c = uVar6;" (assignment_expression "local_6c = uVar6" (identifier "local_6c") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "local_68 = &local_74;" (assignment_expression "local_68 = &local_74" (identifier "local_68") (= "=") (pointer_expression "&local_74" (& "&") (identifier "local_74"))) (; ";")) (expression_statement "local_7c = FUN_000393d0(local_80);" (assignment_expression "local_7c = FUN_000393d0(local_80)" (identifier "local_7c") (= "=") (call_expression "FUN_000393d0(local_80)" (identifier "FUN_000393d0") (argument_list "(local_80)" (( "(") (identifier "local_80") () ")")))) (; ";")) (if_statement "if (local_7c == 0) {\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }" (if "if") (parenthesized_expression "(local_7c == 0)" (( "(") (binary_expression "local_7c == 0" (identifier "local_7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);\n          if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }\n          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);\n          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));\n          pbVar14 = pbVar17;\n          do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);\n          pbVar14 = local_29;\n          pbVar17 = pbVar18 + 2;\n          do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');\n          if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }\n          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;\n        }" ({ "{") (expression_statement "*(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28);" (assignment_expression "*(uint *)(local_80 + 0x14) =\n               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28)" (pointer_expression "*(uint *)(local_80 + 0x14)" (* "*") (cast_expression "(uint *)(local_80 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80 + 0x14)" (( "(") (binary_expression "local_80 + 0x14" (identifier "local_80") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +\n               *(int *)(iVar12 + 0x28)" (parenthesized_expression "((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12))" (( "(") (binary_expression "(-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)" (parenthesized_expression "(-2 - (uint)local_82)" (( "(") (binary_expression "-2 - (uint)local_82" (number_literal "-2") (- "-") (cast_expression "(uint)local_82" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_82"))) () ")")) (- "-") (binary_expression "(uint)*(ushort *)(local_80 + 0x12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(local_80 + 0x12)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80 + 0x12)" (( "(") (binary_expression "local_80 + 0x12" (identifier "local_80") (+ "+") (number_literal "0x12")) () ")"))))) () ")")) (+ "+") (pointer_expression "*(int *)(iVar12 + 0x28)" (* "*") (cast_expression "(int *)(iVar12 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x28)" (( "(") (binary_expression "iVar12 + 0x28" (identifier "iVar12") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') {\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" (( "(") (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" (* "*") (cast_expression "(char *)(iVar12 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x11)" (( "(") (binary_expression "iVar12 + 0x11" (identifier "iVar12") (+ "+") (number_literal "0x11")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);\n            if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }\n          }" ({ "{") (expression_statement "FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);" (call_expression "FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0)" (identifier "FUN_00063d70") (argument_list "(*(undefined4 *)(iVar9 + 4),&local_7c,0,0)" (( "(") (pointer_expression "*(undefined4 *)(iVar9 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (*(ushort *)(local_80 + 0x10) < local_82) {\n              FUN_00063eb0(&local_7c);\n            }" (if "if") (parenthesized_expression "(*(ushort *)(local_80 + 0x10) < local_82)" (( "(") (binary_expression "*(ushort *)(local_80 + 0x10) < local_82" (pointer_expression "*(ushort *)(local_80 + 0x10)" (* "*") (cast_expression "(ushort *)(local_80 + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80 + 0x10)" (( "(") (binary_expression "local_80 + 0x10" (identifier "local_80") (+ "+") (number_literal "0x10")) () ")")))) (< "<") (identifier "local_82")) () ")")) (compound_statement "{\n              FUN_00063eb0(&local_7c);\n            }" ({ "{") (expression_statement "FUN_00063eb0(&local_7c);" (call_expression "FUN_00063eb0(&local_7c)" (identifier "FUN_00063eb0") (argument_list "(&local_7c)" (( "(") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);" (assignment_expression "uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" (identifier "uVar4") (= "=") (pointer_expression "*(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" (* "*") (cast_expression "(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2)" (( "(") (binary_expression "*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2" (binary_expression "*(int *)(uVar6 + 0x40) + -2" (pointer_expression "*(int *)(uVar6 + 0x40)" (* "*") (cast_expression "(int *)(uVar6 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x40)" (( "(") (binary_expression "uVar6 + 0x40" (identifier "uVar6") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (number_literal "-2")) (+ "+") (binary_expression "(uint)*(ushort *)(uVar6 + 0x18) * 2" (binary_expression "(uint)*(ushort *)(uVar6 + 0x18)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(uVar6 + 0x18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x18)" (( "(") (binary_expression "uVar6 + 0x18" (identifier "uVar6") (+ "+") (number_literal "0x18")) () ")")))) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38));" (assignment_expression "pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" (identifier "pbVar17") (= "=") (cast_expression "(byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38))" (( "(") (binary_expression "(uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +\n                            *(int *)(uVar6 + 0x38)" (call_expression "(uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a))" (( "(") (binary_expression "(uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)" (parenthesized_expression "(uVar4 << 8 | uVar4 >> 8)" (( "(") (binary_expression "uVar4 << 8 | uVar4 >> 8" (binary_expression "uVar4 << 8" (identifier "uVar4") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar4 >> 8" (identifier "uVar4") (>> ">>") (number_literal "8"))) () ")")) (& "&") (pointer_expression "*(ushort *)(uVar6 + 0x1a)" (* "*") (cast_expression "(ushort *)(uVar6 + 0x1a)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1a)" (( "(") (binary_expression "uVar6 + 0x1a" (identifier "uVar6") (+ "+") (number_literal "0x1a")) () ")"))))) () ")"))) (+ "+") (pointer_expression "*(int *)(uVar6 + 0x38)" (* "*") (cast_expression "(int *)(uVar6 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x38)" (( "(") (binary_expression "uVar6 + 0x38" (identifier "uVar6") (+ "+") (number_literal "0x38")) () ")"))))) () ")")))) (; ";")) (expression_statement "pbVar14 = pbVar17;" (assignment_expression "pbVar14 = pbVar17" (identifier "pbVar14") (= "=") (identifier "pbVar17")) (; ";")) (do_statement "do {\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);" (do "do") (compound_statement "{\n            pbVar18 = pbVar14;\n            pbVar14 = pbVar18 + 1;\n          }" ({ "{") (expression_statement "pbVar18 = pbVar14;" (assignment_expression "pbVar18 = pbVar14" (identifier "pbVar18") (= "=") (identifier "pbVar14")) (; ";")) (expression_statement "pbVar14 = pbVar18 + 1;" (assignment_expression "pbVar14 = pbVar18 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0)" (( "(") (binary_expression "(*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0" (parenthesized_expression "(*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9)" (( "(") (binary_expression "*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9" (binary_expression "*pbVar18 >> 7" (pointer_expression "*pbVar18" (* "*") (identifier "pbVar18")) (>> ">>") (number_literal "7")) (& "&") (binary_expression "pbVar18 + 1 < pbVar17 + 9" (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1")) (< "<") (binary_expression "pbVar17 + 9" (identifier "pbVar17") (+ "+") (number_literal "9")))) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "pbVar14 = local_29;" (assignment_expression "pbVar14 = local_29" (identifier "pbVar14") (= "=") (identifier "local_29")) (; ";")) (expression_statement "pbVar17 = pbVar18 + 2;" (assignment_expression "pbVar17 = pbVar18 + 2" (identifier "pbVar17") (= "=") (binary_expression "pbVar18 + 2" (identifier "pbVar18") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          } while ((char)bVar2 < '\0');" (do "do") (compound_statement "{\n            local_74 = pbVar17;\n            pbVar15 = pbVar14 + 1;\n            bVar2 = local_74[-1];\n            *pbVar14 = bVar2;\n            if (pbVar18 + 10 <= local_74) break;\n            pbVar14 = pbVar15;\n            pbVar17 = local_74 + 1;\n          }" ({ "{") (expression_statement "local_74 = pbVar17;" (assignment_expression "local_74 = pbVar17" (identifier "local_74") (= "=") (identifier "pbVar17")) (; ";")) (expression_statement "pbVar15 = pbVar14 + 1;" (assignment_expression "pbVar15 = pbVar14 + 1" (identifier "pbVar15") (= "=") (binary_expression "pbVar14 + 1" (identifier "pbVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = local_74[-1];" (assignment_expression "bVar2 = local_74[-1]" (identifier "bVar2") (= "=") (subscript_expression "local_74[-1]" (identifier "local_74") ([ "[") (number_literal "-1") (] "]"))) (; ";")) (expression_statement "*pbVar14 = bVar2;" (assignment_expression "*pbVar14 = bVar2" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (= "=") (identifier "bVar2")) (; ";")) (if_statement "if (pbVar18 + 10 <= local_74) break;" (if "if") (parenthesized_expression "(pbVar18 + 10 <= local_74)" (( "(") (binary_expression "pbVar18 + 10 <= local_74" (binary_expression "pbVar18 + 10" (identifier "pbVar18") (+ "+") (number_literal "10")) (<= "<=") (identifier "local_74")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar14 = pbVar15;" (assignment_expression "pbVar14 = pbVar15" (identifier "pbVar14") (= "=") (identifier "pbVar15")) (; ";")) (expression_statement "pbVar17 = local_74 + 1;" (assignment_expression "pbVar17 = local_74 + 1" (identifier "pbVar17") (= "=") (binary_expression "local_74 + 1" (identifier "local_74") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar2 < '\0')" (( "(") (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (if_statement "if (local_7c == 0) {\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }" (if "if") (parenthesized_expression "(local_7c == 0)" (( "(") (binary_expression "local_7c == 0" (identifier "local_7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);\n          }" ({ "{") (expression_statement "FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);" (call_expression "FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c)" (identifier "FUN_00065060") (argument_list "((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c)" (( "(") (binary_expression "(int)pbVar15 - (int)local_2d" (cast_expression "(int)pbVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar15")) (- "-") (cast_expression "(int)local_2d" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_2d"))) (, ",") (number_literal "0") (, ",") (pointer_expression "*(undefined4 *)(uVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 4)" (( "(") (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) () ")"))) (; ";")) (} "}"))) (expression_statement "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18;" (assignment_expression "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =\n               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18" (pointer_expression "*(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" (* "*") (cast_expression "(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9))" (( "(") (binary_expression "*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)" (binary_expression "*(int *)(iVar9 + 0x38) + 8" (pointer_expression "*(int *)(iVar9 + 0x38)" (* "*") (cast_expression "(int *)(iVar9 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x38)" (( "(") (binary_expression "iVar9 + 0x38" (identifier "iVar9") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "8")) (+ "+") (binary_expression "(uint)*(byte *)(iVar9 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar9 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 9)" (( "(") (binary_expression "iVar9 + 9" (identifier "iVar9") (+ "+") (number_literal "9")) () ")"))))) () ")")))) (= "=") (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |\n               local_78 << 0x18" (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8" (binary_expression "local_78 >> 0x18 | (local_78 & 0xff0000) >> 8" (binary_expression "local_78 >> 0x18" (identifier "local_78") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_78 & 0xff0000) >> 8" (parenthesized_expression "(local_78 & 0xff0000)" (( "(") (binary_expression "local_78 & 0xff0000" (identifier "local_78") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_78 & 0xff00) << 8" (parenthesized_expression "(local_78 & 0xff00)" (( "(") (binary_expression "local_78 & 0xff00" (identifier "local_78") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_78 << 0x18" (identifier "local_78") (<< "<<") (number_literal "0x18")))) (; ";")) (} "}"))) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" (identifier "iVar8") (= "=") (identifier "local_7c")) (; ";")) (if_statement "if (local_80 != 0) {\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }" (if "if") (parenthesized_expression "(local_80 != 0)" (( "(") (binary_expression "local_80 != 0" (identifier "local_80") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0001f150();\n          iVar8 = local_7c;\n        }" ({ "{") (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" (identifier "FUN_0001f150") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" (identifier "iVar8") (= "=") (identifier "local_7c")) (; ";")) (} "}"))) (} "}"))) (} "}")))))) (expression_statement "*(undefined1 *)(uVar6 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(uVar6 + 0xc) = 0" (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" (* "*") (cast_expression "(undefined1 *)(uVar6 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0001f150();" (call_expression "FUN_0001f150()" (identifier "FUN_0001f150") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "cVar1 = param_1[0x3c];" (assignment_expression "cVar1 = param_1[0x3c]" (identifier "cVar1") (= "=") (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]"))) (; ";")) (expression_statement "param_1[0x3c] = cVar1 + -1;" (assignment_expression "param_1[0x3c] = cVar1 + -1" (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (binary_expression "cVar1 + -1" (identifier "cVar1") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);" (assignment_expression "uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (* "*") (cast_expression "(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + (char)(cVar1 + -1) * 4 + 0x70)" (( "(") (binary_expression "param_1 + (char)(cVar1 + -1) * 4 + 0x70" (binary_expression "param_1 + (char)(cVar1 + -1) * 4" (identifier "param_1") (+ "+") (binary_expression "(char)(cVar1 + -1) * 4" (cast_expression "(char)(cVar1 + -1)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(cVar1 + -1)" (( "(") (binary_expression "cVar1 + -1" (identifier "cVar1") (+ "+") (number_literal "-1")) () ")"))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x6c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x6c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x6c)" (* "*") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (iVar8 != 0) goto LAB_00066ea6;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00066ea6;" (goto "goto") (statement_identifier "LAB_00066ea6") (; ";"))) (expression_statement "iVar12 = *(int *)(uVar6 + 0x14);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x14)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(uVar6 + 0x14)" (* "*") (cast_expression "(int *)(uVar6 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x14)" (( "(") (binary_expression "uVar6 + 0x14" (identifier "uVar6") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (for_statement "for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;\n      pcVar7 = *(char **)(pcVar7 + 0x18)) {\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" (for "for") (( "(") (assignment_expression "pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8)" (identifier "pcVar7") (= "=") (pointer_expression "*(char **)(*(int *)(param_1 + 0x14) + 8)" (* "*") (cast_expression "(char **)(*(int *)(param_1 + 0x14) + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x14) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x14) + 8" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";") (binary_expression "pcVar7 != (char *)0x0" (identifier "pcVar7") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "pcVar7 = *(char **)(pcVar7 + 0x18)" (identifier "pcVar7") (= "=") (pointer_expression "*(char **)(pcVar7 + 0x18)" (* "*") (cast_expression "(char **)(pcVar7 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar7 + 0x18)" (( "(") (binary_expression "pcVar7 + 0x18" (identifier "pcVar7") (+ "+") (number_literal "0x18")) () ")"))))) () ")") (compound_statement "{\n    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }\n  }" ({ "{") (if_statement "if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }" (if "if") (parenthesized_expression "(((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c)))" (( "(") (binary_expression "((pcVar7 != param_1) && (*pcVar7 == '\0')) &&\n       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))" (parenthesized_expression "((pcVar7 != param_1) && (*pcVar7 == '\0'))" (( "(") (binary_expression "(pcVar7 != param_1) && (*pcVar7 == '\0')" (parenthesized_expression "(pcVar7 != param_1)" (( "(") (binary_expression "pcVar7 != param_1" (identifier "pcVar7") (!= "!=") (identifier "param_1")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar7 == '\0')" (( "(") (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))" (( "(") (binary_expression "*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c)" (pointer_expression "*(int *)(pcVar7 + 0x6c)" (* "*") (cast_expression "(int *)(pcVar7 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar7 + 0x6c)" (( "(") (binary_expression "pcVar7 + 0x6c" (identifier "pcVar7") (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (pointer_expression "*(int *)(param_1 + 0x6c)" (* "*") (cast_expression "(int *)(param_1 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      iVar8 = FUN_000383f0();\n      if (iVar8 != 0) goto LAB_00066ea6;\n      break;\n    }" ({ "{") (expression_statement "iVar8 = FUN_000383f0();" (assignment_expression "iVar8 = FUN_000383f0()" (identifier "iVar8") (= "=") (call_expression "FUN_000383f0()" (identifier "FUN_000383f0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 != 0) goto LAB_00066ea6;" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00066ea6;" (goto "goto") (statement_identifier "LAB_00066ea6") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74 = (byte *)0x0;" (assignment_expression "local_74 = (byte *)0x0" (identifier "local_74") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar12 = *(int *)(uVar6 + 0x34);" (assignment_expression "iVar12 = *(int *)(uVar6 + 0x34)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(uVar6 + 0x34)" (* "*") (cast_expression "(int *)(uVar6 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x34)" (( "(") (binary_expression "uVar6 + 0x34" (identifier "uVar6") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_7c = FUN_0005f680();" (assignment_expression "local_7c = FUN_0005f680()" (identifier "local_7c") (= "=") (call_expression "FUN_0005f680()" (identifier "FUN_0005f680") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_7c != 0) goto LAB_00066e83;" (if "if") (parenthesized_expression "(local_7c != 0)" (( "(") (binary_expression "local_7c != 0" (identifier "local_7c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00066e83;" (goto "goto") (statement_identifier "LAB_00066e83") (; ";"))) (expression_statement "local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);" (assignment_expression "local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0)" (identifier "local_7c") (= "=") (call_expression "FUN_000634d0(*(undefined4 *)(uVar6 + 4),0)" (identifier "FUN_000634d0") (argument_list "(*(undefined4 *)(uVar6 + 4),0)" (( "(") (pointer_expression "*(undefined4 *)(uVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 4)" (( "(") (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_7c == 0) {\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }\n  else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" (if "if") (parenthesized_expression "(local_7c == 0)" (( "(") (binary_expression "local_7c == 0" (identifier "local_7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00064080();\n    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;\nLAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }\n  }" ({ "{") (expression_statement "FUN_00064080();" (call_expression "FUN_00064080()" (identifier "FUN_00064080") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;" (if "if") (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" (( "(") (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" (* "*") (cast_expression "(char *)(iVar12 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x11)" (( "(") (binary_expression "iVar12 + 0x11" (identifier "iVar12") (+ "+") (number_literal "0x11")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00066f10;" (goto "goto") (statement_identifier "LAB_00066f10") (; ";"))) (labeled_statement "LAB_00066f2a:\n    if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" (statement_identifier "LAB_00066f2a") (: ":") (if_statement "if (local_7c == 0) {\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" (if "if") (parenthesized_expression "(local_7c == 0)" (( "(") (binary_expression "local_7c == 0" (identifier "local_7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      uVar11 = uVar10 * 2;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }\n      uVar11 = uVar10 * 4;\n      if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }\n      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);\n      FUN_00038500();\n      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;\n      *(uint *)(param_1 + 0x74) = local_78;\n      uVar11 = local_78;\n      goto LAB_00066fb5;\n    }" ({ "{") (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" (identifier "uVar10") (= "=") (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(uVar6 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar10 * 2;" (assignment_expression "uVar11 = uVar10 * 2" (identifier "uVar11") (= "=") (binary_expression "uVar10 * 2" (identifier "uVar10") (* "*") (number_literal "2"))) (; ";")) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" (if "if") (parenthesized_expression "(uVar11 < 4)" (( "(") (binary_expression "uVar11 < 4" (identifier "uVar11") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }\n      }" ({ "{") (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);\n          if ((uVar11 & 2) == 0) goto LAB_00066f67;\n          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);\n          uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n        }" ({ "{") (expression_statement "*(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);" (assignment_expression "*(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c)" (pointer_expression "*(undefined1 *)(local_78 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(local_78 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x1c)" (( "(") (binary_expression "local_78 + 0x1c" (identifier "local_78") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(uVar6 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(uVar6 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1c)" (( "(") (binary_expression "uVar6 + 0x1c" (identifier "uVar6") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if ((uVar11 & 2) == 0) goto LAB_00066f67;" (if "if") (parenthesized_expression "((uVar11 & 2) == 0)" (( "(") (binary_expression "(uVar11 & 2) == 0" (parenthesized_expression "(uVar11 & 2)" (( "(") (binary_expression "uVar11 & 2" (identifier "uVar11") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00066f67;" (goto "goto") (statement_identifier "LAB_00066f67") (; ";"))) (expression_statement "*(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);" (assignment_expression "*(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11)" (pointer_expression "*(undefined2 *)(local_78 + 0x1a + uVar11)" (* "*") (cast_expression "(undefined2 *)(local_78 + 0x1a + uVar11)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x1a + uVar11)" (( "(") (binary_expression "local_78 + 0x1a + uVar11" (binary_expression "local_78 + 0x1a" (identifier "local_78") (+ "+") (number_literal "0x1a")) (+ "+") (identifier "uVar11")) () ")")))) (= "=") (pointer_expression "*(undefined2 *)(uVar6 + 0x1a + uVar11)" (* "*") (cast_expression "(undefined2 *)(uVar6 + 0x1a + uVar11)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1a + uVar11)" (( "(") (binary_expression "uVar6 + 0x1a + uVar11" (binary_expression "uVar6 + 0x1a" (identifier "uVar6") (+ "+") (number_literal "0x1a")) (+ "+") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" (identifier "uVar10") (= "=") (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(uVar6 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" (else "else") (compound_statement "{\n        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);\n        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);\n        iVar12 = (local_78 + 0x1c) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);\n        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\nLAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);\n      }" ({ "{") (expression_statement "*(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);" (assignment_expression "*(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c)" (pointer_expression "*(undefined4 *)(local_78 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(local_78 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x1c)" (( "(") (binary_expression "local_78 + 0x1c" (identifier "local_78") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(uVar6 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1c)" (( "(") (binary_expression "uVar6 + 0x1c" (identifier "uVar6") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);" (assignment_expression "*(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11)" (pointer_expression "*(undefined4 *)(local_78 + 0x18 + uVar11)" (* "*") (cast_expression "(undefined4 *)(local_78 + 0x18 + uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x18 + uVar11)" (( "(") (binary_expression "local_78 + 0x18 + uVar11" (binary_expression "local_78 + 0x18" (identifier "local_78") (+ "+") (number_literal "0x18")) (+ "+") (identifier "uVar11")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(uVar6 + 0x18 + uVar11)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 0x18 + uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x18 + uVar11)" (( "(") (binary_expression "uVar6 + 0x18 + uVar11" (binary_expression "uVar6 + 0x18" (identifier "uVar6") (+ "+") (number_literal "0x18")) (+ "+") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc)" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)(local_78 + 0x20 & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x20 & 0xfffffffc)" (( "(") (binary_expression "local_78 + 0x20 & 0xfffffffc" (binary_expression "local_78 + 0x20" (identifier "local_78") (+ "+") (number_literal "0x20")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "iVar12 = (local_78 + 0x1c) - (int)puVar16;" (assignment_expression "iVar12 = (local_78 + 0x1c) - (int)puVar16" (identifier "iVar12") (= "=") (binary_expression "(local_78 + 0x1c) - (int)puVar16" (parenthesized_expression "(local_78 + 0x1c)" (( "(") (binary_expression "local_78 + 0x1c" (identifier "local_78") (+ "+") (number_literal "0x1c")) () ")")) (- "-") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")))) (; ";")) (expression_statement "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);" (assignment_expression "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12)" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((undefined1 *)(uVar6 + 0x1c) + -iVar12)" (( "(") (binary_expression "(undefined1 *)(uVar6 + 0x1c) + -iVar12" (cast_expression "(undefined1 *)(uVar6 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x1c)" (( "(") (binary_expression "uVar6 + 0x1c" (identifier "uVar6") (+ "+") (number_literal "0x1c")) () ")"))) (+ "+") (unary_expression "-iVar12" (- "-") (identifier "iVar12"))) () ")")))) (; ";")) (for_statement "for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" (for "for") (( "(") (assignment_expression "uVar11 = uVar11 + iVar12 >> 2" (identifier "uVar11") (= "=") (binary_expression "uVar11 + iVar12 >> 2" (binary_expression "uVar11 + iVar12" (identifier "uVar11") (+ "+") (identifier "iVar12")) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" ({ "{") (expression_statement "*puVar16 = *puVar13;" (assignment_expression "*puVar16 = *puVar13" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar13 = puVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar20 * -2 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (uint)bVar20 * -2 + 1" (binary_expression "puVar13 + (uint)bVar20 * -2" (identifier "puVar13") (+ "+") (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar16 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar20 * -2 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + (uint)bVar20 * -2 + 1" (binary_expression "puVar16 + (uint)bVar20 * -2" (identifier "puVar16") (+ "+") (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (labeled_statement "LAB_00066f67:\n        uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (statement_identifier "LAB_00066f67") (: ":") (expression_statement "uVar10 = (uint)*(byte *)(uVar6 + 0xc);" (assignment_expression "uVar10 = (uint)*(byte *)(uVar6 + 0xc)" (identifier "uVar10") (= "=") (binary_expression "(uint)*(byte *)(uVar6 + 0xc)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(uVar6 + 0xc)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "uVar11 = uVar10 * 4;" (assignment_expression "uVar11 = uVar10 * 4" (identifier "uVar11") (= "=") (binary_expression "uVar10 * 4" (identifier "uVar10") (* "*") (number_literal "4"))) (; ";")) (if_statement "if (uVar11 < 4) {\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }\n      else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" (if "if") (parenthesized_expression "(uVar11 < 4)" (( "(") (binary_expression "uVar11 < 4" (identifier "uVar11") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n        if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }\n      }" ({ "{") (if_statement "if (uVar10 != 0) {\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }" (if "if") (parenthesized_expression "(uVar10 != 0)" (( "(") (binary_expression "uVar10 != 0" (identifier "uVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);\n        }" ({ "{") (expression_statement "*(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);" (assignment_expression "*(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24)" (pointer_expression "*(undefined1 *)(local_78 + 0x24)" (* "*") (cast_expression "(undefined1 *)(local_78 + 0x24)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x24)" (( "(") (binary_expression "local_78 + 0x24" (identifier "local_78") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(uVar6 + 0x24)" (* "*") (cast_expression "(undefined1 *)(uVar6 + 0x24)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x24)" (( "(") (binary_expression "uVar6 + 0x24" (identifier "uVar6") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" (else "else") (compound_statement "{\n        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);\n        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);\n        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);\n        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;\n        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);\n        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }\n      }" ({ "{") (expression_statement "*(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);" (assignment_expression "*(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24)" (pointer_expression "*(undefined4 *)(local_78 + 0x24)" (* "*") (cast_expression "(undefined4 *)(local_78 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x24)" (( "(") (binary_expression "local_78 + 0x24" (identifier "local_78") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(uVar6 + 0x24)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x24)" (( "(") (binary_expression "uVar6 + 0x24" (identifier "uVar6") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);" (assignment_expression "*(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11)" (pointer_expression "*(undefined4 *)(local_78 + 0x20 + uVar11)" (* "*") (cast_expression "(undefined4 *)(local_78 + 0x20 + uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x20 + uVar11)" (( "(") (binary_expression "local_78 + 0x20 + uVar11" (binary_expression "local_78 + 0x20" (identifier "local_78") (+ "+") (number_literal "0x20")) (+ "+") (identifier "uVar11")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(uVar6 + 0x20 + uVar11)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 0x20 + uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x20 + uVar11)" (( "(") (binary_expression "uVar6 + 0x20 + uVar11" (binary_expression "uVar6 + 0x20" (identifier "uVar6") (+ "+") (number_literal "0x20")) (+ "+") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);" (assignment_expression "puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc)" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)(local_78 + 0x28 & 0xfffffffc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0x28 & 0xfffffffc)" (( "(") (binary_expression "local_78 + 0x28 & 0xfffffffc" (binary_expression "local_78 + 0x28" (identifier "local_78") (+ "+") (number_literal "0x28")) (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "iVar12 = (int)(local_78 + 0x24) - (int)puVar16;" (assignment_expression "iVar12 = (int)(local_78 + 0x24) - (int)puVar16" (identifier "iVar12") (= "=") (binary_expression "(int)(local_78 + 0x24) - (int)puVar16" (cast_expression "(int)(local_78 + 0x24)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_78 + 0x24)" (( "(") (binary_expression "local_78 + 0x24" (identifier "local_78") (+ "+") (number_literal "0x24")) () ")"))) (- "-") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")))) (; ";")) (expression_statement "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);" (assignment_expression "puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12)" (identifier "puVar13") (= "=") (cast_expression "(undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((undefined1 *)(uVar6 + 0x24) + -iVar12)" (( "(") (binary_expression "(undefined1 *)(uVar6 + 0x24) + -iVar12" (cast_expression "(undefined1 *)(uVar6 + 0x24)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x24)" (( "(") (binary_expression "uVar6 + 0x24" (identifier "uVar6") (+ "+") (number_literal "0x24")) () ")"))) (+ "+") (unary_expression "-iVar12" (- "-") (identifier "iVar12"))) () ")")))) (; ";")) (for_statement "for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" (for "for") (( "(") (assignment_expression "uVar11 = iVar12 + uVar11 >> 2" (identifier "uVar11") (= "=") (binary_expression "iVar12 + uVar11 >> 2" (binary_expression "iVar12 + uVar11" (identifier "iVar12") (+ "+") (identifier "uVar11")) (>> ">>") (number_literal "2"))) (; ";") (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n          *puVar16 = *puVar13;\n          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;\n          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;\n        }" ({ "{") (expression_statement "*puVar16 = *puVar13;" (assignment_expression "*puVar16 = *puVar13" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar13 = puVar13 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar20 * -2 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (uint)bVar20 * -2 + 1" (binary_expression "puVar13 + (uint)bVar20 * -2" (identifier "puVar13") (+ "+") (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar16 = puVar16 + (uint)bVar20 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (uint)bVar20 * -2 + 1" (identifier "puVar16") (= "=") (binary_expression "puVar16 + (uint)bVar20 * -2 + 1" (binary_expression "puVar16 + (uint)bVar20 * -2" (identifier "puVar16") (+ "+") (binary_expression "(uint)bVar20 * -2" (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "*(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);" (assignment_expression "*(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc)" (pointer_expression "*(undefined1 *)(local_78 + 0xc)" (* "*") (cast_expression "(undefined1 *)(local_78 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_78 + 0xc)" (( "(") (binary_expression "local_78 + 0xc" (identifier "local_78") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined1 *)(uVar6 + 0xc)" (* "*") (cast_expression "(undefined1 *)(uVar6 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0xc)" (( "(") (binary_expression "uVar6 + 0xc" (identifier "uVar6") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "FUN_00038500();" (call_expression "FUN_00038500()" (identifier "FUN_00038500") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;" (assignment_expression "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =\n           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18" (pointer_expression "*(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" (* "*") (cast_expression "(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9))" (( "(") (binary_expression "*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)" (binary_expression "*(int *)(uVar6 + 0x38) + 8" (pointer_expression "*(int *)(uVar6 + 0x38)" (* "*") (cast_expression "(int *)(uVar6 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 0x38)" (( "(") (binary_expression "uVar6 + 0x38" (identifier "uVar6") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "8")) (+ "+") (binary_expression "(uint)*(byte *)(uVar6 + 9)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(uVar6 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 9)" (( "(") (binary_expression "uVar6 + 9" (identifier "uVar6") (+ "+") (number_literal "9")) () ")"))))) () ")")))) (= "=") (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18" (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |\n           ((uint)local_74 & 0xff00) << 8" (binary_expression "(uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8" (binary_expression "(uint)local_74 >> 0x18" (cast_expression "(uint)local_74" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_74")) (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "((uint)local_74 & 0xff0000) >> 8" (parenthesized_expression "((uint)local_74 & 0xff0000)" (( "(") (binary_expression "(uint)local_74 & 0xff0000" (cast_expression "(uint)local_74" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_74")) (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "((uint)local_74 & 0xff00) << 8" (parenthesized_expression "((uint)local_74 & 0xff00)" (( "(") (binary_expression "(uint)local_74 & 0xff00" (cast_expression "(uint)local_74" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_74")) (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(int)local_74 << 0x18" (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x74) = local_78;" (assignment_expression "*(uint *)(param_1 + 0x74) = local_78" (pointer_expression "*(uint *)(param_1 + 0x74)" (* "*") (cast_expression "(uint *)(param_1 + 0x74)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")")))) (= "=") (identifier "local_78")) (; ";")) (expression_statement "uVar11 = local_78;" (assignment_expression "uVar11 = local_78" (identifier "uVar11") (= "=") (identifier "local_78")) (; ";")) (goto_statement "goto LAB_00066fb5;" (goto "goto") (statement_identifier "LAB_00066fb5") (; ";")) (} "}")))) (} "}")) (else_clause "else if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" (else "else") (if_statement "if (*(char *)(iVar12 + 0x11) != '\0') {\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar12 + 0x11) != '\0')" (( "(") (binary_expression "*(char *)(iVar12 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar12 + 0x11)" (* "*") (cast_expression "(char *)(iVar12 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0x11)" (( "(") (binary_expression "iVar12 + 0x11" (identifier "iVar12") (+ "+") (number_literal "0x11")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);\n    goto LAB_00066f2a;\n  }" ({ "{") (labeled_statement "LAB_00066f10:\n    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);" (statement_identifier "LAB_00066f10") (: ":") (expression_statement "FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);" (call_expression "FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c)" (identifier "FUN_00063d70") (argument_list "(*(undefined4 *)(uVar6 + 4),&local_7c)" (( "(") (pointer_expression "*(undefined4 *)(uVar6 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar6 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + 4)" (( "(") (binary_expression "uVar6 + 4" (identifier "uVar6") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_7c" (& "&") (identifier "local_7c")) () ")"))) (; ";"))) (goto_statement "goto LAB_00066f2a;" (goto "goto") (statement_identifier "LAB_00066f2a") (; ";")) (} "}"))))) (labeled_statement "LAB_00066e83:\n  param_1[0x74] = '\0';" (statement_identifier "LAB_00066e83") (: ":") (expression_statement "param_1[0x74] = '\0';" (assignment_expression "param_1[0x74] = '\0'" (subscript_expression "param_1[0x74]" (identifier "param_1") ([ "[") (number_literal "0x74") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";"))) (expression_statement "param_1[0x75] = '\0';" (assignment_expression "param_1[0x75] = '\0'" (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[0x76] = '\0';" (assignment_expression "param_1[0x76] = '\0'" (subscript_expression "param_1[0x76]" (identifier "param_1") ([ "[") (number_literal "0x76") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[0x77] = '\0';" (assignment_expression "param_1[0x77] = '\0'" (subscript_expression "param_1[0x77]" (identifier "param_1") ([ "[") (number_literal "0x77") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar8 = local_7c;" (assignment_expression "iVar8 = local_7c" (identifier "iVar8") (= "=") (identifier "local_7c")) (; ";")) (if_statement "if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }" (if "if") (parenthesized_expression "((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0))" (( "(") (binary_expression "(local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)" (parenthesized_expression "(local_78 == 0)" (( "(") (binary_expression "local_78 == 0" (identifier "local_78") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(FUN_0001f150(), iVar8 = local_7c, local_7c != 0)" (( "(") (comma_expression "FUN_0001f150(), iVar8 = local_7c, local_7c != 0" (call_expression "FUN_0001f150()" (identifier "FUN_0001f150") (argument_list "()" (( "(") () ")"))) (, ",") (comma_expression "iVar8 = local_7c, local_7c != 0" (assignment_expression "iVar8 = local_7c" (identifier "iVar8") (= "=") (identifier "local_7c")) (, ",") (binary_expression "local_7c != 0" (identifier "local_7c") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\nLAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }\n    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }\n                    \n    FUN_000a9ea0();\n  }" ({ "{") (labeled_statement "LAB_00066ea6:\n    if (local_9c != 0) {\n      FUN_00026f80();\n    }" (statement_identifier "LAB_00066ea6") (: ":") (if_statement "if (local_9c != 0) {\n      FUN_00026f80();\n    }" (if "if") (parenthesized_expression "(local_9c != 0)" (( "(") (binary_expression "local_9c != 0" (identifier "local_9c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00026f80();\n    }" ({ "{") (expression_statement "FUN_00026f80();" (call_expression "FUN_00026f80()" (identifier "FUN_00026f80") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n      return iVar8;\n    }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n      return iVar8;\n    }" ({ "{") (return_statement "return iVar8;" (return "return") (identifier "iVar8") (; ";")) (} "}"))) (expression_statement "FUN_000a9ea0();" (call_expression "FUN_000a9ea0()" (identifier "FUN_000a9ea0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar11 = *(uint *)(param_1 + 0x74);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x74)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(param_1 + 0x74)" (* "*") (cast_expression "(uint *)(param_1 + 0x74)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x74)" (( "(") (binary_expression "param_1 + 0x74" (identifier "param_1") (+ "+") (number_literal "0x74")) () ")"))))) (; ";")) (labeled_statement "LAB_00066fb5:\n  *(uint *)(param_1 + 0x70) = uVar6;" (statement_identifier "LAB_00066fb5") (: ":") (expression_statement "*(uint *)(param_1 + 0x70) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x70) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x70)" (* "*") (cast_expression "(uint *)(param_1 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (= "=") (identifier "uVar6")) (; ";"))) (expression_statement "param_1[0x3c] = '\x01';" (assignment_expression "param_1[0x3c] = '\x01'" (subscript_expression "param_1[0x3c]" (identifier "param_1") ([ "[") (number_literal "0x3c") (] "]")) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "param_1[0x3e] = '\0';" (assignment_expression "param_1[0x3e] = '\0'" (subscript_expression "param_1[0x3e]" (identifier "param_1") ([ "[") (number_literal "0x3e") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[0x3f] = '\0';" (assignment_expression "param_1[0x3f] = '\0'" (subscript_expression "param_1[0x3f]" (identifier "param_1") ([ "[") (number_literal "0x3f") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[0x40] = '\0';" (assignment_expression "param_1[0x40] = '\0'" (subscript_expression "param_1[0x40]" (identifier "param_1") ([ "[") (number_literal "0x40") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[0x41] = '\0';" (assignment_expression "param_1[0x41] = '\0'" (subscript_expression "param_1[0x41]" (identifier "param_1") ([ "[") (number_literal "0x41") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x6c) = uVar11;" (assignment_expression "*(uint *)(param_1 + 0x6c) = uVar11" (pointer_expression "*(uint *)(param_1 + 0x6c)" (* "*") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (goto_statement "goto LAB_00066d0d;" (goto "goto") (statement_identifier "LAB_00066d0d") (; ";")) (} "}")))

int __regparm3 function_1(type_1 *var_30)

{
  int var_37;
  type_2 bVar2;
  type_3 var_8;
  type_4 var_4;
  type_5 *pFrom;
  type_1 *var_29;
  type_6 *pBVar6;
  void *var_11;
  type_2 *pbVar7;
  char cVar8;
  int var_6;
  type_7 var_32;
  type_7 var_33;
  type_5 *pMVar12;
  type_8 *var_18;
  int var_2;
  type_9 *var_34;
  type_2 *var_24;
  type_2 *pbVar17;
  type_9 *var_35;
  type_2 *var_22;
  int var_1;
  type_2 bVar20;
  type_8 *in_stack_ffffff4c;
  type_8 PVar21;
  int in_stack_ffffff54;
  void *var_36;
  type_3 var_20;
  type_5 *var_28;
  int var_15;
  type_8 var_27;
  type_10 *var_25;
  type_11 b;
  type_10 var_23 [13];
  
  bVar20 = 0;
  pMVar12 = var_30->pPage;
  var_37 = *(int *)(var_1 + 0x14);
  var_36 = (void *)0x0;
  var_4 = var_30->pBt->usableSize;
LAB_00066d0d:
  var_2 = pMVar12->nFree;
  pFrom = pMVar12;
  var_11 = var_36;
  do {
    var_36 = var_11;
    if ((var_2 < 0) && (var_2 = var_3(pFrom), var_2 != 0)) {
LAB_00066e17:
      var_6 = 0;
      goto LAB_00066ea6;
    }
    if (pFrom->nOverflow == '\0') {
      if ((pFrom->nFree <= (int)((var_4 * 2) / 3)) || (var_2 = (int)var_30->iPage, var_2 == 0))
      goto LAB_00066e17;
    }
    else {
      var_2 = (int)var_30->iPage;
      if (var_2 == 0) break;
    }
    pMVar12 = var_30->apPage[var_2 + -1];
    var_8 = var_30->aiIdx[var_2 + -1];
    PVar21 = 0x66d55;
    var_6 = var_5(pMVar12->pDbPage);
    if (var_6 != 0) {
LAB_00066ff0:
      pFrom->nOverflow = '\0';
      var_7(pFrom->pDbPage);
      cVar8 = var_30->iPage + -1;
      var_30->iPage = cVar8;
      var_30->pPage = var_30->apPage[cVar8];
      goto LAB_00066ea6;
    }
    if (pMVar12->nFree < 0) {
      PVar21 = 0x66fe2;
      var_6 = var_3(pMVar12);
      if (var_6 != 0) goto LAB_00066ff0;
    }
    if ((((pFrom->intKeyLeaf == '\0') || (pFrom->nOverflow != '\x01')) ||
        (pFrom->aiOvfl[0] != pFrom->nCell)) || ((pMVar12->pgno == 1 || (var_8 != pMVar12->nCell))))
    {
      var_6 = 0x66d89;
      var_36 = var_9(var_30->pBt->pageSize);
      var_6 = var_10((type_5 *)(type_7)(var_2 == 1),var_30->hints & 1,(type_10 *)in_stack_ffffff4c
                              ,var_6,in_stack_ffffff54);
      if (var_11 != (void *)0x0) {
        var_12(var_11);
      }
    }
    else if (pFrom->aiOvfl[0] == 0) {
      var_6 = var_13(0x1185d);
    }
    else {
      pBVar6 = pFrom->pBt;
      var_15 = var_14((type_6 *)0x0,(type_5 **)0x0,in_stack_ffffff4c,PVar21,
                             (type_10)in_stack_ffffff54);
      var_6 = var_15;
      if (var_15 == 0) {
        var_25 = pFrom->apOvfl[0];
        var_20 = (*pFrom->xCellSize)(pFrom,var_25);
        var_16(var_28,0xd);
        b.nCell = 1;
        b.var_20 = &var_20;
        b.apEnd[0] = pFrom->aDataEnd;
        b.ixNx[0] = 2;
        b.pRef = pFrom;
        b.apCell = &var_25;
        var_18 = (type_8 *)var_17(&b,0,1,var_28);
        var_15 = (int)var_18;
        if (var_18 == (type_8 *)0x0) {
          var_28->nFree = ((-2 - (type_7)var_20) - (type_7)var_28->cellOffset) + pBVar6->usableSize;
          if (pBVar6->autoVacuum != '\0') {
            var_19(pBVar6,var_27,'\x05',pMVar12->pgno,&var_15);
            in_stack_ffffff4c = var_18;
            if (var_28->minLocal < var_20) {
              var_21(var_28,(type_5 *)&var_28->aDataEnd,var_25,&var_15);
              in_stack_ffffff4c = var_18;
            }
          }
          var_24 = pFrom->aData +
                    ((*(type_12 *)(pFrom->aCellIdx + (type_7)pFrom->nCell * 2 + -2) << 8 |
                     *(type_12 *)(pFrom->aCellIdx + (type_7)pFrom->nCell * 2 + -2) >> 8) &
                    pFrom->maskPage);
          do {
            var_22 = var_24;
            var_24 = var_22 + 1;
          } while ((*var_22 >> 7 &
                   var_22 + 1 <
                   pFrom->aData +
                   ((*(type_12 *)(pFrom->aCellIdx + (type_7)pFrom->nCell * 2 + -2) << 8 |
                    *(type_12 *)(pFrom->aCellIdx + (type_7)pFrom->nCell * 2 + -2) >> 8) &
                   pFrom->maskPage) + 9) != 0);
          var_24 = var_23 + 4;
          pbVar7 = var_22 + 2;
          do {
            var_25 = pbVar7;
            pbVar17 = var_24 + 1;
            bVar2 = var_25[-1];
            *var_24 = bVar2;
            if (var_22 + 10 <= var_25) break;
            var_24 = pbVar17;
            pbVar7 = var_25 + 1;
          } while ((char)bVar2 < '\0');
          if (var_15 == 0) {
            in_stack_ffffff4c = (type_8 *)pFrom->pgno;
            var_26(pMVar12,(type_7)pMVar12->nCell,var_23,
                       (int)pbVar17 - (int)var_23,(type_10 *)0x0,(type_8)in_stack_ffffff4c,&var_15)
            ;
          }
          *(type_8 *)(pMVar12->aData + pMVar12->hdrOffset + 8) =
               var_27 >> 0x18 | (var_27 & 0xff0000) >> 8 | (var_27 & 0xff00) << 8 |
               var_27 << 0x18;
        }
        var_6 = var_15;
        if (var_28 != (type_5 *)0x0) {
          var_7(var_28->pDbPage);
          var_6 = var_15;
        }
      }
    }
    pFrom->nOverflow = '\0';
    var_7(pFrom->pDbPage);
    cVar8 = var_30->iPage + -1;
    var_30->iPage = cVar8;
    pFrom = var_30->apPage[cVar8];
    var_30->pPage = pFrom;
    if (var_6 != 0) goto LAB_00066ea6;
    var_2 = pFrom->nFree;
    var_11 = var_36;
  } while( true );
  for (var_29 = var_30->pBt->pCursor; var_29 != (type_1 *)0x0; var_29 = var_29->pNext) {
    if (((var_29 != var_30) && (var_29->eState == '\0')) && (var_29->pPage == var_30->pPage)) {
      var_6 = var_13(0x11c93);
      if (var_6 != 0) goto LAB_00066ea6;
      break;
    }
  }
  var_27 = 0;
  var_25 = (type_10 *)0x0;
  pBVar6 = pFrom->pBt;
  PVar21 = 0x66e77;
  var_15 = var_5(pFrom->pDbPage);
  if (var_15 != 0) goto LAB_00066e83;
  var_15 = var_14((type_6 *)pFrom->pgno,(type_5 **)0x0,in_stack_ffffff4c,PVar21,
                         (type_10)in_stack_ffffff54);
  if (var_15 == 0) {
    var_31(pFrom,(type_5 *)var_27,&var_15);
    if (pBVar6->autoVacuum != '\0') goto LAB_00066f10;
LAB_00066f2a:
    if (var_15 == 0) {
      var_32 = (type_7)pFrom->nOverflow;
      var_33 = var_32 * 2;
      if (var_33 < 4) {
        if (var_32 != 0) {
          *(char *)(var_27 + 0x1c) = (char)pFrom->aiOvfl[0];
          if ((var_33 & 2) == 0) goto LAB_00066f67;
          *(type_3 *)(var_27 + 0x1a + var_33) = pFrom->aiOvfl[var_32 - 1];
          var_32 = (type_7)pFrom->nOverflow;
        }
      }
      else {
        *(type_9 *)(var_27 + 0x1c) = *(type_9 *)pFrom->aiOvfl;
        *(type_9 *)(var_27 + 0x18 + var_33) = *(type_9 *)(pFrom->aiOvfl + (var_32 - 2));
        var_35 = (type_9 *)(var_27 + 0x20 & 0xfffffffc);
        var_2 = (var_27 + 0x1c) - (int)var_35;
        var_34 = (type_9 *)((int)pFrom->aiOvfl - var_2);
        for (var_33 = var_33 + var_2 >> 2; var_33 != 0; var_33 = var_33 - 1) {
          *var_35 = *var_34;
          var_34 = var_34 + (type_7)bVar20 * -2 + 1;
          var_35 = var_35 + (type_7)bVar20 * -2 + 1;
        }
LAB_00066f67:
        var_32 = (type_7)pFrom->nOverflow;
      }
      var_33 = var_32 * 4;
      if (var_33 < 4) {
        if (var_32 != 0) {
          *(type_13 *)(var_27 + 0x24) = *(type_13 *)pFrom->apOvfl;
        }
      }
      else {
        *(type_10 **)(var_27 + 0x24) = pFrom->apOvfl[0];
        *(type_10 **)(var_27 + 0x20 + var_33) = pFrom->apOvfl[var_32 - 1];
        var_35 = (type_9 *)(var_27 + 0x28 & 0xfffffffc);
        var_2 = (int)(var_27 + 0x24) - (int)var_35;
        var_34 = (type_9 *)((int)pFrom->apOvfl - var_2);
        for (var_33 = var_2 + var_33 >> 2; var_33 != 0; var_33 = var_33 - 1) {
          *var_35 = *var_34;
          var_34 = var_34 + (type_7)bVar20 * -2 + 1;
          var_35 = var_35 + (type_7)bVar20 * -2 + 1;
        }
      }
      *(type_10 *)(var_27 + 0xc) = pFrom->nOverflow;
      var_16(pFrom,**(type_2 **)(var_27 + 0x38) & 0xfffffff7);
      *(type_7 *)(pFrom->aData + pFrom->hdrOffset + 8) =
           (type_7)var_25 >> 0x18 | ((type_7)var_25 & 0xff0000) >> 8 | ((type_7)var_25 & 0xff00) << 8 |
           (int)var_25 << 0x18;
      var_30->apPage[1] = (type_5 *)var_27;
      pMVar12 = (type_5 *)var_27;
      goto LAB_00066fb5;
    }
  }
  else if (pBVar6->autoVacuum != '\0') {
LAB_00066f10:
    var_19(pBVar6,(type_8)var_25,'\x05',pFrom->pgno,&var_15);
    goto LAB_00066f2a;
  }
LAB_00066e83:
  var_30->apPage[1] = (type_5 *)0x0;
  var_6 = var_15;
  if ((var_27 == 0) ||
     (var_7(*(type_14 **)(var_27 + 0x48)), var_6 = var_15, var_15 != 0)) {
LAB_00066ea6:
    if (var_36 != (void *)0x0) {
      var_12(var_36);
    }
    if (var_37 == *(int *)(var_1 + 0x14)) {
      return var_6;
    }
                    /* WARNING: Subroutine does not return */
    var_38();
  }
  pMVar12 = var_30->apPage[1];
LAB_00066fb5:
  var_30->apPage[0] = pFrom;
  var_30->iPage = '\x01';
  var_30->ix = 0;
  var_30->aiIdx[0] = 0;
  var_30->pPage = pMVar12;
  goto LAB_00066d0d;
}


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

int __regparm3 MASKED(char *param_1)

{
  char cVar1;
  byte bVar2;
  short sVar3;
  ushort uVar4;
  int iVar5;
  uint uVar6;
  char *pcVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  undefined4 *puVar13;
  byte *pbVar14;
  byte *pbVar15;
  undefined4 *puVar16;
  byte *pbVar17;
  byte *pbVar18;
  int in_GS_OFFSET;
  bool bVar19;
  byte bVar20;
  int local_9c;
  ushort local_82;
  int local_80;
  int local_7c;
  uint local_78;
  byte *local_74;
  undefined4 local_70;
  uint local_6c;
  byte **local_68;
  ushort *local_64;
  undefined4 local_60;
  undefined4 local_48;
  undefined1 local_2d [4];
  byte local_29 [9];
  int local_20;
  
  bVar20 = 0;
  uVar11 = *(uint *)(param_1 + 0x6c);
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_9c = 0;
  iVar5 = *(int *)(*(int *)(param_1 + 0x14) + 0x28);
LAB_00066d0d:
  iVar12 = *(int *)(uVar11 + 0x14);
  uVar6 = uVar11;
  do {
    if ((iVar12 < 0) && (iVar12 = FUN_00038800(), iVar12 != 0)) {
LAB_00066e17:
      iVar8 = 0;
      goto LAB_00066ea6;
    }
    if (*(char *)(uVar6 + 0xc) == '\0') {
      if ((*(int *)(uVar6 + 0x14) <= (int)((uint)(iVar5 * 2) / 3)) ||
         (iVar12 = (int)param_1[0x3c], iVar12 == 0)) goto LAB_00066e17;
    }
    else {
      iVar12 = (int)param_1[0x3c];
      if (iVar12 == 0) break;
    }
    iVar9 = *(int *)(param_1 + iVar12 * 4 + 0x6c);
    sVar3 = *(short *)(param_1 + iVar12 * 2 + 0x3e);
    iVar8 = FUN_0005f680();
    if ((iVar8 != 0) || ((*(int *)(iVar9 + 0x14) < 0 && (iVar8 = FUN_00038800(), iVar8 != 0)))) {
      *(undefined1 *)(uVar6 + 0xc) = 0;
      FUN_0001f150();
      cVar1 = param_1[0x3c];
      param_1[0x3c] = cVar1 + -1;
      *(undefined4 *)(param_1 + 0x6c) = *(undefined4 *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);
      goto LAB_00066ea6;
    }
    if ((((*(char *)(uVar6 + 3) == '\0') || (*(char *)(uVar6 + 0xc) != '\x01')) ||
        (*(short *)(uVar6 + 0x1c) != *(short *)(uVar6 + 0x18))) ||
       ((*(int *)(iVar9 + 4) == 1 || (sVar3 != *(short *)(iVar9 + 0x18))))) {
      iVar9 = FUN_0002df20();
      iVar8 = FUN_000653e0(iVar12 == 1,param_1[3] & 1);
      bVar19 = local_9c != 0;
      local_9c = iVar9;
      if (bVar19) {
        FUN_00026f80();
      }
    }
    else if (*(short *)(uVar6 + 0x1c) == 0) {
      iVar8 = FUN_000383f0();
    }
    else {
      iVar12 = *(int *)(uVar6 + 0x34);
      local_7c = FUN_000634d0(0,0);
      iVar8 = local_7c;
      if (local_7c == 0) {
        local_74 = *(byte **)(uVar6 + 0x24);
        local_82 = (**(code **)(uVar6 + 0x4c))(uVar6,local_74);
        FUN_00038500();
        local_70 = 1;
        local_64 = &local_82;
        local_60 = *(undefined4 *)(uVar6 + 0x3c);
        local_48 = 2;
        local_6c = uVar6;
        local_68 = &local_74;
        local_7c = FUN_000393d0(local_80);
        if (local_7c == 0) {
          *(uint *)(local_80 + 0x14) =
               ((-2 - (uint)local_82) - (uint)*(ushort *)(local_80 + 0x12)) +
               *(int *)(iVar12 + 0x28);
          if (*(char *)(iVar12 + 0x11) != '\0') {
            FUN_00063d70(*(undefined4 *)(iVar9 + 4),&local_7c,0,0);
            if (*(ushort *)(local_80 + 0x10) < local_82) {
              FUN_00063eb0(&local_7c);
            }
          }
          uVar4 = *(ushort *)(*(int *)(uVar6 + 0x40) + -2 + (uint)*(ushort *)(uVar6 + 0x18) * 2);
          pbVar17 = (byte *)((uint)((uVar4 << 8 | uVar4 >> 8) & *(ushort *)(uVar6 + 0x1a)) +
                            *(int *)(uVar6 + 0x38));
          pbVar14 = pbVar17;
          do {
            pbVar18 = pbVar14;
            pbVar14 = pbVar18 + 1;
          } while ((*pbVar18 >> 7 & pbVar18 + 1 < pbVar17 + 9) != 0);
          pbVar14 = local_29;
          pbVar17 = pbVar18 + 2;
          do {
            local_74 = pbVar17;
            pbVar15 = pbVar14 + 1;
            bVar2 = local_74[-1];
            *pbVar14 = bVar2;
            if (pbVar18 + 10 <= local_74) break;
            pbVar14 = pbVar15;
            pbVar17 = local_74 + 1;
          } while ((char)bVar2 < '\0');
          if (local_7c == 0) {
            FUN_00065060((int)pbVar15 - (int)local_2d,0,*(undefined4 *)(uVar6 + 4),&local_7c);
          }
          *(uint *)(*(int *)(iVar9 + 0x38) + 8 + (uint)*(byte *)(iVar9 + 9)) =
               local_78 >> 0x18 | (local_78 & 0xff0000) >> 8 | (local_78 & 0xff00) << 8 |
               local_78 << 0x18;
        }
        iVar8 = local_7c;
        if (local_80 != 0) {
          FUN_0001f150();
          iVar8 = local_7c;
        }
      }
    }
    *(undefined1 *)(uVar6 + 0xc) = 0;
    FUN_0001f150();
    cVar1 = param_1[0x3c];
    param_1[0x3c] = cVar1 + -1;
    uVar6 = *(uint *)(param_1 + (char)(cVar1 + -1) * 4 + 0x70);
    *(uint *)(param_1 + 0x6c) = uVar6;
    if (iVar8 != 0) goto LAB_00066ea6;
    iVar12 = *(int *)(uVar6 + 0x14);
  } while( true );
  for (pcVar7 = *(char **)(*(int *)(param_1 + 0x14) + 8); pcVar7 != (char *)0x0;
      pcVar7 = *(char **)(pcVar7 + 0x18)) {
    if (((pcVar7 != param_1) && (*pcVar7 == '\0')) &&
       (*(int *)(pcVar7 + 0x6c) == *(int *)(param_1 + 0x6c))) {
      iVar8 = FUN_000383f0();
      if (iVar8 != 0) goto LAB_00066ea6;
      break;
    }
  }
  local_78 = 0;
  local_74 = (byte *)0x0;
  iVar12 = *(int *)(uVar6 + 0x34);
  local_7c = FUN_0005f680();
  if (local_7c != 0) goto LAB_00066e83;
  local_7c = FUN_000634d0(*(undefined4 *)(uVar6 + 4),0);
  if (local_7c == 0) {
    FUN_00064080();
    if (*(char *)(iVar12 + 0x11) != '\0') goto LAB_00066f10;
LAB_00066f2a:
    if (local_7c == 0) {
      uVar10 = (uint)*(byte *)(uVar6 + 0xc);
      uVar11 = uVar10 * 2;
      if (uVar11 < 4) {
        if (uVar10 != 0) {
          *(undefined1 *)(local_78 + 0x1c) = *(undefined1 *)(uVar6 + 0x1c);
          if ((uVar11 & 2) == 0) goto LAB_00066f67;
          *(undefined2 *)(local_78 + 0x1a + uVar11) = *(undefined2 *)(uVar6 + 0x1a + uVar11);
          uVar10 = (uint)*(byte *)(uVar6 + 0xc);
        }
      }
      else {
        *(undefined4 *)(local_78 + 0x1c) = *(undefined4 *)(uVar6 + 0x1c);
        *(undefined4 *)(local_78 + 0x18 + uVar11) = *(undefined4 *)(uVar6 + 0x18 + uVar11);
        puVar16 = (undefined4 *)(local_78 + 0x20 & 0xfffffffc);
        iVar12 = (local_78 + 0x1c) - (int)puVar16;
        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x1c) + -iVar12);
        for (uVar11 = uVar11 + iVar12 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
          *puVar16 = *puVar13;
          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;
          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;
        }
LAB_00066f67:
        uVar10 = (uint)*(byte *)(uVar6 + 0xc);
      }
      uVar11 = uVar10 * 4;
      if (uVar11 < 4) {
        if (uVar10 != 0) {
          *(undefined1 *)(local_78 + 0x24) = *(undefined1 *)(uVar6 + 0x24);
        }
      }
      else {
        *(undefined4 *)(local_78 + 0x24) = *(undefined4 *)(uVar6 + 0x24);
        *(undefined4 *)(local_78 + 0x20 + uVar11) = *(undefined4 *)(uVar6 + 0x20 + uVar11);
        puVar16 = (undefined4 *)(local_78 + 0x28 & 0xfffffffc);
        iVar12 = (int)(local_78 + 0x24) - (int)puVar16;
        puVar13 = (undefined4 *)((undefined1 *)(uVar6 + 0x24) + -iVar12);
        for (uVar11 = iVar12 + uVar11 >> 2; uVar11 != 0; uVar11 = uVar11 - 1) {
          *puVar16 = *puVar13;
          puVar13 = puVar13 + (uint)bVar20 * -2 + 1;
          puVar16 = puVar16 + (uint)bVar20 * -2 + 1;
        }
      }
      *(undefined1 *)(local_78 + 0xc) = *(undefined1 *)(uVar6 + 0xc);
      FUN_00038500();
      *(uint *)(*(int *)(uVar6 + 0x38) + 8 + (uint)*(byte *)(uVar6 + 9)) =
           (uint)local_74 >> 0x18 | ((uint)local_74 & 0xff0000) >> 8 |
           ((uint)local_74 & 0xff00) << 8 | (int)local_74 << 0x18;
      *(uint *)(param_1 + 0x74) = local_78;
      uVar11 = local_78;
      goto LAB_00066fb5;
    }
  }
  else if (*(char *)(iVar12 + 0x11) != '\0') {
LAB_00066f10:
    FUN_00063d70(*(undefined4 *)(uVar6 + 4),&local_7c);
    goto LAB_00066f2a;
  }
LAB_00066e83:
  param_1[0x74] = '\0';
  param_1[0x75] = '\0';
  param_1[0x76] = '\0';
  param_1[0x77] = '\0';
  iVar8 = local_7c;
  if ((local_78 == 0) || (FUN_0001f150(), iVar8 = local_7c, local_7c != 0)) {
LAB_00066ea6:
    if (local_9c != 0) {
      FUN_00026f80();
    }
    if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
      return iVar8;
    }
                    /* WARNING: Subroutine does not return */
    FUN_000a9ea0();
  }
  uVar11 = *(uint *)(param_1 + 0x74);
LAB_00066fb5:
  *(uint *)(param_1 + 0x70) = uVar6;
  param_1[0x3c] = '\x01';
  param_1[0x3e] = '\0';
  param_1[0x3f] = '\0';
  param_1[0x40] = '\0';
  param_1[0x41] = '\0';
  *(uint *)(param_1 + 0x6c) = uVar11;
  goto LAB_00066d0d;
}

