
int sqlite3BtreeInsert(BtCursor *pCur,BtreePayload *pX,int flags,int seekResult)

{
  int iVar1;
  Btree *pBVar2;
  BtShared *pBVar3;
  MemPage *pPage;
  u8 *pCell;
  BtShared *pBt;
  undefined4 uVar4;
  Pgno parent;
  BtCursor *pExcept;
  uchar *puVar5;
  int iVar6;
  void *__dest;
  uint extraout_ECX;
  Pgno *pPVar7;
  uint uVar8;
  uint uVar9;
  undefined4 *puVar10;
  uint uVar11;
  Pgno *pPVar12;
  u8 *__dest_00;
  int unaff_EDI;
  Pgno *pPVar13;
  Pgno *__n;
  int in_GS_OFFSET;
  undefined8 uVar14;
  Pgno *pPgno;
  int *in_stack_ffffff60;
  BtCursor *in_stack_ffffff64;
  BtreePayload *in_stack_ffffff68;
  Pgno *local_88;
  void *local_84;
  KeyInfo *local_80;
  uint *local_78;
  size_t local_60;
  int local_50;
  int loc;
  int rc;
  Pgno pgnoOvfl;
  UnpackedRecord r;
  ushort local_30;
  ushort local_2e;
  
  uVar14 = __x86_get_pc_thunk_di();
  puVar10 = (undefined4 *)((ulonglong)uVar14 >> 0x20);
  pExcept = (BtCursor *)uVar14;
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  loc = (int)pCur;
  if (pExcept->eState == '\x04') {
    iVar6 = pExcept->skipNext;
    goto LAB_000a33b0;
  }
  pBVar2 = pExcept->pBtree;
  pBVar3 = pBVar2->pBt;
  if ((pExcept->curFlags & 0x20) != 0) {
    in_stack_ffffff60 = (int *)0xa3643;
    local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);
    iVar6 = local_50;
    if (local_50 != 0) goto LAB_000a33b0;
  }
  if (pExcept->pKeyInfo == (KeyInfo *)0x0) {
    if (pBVar2->hasIncrblobCur != '\0') {
      invalidateIncrblobCursors
                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),
                 pExcept->pgnoRoot,(Btree *)0x0);
    }
    if (((pExcept->curFlags & 2) == 0) ||
       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||
        puVar10[1] != (int)(pExcept->info).nKey)) {
      if (loc == 0) {
        in_stack_ffffff60 = &loc;
        local_50 = sqlite3BtreeMovetoUnpacked
                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],
                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),
                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);
        iVar6 = local_50;
        if (local_50 != 0) goto LAB_000a33b0;
      }
    }
    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))
    {
      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);
      goto LAB_000a33b0;
    }
  }
  else if (loc == 0) {
    if ((extraout_ECX & 2) == 0) {
      if (*(u16 *)(puVar10 + 5) == 0) {
        in_stack_ffffff60 = &loc;
        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),
                               (uint)(extraout_ECX != 0),in_stack_ffffff60);
      }
      else {
        r.aMem = (Mem *)puVar10[4];
        in_stack_ffffff60 = &loc;
        r.default_rc = '\0';
        r.errCode = '\0';
        r.r1 = '\0';
        r.r2 = '\0';
        r.eqSeen = '\0';
        r.pKeyInfo = pExcept->pKeyInfo;
        r.nField = *(u16 *)(puVar10 + 5);
        local_50 = sqlite3BtreeMovetoUnpacked
                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,
                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),
                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);
      }
      iVar6 = local_50;
      if (local_50 != 0) goto LAB_000a33b0;
      if (loc != 0) goto LAB_000a3150;
    }
    in_stack_ffffff60 = (int *)0xa375b;
    getCellInfo(pExcept);
    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&
        (int)(pExcept->info).nKey == puVar10[1]) {
      uVar4 = *puVar10;
      r._12_2_ = (undefined2)uVar4;
      r.eqSeen = (u8)((uint)uVar4 >> 0x10);
      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);
      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);
      goto LAB_000a33b0;
    }
  }
LAB_000a3150:
  pPage = pExcept->pPage;
  uVar11 = (uint)pPage->childPtrSize;
  pCell = pBVar3->pTmpSpace;
  puVar5 = pCell + uVar11;
  if (pPage->intKey == '\0') {
    pPVar7 = (Pgno *)puVar10[1];
    local_84 = (void *)*puVar10;
    if (pPVar7 < (Pgno *)0x80) {
      uVar8 = 1;
      *puVar5 = (uchar)pPVar7;
    }
    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {
      in_stack_ffffff60 = (int *)0xa361e;
      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));
      uVar8 = uVar8 & 0xff;
    }
    else {
      *puVar5 = (uchar)pPVar7;
      uVar8 = 1;
    }
    iVar6 = uVar8 + uVar11;
    local_88 = pPVar7;
  }
  else {
    local_88 = (Pgno *)puVar10[6];
    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);
    local_84 = (void *)puVar10[3];
    if (pPVar7 < (Pgno *)0x80) {
      *puVar5 = (uchar)pPVar7;
      uVar8 = 1;
    }
    else {
      in_stack_ffffff60 = (int *)0xa38a6;
      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));
      uVar8 = uVar8 & 0xff;
    }
    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {
      pCell[uVar11 + uVar8] = (uchar)puVar10[1];
      iVar6 = 1;
    }
    else {
      in_stack_ffffff60 = (int *)0xa31ca;
      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));
    }
    iVar6 = uVar11 + uVar8 + iVar6;
  }
  __dest_00 = pCell + iVar6;
  if ((int)(uint)pPage->maxLocal < (int)pPVar7) {
    pgnoOvfl = 0;
    local_80 = (KeyInfo *)0x0;
    pBt = pPage->pBt;
    pPVar13 = (Pgno *)(uint)pPage->minLocal;
    pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);
    if ((int)(uint)pPage->maxLocal < (int)pPVar12) {
      pPVar12 = pPVar13;
    }
    local_60 = iVar6 + (int)pPVar12 + 4;
    local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);
    while( true ) {
      pPVar13 = pPVar7;
      if ((int)pPVar12 < (int)pPVar7) {
        pPVar13 = pPVar12;
      }
      __n = pPVar13;
      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {
        pPgno = pPVar13;
        memset(__dest_00,0,(size_t)pPVar13);
        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);
        __n = pPVar13;
        parent = pgnoOvfl;
      }
      else {
        pPgno = __n;
        memcpy(__dest_00,local_84,(size_t)__n);
        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);
        parent = pgnoOvfl;
      }
      pgnoOvfl = parent;
      if ((int)pPVar7 < 1) break;
      local_84 = (void *)((int)local_84 + (int)__n);
      local_88 = (Pgno *)((int)local_88 - (int)__n);
      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);
      if (pPVar12 == (Pgno *)0x0) {
        r.pKeyInfo = (KeyInfo *)0x0;
        if (pBt->autoVacuum != '\0') {
          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;
          uVar11 = parent;
          do {
            uVar9 = uVar11;
            pgnoOvfl = uVar9 + 1;
            uVar11 = 0;
            if (1 < pgnoOvfl) {
              uVar11 = pBt->usableSize / 5 + 1;
              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;
              uVar11 = iVar6 + 2;
              if (uVar11 == uVar8 + 1) {
                uVar11 = iVar6 + 3;
              }
            }
          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));
        }
        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,
                               (u8)in_stack_ffffff64);
        if ((pBt->autoVacuum == '\0') || (rc != 0)) {
LAB_000a32d2:
          pPVar12 = pPVar7;
          if (rc != 0) {
LAB_000a3710:
            iVar6 = rc;
            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;
            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);
            local_50 = rc;
            iVar6 = rc;
            if (rc == 0) goto LAB_000a36ac;
            goto LAB_000a33b0;
          }
        }
        else {
          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);
          if (rc != 0) {
            pPVar12 = pPVar7;
            if (r.pKeyInfo != (KeyInfo *)0x0) {
              in_stack_ffffff60 = (int *)0xa35d1;
              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);
              goto LAB_000a32d2;
            }
            goto LAB_000a3710;
          }
        }
        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |
                    pgnoOvfl << 0x18;
        if (local_80 != (KeyInfo *)0x0) {
          in_stack_ffffff60 = (int *)0xa32f6;
          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);
        }
        local_80 = r.pKeyInfo;
        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;
        *local_78 = 0;
        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);
        pPVar12 = (Pgno *)(pBt->usableSize - 4);
      }
      else {
        __dest_00 = __dest_00 + (int)__n;
      }
    }
    if (local_80 == (KeyInfo *)0x0) {
      local_50 = 0;
      pPVar12 = pPVar7;
      goto LAB_000a36ac;
    }
    sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);
    local_50 = 0;
    uVar11 = (uint)pExcept->ix;
    if (loc == 0) goto LAB_000a3433;
LAB_000a36c0:
    if ((loc < 0) && (pPage->nCell != 0)) {
      pExcept->ix = (u16)(uVar11 + 1);
      uVar11 = uVar11 + 1 & 0xffff;
      pExcept->curFlags = pExcept->curFlags & 0xfd;
    }
  }
  else {
    local_60 = 4;
    if (3 < iVar6 + (int)pPVar7) {
      local_60 = iVar6 + (int)pPVar7;
    }
    pPVar12 = pPVar7;
    memcpy(__dest_00,local_84,(size_t)local_88);
    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);
    local_50 = 0;
LAB_000a36ac:
    uVar11 = (uint)pExcept->ix;
    pPVar7 = pPVar12;
    if (loc != 0) goto LAB_000a36c0;
LAB_000a3433:
    iVar6 = sqlite3PagerWrite(pPage->pDbPage);
    local_50 = iVar6;
    if (iVar6 != 0) goto LAB_000a33b0;
    puVar5 = pPage->aData +
             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |
              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);
    if (pPage->leaf == '\0') {
      *(undefined4 *)pCell = *(undefined4 *)puVar5;
    }
    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);
    if (((local_2e == local_60) &&
        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&
       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {
      if (pPage->aDataEnd < puVar5 + local_60) {
        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,
                    unaff_EDI + 0x796f5);
        iVar6 = 0xb;
      }
      else {
        memcpy(puVar5,pCell,local_60);
      }
      goto LAB_000a33b0;
    }
    iVar6 = local_50;
    if ((local_50 != 0) ||
       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))
    goto LAB_000a33b0;
  }
  insertCell(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50);
  (pExcept->info).nSize = 0;
  iVar6 = local_50;
  if (pPage->nOverflow != '\0') {
    pExcept->curFlags = pExcept->curFlags & 0xfd;
    local_50 = balance(pExcept);
    pExcept->pPage->nOverflow = '\0';
    pExcept->eState = '\x01';
    iVar6 = local_50;
    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {
      btreeReleaseAllCursorPages(pExcept);
      iVar6 = local_50;
      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {
        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));
        pExcept->pKey = __dest;
        iVar6 = 7;
        if (__dest != (void *)0x0) {
          memcpy(__dest,(void *)*puVar10,puVar10[1]);
          iVar6 = local_50;
        }
      }
      pExcept->eState = '\x03';
      uVar4 = puVar10[1];
      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];
      *(undefined4 *)&pExcept->nKey = uVar4;
    }
  }
LAB_000a33b0:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar6;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



int FUN_000a3060(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *__src;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  undefined1 *puVar6;
  int iVar7;
  uint uVar8;
  uint extraout_ECX;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  uint uVar12;
  undefined4 *__dest;
  void *pvVar13;
  ushort uVar14;
  int unaff_EDI;
  size_t __n;
  int in_GS_OFFSET;
  undefined8 uVar15;
  uint local_98;
  size_t local_88;
  void *local_84;
  int local_80;
  uint *local_78;
  size_t local_60;
  int local_50;
  int local_4c;
  int local_48;
  uint local_44;
  int local_40;
  undefined4 local_3c;
  short local_38;
  undefined2 local_36;
  undefined2 uStack_34;
  undefined1 local_32;
  undefined1 uStack_31;
  ushort local_30;
  ushort local_2e;
  int local_28;
  undefined4 local_24;
  int local_20;
  
  uVar15 = FUN_00036ac5();
  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);
  pcVar5 = (char *)uVar15;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_4c = param_1;
  if (*pcVar5 == '\x04') {
    iVar7 = *(int *)(pcVar5 + 4);
    goto LAB_000a33b0;
  }
  iVar1 = *(int *)(pcVar5 + 8);
  iVar2 = *(int *)(iVar1 + 4);
  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))
  goto LAB_000a33b0;
  if (*(int *)(pcVar5 + 0x68) == 0) {
    if (*(char *)(iVar1 + 0xb) != '\0') {
      FUN_00048fb0(puVar11[1],puVar11[2],0);
    }
    if (((pcVar5[1] & 2U) == 0) ||
       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {
      if ((local_4c == 0) &&
         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),
         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;
    }
    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&
            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {
      iVar7 = FUN_0009de20();
      goto LAB_000a33b0;
    }
  }
  else if (local_4c == 0) {
    if ((extraout_ECX & 2) == 0) {
      if (*(short *)(puVar11 + 5) == 0) {
        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);
      }
      else {
        local_3c = puVar11[4];
        local_36 = 0;
        uStack_34 = 0;
        local_32 = 0;
        local_40 = *(int *)(pcVar5 + 0x68);
        local_38 = *(short *)(puVar11 + 5);
        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);
      }
      iVar7 = local_50;
      if (local_50 != 0) goto LAB_000a33b0;
      if (local_4c != 0) goto LAB_000a3150;
    }
    FUN_00040b40();
    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {
      local_24 = 0;
      uVar4 = *puVar11;
      uStack_34 = (undefined2)uVar4;
      local_32 = (undefined1)((uint)uVar4 >> 0x10);
      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);
      local_28 = puVar11[1];
      iVar7 = FUN_0009de20();
      goto LAB_000a33b0;
    }
  }
LAB_000a3150:
  iVar1 = *(int *)(pcVar5 + 0x6c);
  uVar12 = (uint)*(byte *)(iVar1 + 10);
  __src = *(undefined4 **)(iVar2 + 0x50);
  puVar6 = (undefined1 *)((int)__src + uVar12);
  if (*(char *)(iVar1 + 2) == '\0') {
    local_98 = puVar11[1];
    local_84 = (void *)*puVar11;
    if (local_98 < 0x80) {
      uVar9 = 1;
      *puVar6 = (char)local_98;
    }
    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {
      uVar9 = FUN_00046180();
      uVar9 = uVar9 & 0xff;
    }
    else {
      *puVar6 = (char)local_98;
      uVar9 = 1;
    }
    iVar7 = uVar9 + uVar12;
    local_88 = local_98;
  }
  else {
    local_88 = puVar11[6];
    local_98 = local_88 + puVar11[7];
    local_84 = (void *)puVar11[3];
    if (local_98 < 0x80) {
      *puVar6 = (char)local_98;
      uVar9 = 1;
    }
    else {
      uVar9 = FUN_00046180();
      uVar9 = uVar9 & 0xff;
    }
    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {
      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];
      iVar7 = 1;
    }
    else {
      iVar7 = FUN_00046180();
    }
    iVar7 = uVar12 + uVar9 + iVar7;
  }
  pvVar13 = (void *)((int)__src + iVar7);
  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {
    local_44 = 0;
    local_80 = 0;
    iVar3 = *(int *)(iVar1 + 0x34);
    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);
    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;
    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {
      uVar12 = uVar9;
    }
    local_60 = iVar7 + uVar12 + 4;
    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);
    while( true ) {
      uVar9 = local_98;
      if ((int)uVar12 < (int)local_98) {
        uVar9 = uVar12;
      }
      __n = uVar9;
      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {
        memset(pvVar13,0,uVar9);
        __n = uVar9;
        uVar9 = local_44;
      }
      else {
        memcpy(pvVar13,local_84,__n);
        uVar9 = local_44;
      }
      local_98 = local_98 - __n;
      local_44 = uVar9;
      if ((int)local_98 < 1) break;
      local_84 = (void *)((int)local_84 + __n);
      local_88 = local_88 - __n;
      uVar12 = uVar12 - __n;
      if (uVar12 == 0) {
        local_40 = 0;
        if (*(char *)(iVar3 + 0x11) != '\0') {
          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);
          uVar12 = uVar9;
          do {
            uVar10 = uVar12;
            local_44 = uVar10 + 1;
            uVar12 = 0;
            if (1 < local_44) {
              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;
              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;
              uVar12 = iVar7 + 2;
              if (uVar12 == uVar8 + 1) {
                uVar12 = iVar7 + 3;
              }
            }
          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));
        }
        local_48 = FUN_0009c6f0(local_44,0);
        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {
LAB_000a32d2:
          if (local_48 != 0) {
LAB_000a3710:
            iVar7 = local_48;
            if (local_80 == 0) goto LAB_000a33b0;
            FUN_000386c0();
            local_50 = local_48;
            iVar7 = local_48;
            if (local_48 == 0) goto LAB_000a36ac;
            goto LAB_000a33b0;
          }
        }
        else {
          FUN_0009d070(uVar9,&local_48);
          if (local_48 != 0) {
            if (local_40 != 0) {
              FUN_000386c0();
              goto LAB_000a32d2;
            }
            goto LAB_000a3710;
          }
        }
        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |
                    local_44 << 0x18;
        if (local_80 != 0) {
          FUN_000386c0();
        }
        local_80 = local_40;
        local_78 = *(uint **)(local_40 + 0x38);
        *local_78 = 0;
        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);
        uVar12 = *(int *)(iVar3 + 0x24) - 4;
      }
      else {
        pvVar13 = (void *)((int)pvVar13 + __n);
      }
    }
    if (local_80 == 0) {
      local_50 = 0;
      goto LAB_000a36ac;
    }
    FUN_000386c0();
    local_50 = 0;
    uVar14 = *(ushort *)(pcVar5 + 0x3e);
    if (local_4c == 0) goto LAB_000a3433;
LAB_000a36c0:
    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {
      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;
      pcVar5[1] = pcVar5[1] & 0xfd;
    }
  }
  else {
    local_60 = 4;
    if (3 < (int)(iVar7 + local_98)) {
      local_60 = iVar7 + local_98;
    }
    memcpy(pvVar13,local_84,local_88);
    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);
    local_50 = 0;
LAB_000a36ac:
    uVar14 = *(ushort *)(pcVar5 + 0x3e);
    if (local_4c != 0) goto LAB_000a36c0;
LAB_000a3433:
    iVar7 = FUN_00098750();
    local_50 = iVar7;
    if (iVar7 != 0) goto LAB_000a33b0;
    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);
    __dest = (undefined4 *)
             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +
             *(int *)(iVar1 + 0x38));
    if (*(char *)(iVar1 + 8) == '\0') {
      *__src = *__dest;
    }
    local_50 = FUN_0009e3e0();
    if (((local_2e == local_60) &&
        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&
       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))
       ) {
      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {
        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);
        iVar7 = 0xb;
      }
      else {
        memcpy(__dest,__src,local_60);
      }
      goto LAB_000a33b0;
    }
    iVar7 = local_50;
    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))
    goto LAB_000a33b0;
  }
  FUN_0009e630(local_60,0,0,&local_50);
  pcVar5[0x2e] = '\0';
  pcVar5[0x2f] = '\0';
  iVar7 = local_50;
  if (*(char *)(iVar1 + 0xc) != '\0') {
    pcVar5[1] = pcVar5[1] & 0xfd;
    local_50 = FUN_000a0160();
    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;
    *pcVar5 = '\x01';
    iVar7 = local_50;
    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {
      FUN_00049010();
      iVar7 = local_50;
      if (*(int *)(pcVar5 + 0x68) != 0) {
        pvVar13 = (void *)FUN_000421f0();
        *(void **)(pcVar5 + 0x10) = pvVar13;
        iVar7 = 7;
        if (pvVar13 != (void *)0x0) {
          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);
          iVar7 = local_50;
        }
      }
      *pcVar5 = '\x03';
      uVar4 = puVar11[1];
      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];
      *(undefined4 *)(pcVar5 + 0x30) = uVar4;
    }
  }
LAB_000a33b0:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar7;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}


PUSH EBP
PUSH EDI
CALL 0x00036ac5
ADD EDI,0xd8dc1
PUSH ESI
MOV ESI,EAX
PUSH EBX
SUB ESP,0x8c
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [ESP + 0xc],EDI
MOV dword ptr [ESP + 0x20],EDX
MOV dword ptr [ESP + 0x38],ECX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x7c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ESP + 0xa0]
CMP byte ptr [ESI],0x4
MOV dword ptr [ESP + 0x50],EAX
JZ 0x000a36f0
MOV EAX,dword ptr [ESP + 0x8]
MOV EBX,dword ptr [EAX + 0x8]
MOV EDI,dword ptr [EBX + 0x4]
MOV dword ptr [ESP + 0x34],EDI
TEST byte ptr [EAX + 0x1],0x20
JNZ 0x000a3630
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x68]
TEST EAX,EAX
JZ 0x000a3330
MOV EDX,dword ptr [ESP + 0x50]
TEST EDX,EDX
JNZ 0x000a3150
TEST byte ptr [ESP + 0x38],0x2
JNZ 0x000a3750
MOV EBX,dword ptr [ESP + 0x20]
MOV EBP,dword ptr [ESP + 0x38]
XOR ECX,ECX
MOVZX EDX,word ptr [EBX + 0x14]
TEST EBP,EBP
SETNZ CL
TEST DX,DX
JZ 0x000a38b0
MOV dword ptr [ESP + 0x5c],EAX
MOV EAX,dword ptr [EBX + 0x10]
MOV word ptr [ESP + 0x64],DX
LEA EDX,[ESP + 0x5c]
MOV dword ptr [ESP + 0x60],EAX
LEA EAX,[ESP + 0x50]
MOV dword ptr [ESP + 0x66],0x0
MOV byte ptr [ESP + 0x6a],0x0
PUSH EAX
PUSH ECX
PUSH 0x0
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x000a2060
MOV dword ptr [ESP + 0x5c],EAX
MOV ESI,EAX
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x000a33b0
MOV EDI,dword ptr [ESP + 0x50]
TEST EDI,EDI
JZ 0x000a3750
NOP
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EAX + 0x6c]
MOV EAX,dword ptr [ESP + 0x34]
MOVZX EBX,byte ptr [EDX + 0xa]
MOV EAX,dword ptr [EAX + 0x50]
MOV dword ptr [ESP + 0x28],EDX
MOV dword ptr [ESP + 0x2c],EAX
ADD EAX,EBX
CMP byte ptr [EDX + 0x2],0x0
JZ 0x000a35e0
MOV ESI,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESI + 0x18]
MOV dword ptr [ESP + 0x14],ECX
ADD ECX,dword ptr [ESI + 0x1c]
MOV ESI,dword ptr [ESI + 0xc]
MOV dword ptr [ESP + 0x4],ECX
MOV dword ptr [ESP + 0x18],ESI
CMP ECX,0x7f
JA 0x000a3898
MOV byte ptr [EAX],CL
MOV ECX,0x1
MOV EAX,dword ptr [ESP + 0x20]
ADD EBX,ECX
MOV ESI,0x7f
MOV EDX,dword ptr [EAX + 0x4]
MOV ECX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [ESP + 0x2c]
ADD EAX,EBX
CMP ESI,EDX
MOV ESI,0x0
SBB ESI,ECX
JNC 0x000a3888
CALL 0x00046180
LEA ECX,[EBX + EAX*0x1]
MOV EAX,dword ptr [ESP + 0x2c]
LEA ESI,[EAX + ECX*0x1]
MOV EAX,dword ptr [ESP + 0x28]
MOVZX EBX,word ptr [EAX + 0xe]
CMP EBX,dword ptr [ESP + 0x4]
JGE 0x000a3660
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x58],0x0
MOV dword ptr [ESP + 0x1c],0x0
MOV EDX,dword ptr [EAX + 0x34]
MOVZX EDI,word ptr [EAX + 0x10]
MOV EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x10],EDX
MOV EDX,dword ptr [EDX + 0x24]
SUB EAX,EDI
LEA EBP,[EDX + -0x4]
XOR EDX,EDX
DIV EBP
LEA EBP,[EDX + EDI*0x1]
CMP EBX,EBP
CMOVL EBP,EDI
ADD ECX,EBP
LEA EAX,[ECX + 0x4]
ADD ECX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP + 0x3c],EAX
MOV dword ptr [ESP + 0x24],ECX
NOP
MOV EAX,dword ptr [ESP + 0x4]
CMP EAX,EBP
MOV EDI,EAX
CMOVG EDI,EBP
CMP dword ptr [ESP + 0x14],EDI
JGE 0x000a3500
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JLE 0x000a33e0
SUB ESP,0x4
MOV EDI,EAX
PUSH EDI
PUSH dword ptr [ESP + 0x20]
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015130
ADD ESP,0x10
SUB dword ptr [ESP + 0x4],EDI
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JLE 0x000a3403
ADD dword ptr [ESP + 0x18],EDI
SUB dword ptr [ESP + 0x14],EDI
SUB EBP,EDI
JNZ 0x000a33d0
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x58]
MOV dword ptr [ESP + 0x5c],0x0
CMP byte ptr [EAX + 0x11],0x0
MOV EBX,ESI
JNZ 0x000a3510
LEA ECX,[ESP + 0x58]
LEA EDX,[ESP + 0x5c]
SUB ESP,0x8
PUSH 0x0
PUSH EBX
MOV EBX,dword ptr [ESP + 0x20]
MOV EAX,EBX
CALL 0x0009c6f0
MOV dword ptr [ESP + 0x64],EAX
ADD ESP,0x10
CMP byte ptr [EBX + 0x11],0x0
JZ 0x000a32d2
TEST EAX,EAX
JZ 0x000a3590
TEST EAX,EAX
JNZ 0x000a3710
MOV EAX,dword ptr [ESP + 0x58]
MOV ECX,dword ptr [ESP + 0x24]
BSWAP EAX
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [ESP + 0x1c]
TEST EAX,EAX
JZ 0x000a32f6
MOV EAX,dword ptr [EAX + 0x48]
CALL 0x000386c0
MOV EAX,dword ptr [ESP + 0x5c]
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EAX + 0x38]
MOV dword ptr [ESP + 0x24],EAX
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x5c]
MOV ESI,dword ptr [EAX + 0x38]
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x24]
ADD ESI,0x4
MOV dword ptr [ESP + 0x30],EAX
LEA EBP,[EAX + -0x4]
JMP 0x000a3230
CMP byte ptr [EBX + 0xb],0x0
JZ 0x000a335a
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0x4
LEA EDX,[EBX + 0xb]
MOV ECX,dword ptr [EAX + 0x38]
MOV EAX,dword ptr [EBX + 0x4]
PUSH 0x0
MOV EBX,dword ptr [ESP + 0x28]
PUSH dword ptr [EBX + 0x8]
PUSH dword ptr [EBX + 0x4]
CALL 0x00048fb0
ADD ESP,0x10
MOV EBX,dword ptr [ESP + 0x8]
TEST byte ptr [EBX + 0x1],0x2
JNZ 0x000a37a0
MOV EBX,dword ptr [ESP + 0x50]
TEST EBX,EBX
JNZ 0x000a3150
LEA EAX,[ESP + 0x50]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x3c]
XOR EAX,EAX
TEST ECX,ECX
SETNZ AL
XOR EDX,EDX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x28]
PUSH dword ptr [EAX + 0x8]
PUSH dword ptr [EAX + 0x4]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x000a2060
MOV dword ptr [ESP + 0x5c],EAX
MOV ESI,EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000a3150
LEA ESI,[ESI]
NOP
MOV EBX,dword ptr [ESP + 0x7c]
XOR EBX,dword ptr GS:[0x14]
MOV EAX,ESI
JNZ 0x000a39a3
ADD ESP,0x8c
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD ESI,EDI
JMP 0x000a3230
SUB ESP,0x4
PUSH EDI
PUSH 0x0
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015440
ADD ESP,0x10
SUB dword ptr [ESP + 0x4],EDI
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JG 0x000a3278
MOV EAX,dword ptr [ESP + 0x1c]
TEST EAX,EAX
JZ 0x000a3740
MOV EAX,dword ptr [EAX + 0x48]
CALL 0x000386c0
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x4c],0x0
MOVZX EDI,word ptr [EAX + 0x3e]
TEST ECX,ECX
JNZ 0x000a36c0
MOV EBX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EBX + 0x48]
CALL 0x00098750
MOV ESI,EAX
MOV dword ptr [ESP + 0x4c],EAX
TEST EAX,EAX
JNZ 0x000a33b0
MOV EAX,dword ptr [EBX + 0x40]
MOV ECX,EBX
MOVZX EBX,word ptr [EAX + EDI*0x2]
ROL BX,0x8
AND BX,word ptr [ECX + 0x18]
MOVZX EBX,BX
ADD EBX,dword ptr [ECX + 0x38]
CMP byte ptr [ECX + 0x8],0x0
JZ 0x000a3970
MOV EAX,dword ptr [ESP + 0x28]
LEA ECX,[ESP + 0x5c]
MOV EDX,EBX
CALL 0x0009e3e0
MOVZX ECX,word ptr [ESP + 0x6e]
MOV dword ptr [ESP + 0x4c],EAX
CMP ECX,dword ptr [ESP + 0x3c]
JZ 0x000a3900
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x000a33b0
SUB ESP,0xc
MOV EDX,EDI
LEA EBX,[ESP + 0x58]
PUSH EBX
MOV EAX,dword ptr [ESP + 0x38]
CALL 0x0006ff70
MOV ESI,dword ptr [ESP + 0x5c]
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x000a33b0
LEA ESI,[ESI]
PUSH EBX
MOV EDX,EDI
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0x48]
MOV EBX,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x3c]
MOV EAX,EBX
CALL 0x0009e630
MOV EAX,dword ptr [ESP + 0x18]
XOR EDX,EDX
ADD ESP,0x10
MOV word ptr [EAX + 0x2e],DX
CMP byte ptr [EBX + 0xc],0x0
JNZ 0x000a37e8
MOV ESI,dword ptr [ESP + 0x4c]
JMP 0x000a33b0
SUB ESP,0x4
JMP 0x000a3256
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x10]
XOR EDX,EDX
MOV ECX,ESI
MOV EAX,dword ptr [EAX + 0x59c]
DIV dword ptr [EDI + 0x20]
MOV EDI,EAX
LEA ESI,[ESI]
NOP
LEA EBX,[ECX + 0x1]
XOR EBP,EBP
CMP EBX,0x1
JBE 0x000a356c
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x24]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,0xcccccccd
MUL dword ptr [ESP + 0x30]
LEA EAX,[ECX + -0x1]
SHR EDX,0x2
LEA EBP,[EDX + 0x1]
XOR EDX,EDX
DIV EBP
LEA EDX,[EDI + 0x1]
IMUL EAX,EBP
LEA EBP,[EAX + 0x2]
ADD EAX,0x3
CMP EBP,EDX
CMOVZ EBP,EAX
CMP EBX,EBP
JZ 0x000a3576
CMP ECX,EDI
JNZ 0x000a3580
MOV EBP,EBX
MOV ECX,EBP
JMP 0x000a3530
MOV dword ptr [ESP + 0x58],EBX
JMP 0x000a32a4
XOR ECX,ECX
TEST ESI,ESI
SETNZ CL
SUB ESP,0x8
LEA EAX,[ESP + 0x5c]
ADD ECX,0x3
PUSH EAX
MOV EAX,EBX
PUSH ESI
MOV EDX,dword ptr [ESP + 0x68]
CALL 0x0009d070
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x54]
TEST ESI,ESI
JZ 0x000a32da
MOV EAX,dword ptr [ESP + 0x5c]
TEST EAX,EAX
JZ 0x000a3710
MOV EAX,dword ptr [EAX + 0x48]
CALL 0x000386c0
MOV EAX,dword ptr [ESP + 0x54]
JMP 0x000a32d2
MOV ECX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ECX + 0x4]
MOV ESI,dword ptr [ECX]
MOV dword ptr [ESP + 0x4],EDI
MOV dword ptr [ESP + 0x18],ESI
CMP EDI,0x7f
JBE 0x000a3700
MOV EDI,dword ptr [ESP + 0x4]
MOV ESI,0x7f
MOV ECX,EDI
MOV EDX,EDI
SAR ECX,0x1f
CMP ESI,EDI
MOV ESI,0x0
SBB ESI,ECX
JNC 0x000a38f0
CALL 0x00046180
MOVZX ECX,AL
MOV EAX,dword ptr [ESP + 0x4]
ADD ECX,EBX
MOV dword ptr [ESP + 0x14],EAX
JMP 0x000a31cd
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [ECX + 0x38]
MOV EAX,dword ptr [EAX + 0x8]
CALL 0x000a11a0
MOV ESI,EAX
MOV dword ptr [ESP + 0x4c],EAX
TEST EAX,EAX
JZ 0x000a30bf
JMP 0x000a33b0
MOV EDI,dword ptr [ESP + 0x4]
MOV EAX,0x4
ADD ECX,EDI
CMP ECX,0x4
CMOVGE EAX,ECX
SUB ESP,0x4
MOV dword ptr [ESP + 0x40],EAX
MOV EBP,dword ptr [ESP + 0x18]
PUSH EBP
PUSH dword ptr [ESP + 0x20]
PUSH ESI
ADD ESI,EBP
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015130
MOV EAX,EDI
ADD ESP,0xc
SUB EAX,EBP
PUSH EAX
PUSH 0x0
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015440
MOV dword ptr [ESP + 0x5c],0x0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,dword ptr [ESP + 0x50]
MOVZX EDI,word ptr [EAX + 0x3e]
TEST ECX,ECX
JZ 0x000a3433
LEA EBX,[ESP + 0x4c]
JNS 0x000a34c0
MOV ESI,dword ptr [ESP + 0x28]
CMP word ptr [ESI + 0x16],0x0
JZ 0x000a34c0
MOV EAX,dword ptr [ESP + 0x8]
LEA EDI,[EDI + 0x1]
MOV word ptr [EAX + 0x3e],DI
MOVZX EDI,DI
AND byte ptr [EAX + 0x1],0xfd
JMP 0x000a34c0
MOV ESI,dword ptr [ESI + 0x4]
JMP 0x000a33b0
MOV EDX,EDI
MOV ECX,0x1
MOV byte ptr [EAX],DL
JMP 0x000a3621
MOV EBX,dword ptr [ESP + 0x1c]
TEST EBX,EBX
JZ 0x000a38e0
MOV EAX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX + 0x48]
CALL 0x000386c0
MOV ESI,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x4c],ESI
TEST ESI,ESI
JNZ 0x000a33b0
JMP 0x000a36ac
MOV dword ptr [ESP + 0x4c],0x0
JMP 0x000a36ac
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,EBX
CALL 0x00040b40
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [EBX + 0x1c]
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,dword ptr [EAX + 0x8]
XOR EAX,dword ptr [EBX + 0x20]
XOR ECX,EDX
OR EAX,ECX
JNZ 0x000a3150
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x74],EDX
LEA EDX,[ESP + 0x5c]
MOV dword ptr [ESP + 0x78],0x0
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x68],EAX
MOV EAX,dword ptr [ESP + 0x8]
CALL 0x0009de20
MOV ESI,EAX
JMP 0x000a33b0
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESI + 0x4]
MOV EDX,dword ptr [ESI + 0x8]
XOR EAX,dword ptr [EBX + 0x1c]
XOR EDX,dword ptr [EBX + 0x20]
OR EDX,EAX
JNZ 0x000a3368
CMP word ptr [EBX + 0x2e],0x0
JZ 0x000a3150
MOV EAX,dword ptr [ESI + 0x1c]
ADD EAX,dword ptr [ESI + 0x18]
CMP dword ptr [EBX + 0x28],EAX
JNZ 0x000a3150
MOV EDX,ESI
MOV EAX,EBX
CALL 0x0009de20
MOV ESI,EAX
JMP 0x000a33b0
MOV EDI,dword ptr [ESP + 0x8]
AND byte ptr [EDI + 0x1],0xfd
MOV EAX,EDI
CALL 0x000a0160
MOV ESI,EAX
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,dword ptr [EDI + 0x6c]
MOV byte ptr [EAX + 0xc],0x0
MOV byte ptr [EDI],0x1
TEST byte ptr [ESP + 0x38],0x2
JZ 0x000a33b0
TEST ESI,ESI
JNZ 0x000a33b0
MOV EBX,dword ptr [ESP + 0x8]
MOV EAX,EBX
CALL 0x00049010
MOV EAX,dword ptr [EBX + 0x68]
TEST EAX,EAX
JZ 0x000a397d
MOV EBX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EBX + 0x4]
MOV EDX,dword ptr [EBX + 0x8]
CALL 0x000421f0
MOV ESI,dword ptr [ESP + 0x8]
MOV dword ptr [ESI + 0x10],EAX
MOV ESI,0x7
TEST EAX,EAX
JZ 0x000a3868
SUB ESP,0x4
PUSH dword ptr [EBX + 0x4]
PUSH dword ptr [EBX]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015130
MOV ESI,dword ptr [ESP + 0x5c]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x20]
MOV byte ptr [EDI],0x3
MOV EDX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [EDI + 0x34],EDX
MOV dword ptr [EDI + 0x30],EAX
JMP 0x000a33b0
MOV byte ptr [EAX],DL
MOV EAX,0x1
JMP 0x000a31ca
MOV EDX,dword ptr [ESP + 0x4]
MOV ECX,EDX
SAR ECX,0x1f
CALL 0x00046180
MOVZX ECX,AL
JMP 0x000a319f
LEA EAX,[ESP + 0x50]
PUSH EAX
PUSH ECX
MOV EAX,dword ptr [ESP + 0x28]
PUSH dword ptr [EAX + 0x8]
PUSH dword ptr [EAX + 0x4]
MOV EDX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x000a2630
MOV dword ptr [ESP + 0x5c],EAX
MOV ESI,EAX
ADD ESP,0x10
JMP 0x000a313a
MOV ESI,dword ptr [ESP + 0x54]
JMP 0x000a33b0
MOV byte ptr [EAX],DL
MOV ECX,0x1
JMP 0x000a3621
MOVZX EDX,word ptr [ESP + 0x6c]
CMP EDX,dword ptr [ESP + 0x68]
JNZ 0x000a3490
MOV EDX,dword ptr [ESP + 0x34]
CMP byte ptr [EDX + 0x11],0x0
JZ 0x000a392b
MOV EDX,dword ptr [ESP + 0x28]
MOVZX EDX,word ptr [EDX + 0x10]
CMP EDX,dword ptr [ESP + 0x3c]
JLE 0x000a3490
MOV EAX,dword ptr [ESP + 0x3c]
MOV EDI,dword ptr [ESP + 0x28]
ADD EAX,EBX
CMP dword ptr [EDI + 0x3c],EAX
JNC 0x000a3986
SUB ESP,0xc
MOV ESI,0xb
MOV EBX,dword ptr [ESP + 0x18]
LEA EAX,[EBX + 0xfffa0934]
PUSH EAX
LEA EAX,[EBX + 0xfffa3c05]
PUSH 0x11825
PUSH EAX
LEA EAX,[EBX + 0xfffa39ca]
PUSH EAX
PUSH 0xb
CALL 0x0006e260
ADD ESP,0x20
JMP 0x000a33b0
MOV EAX,dword ptr [EBX]
MOV EDX,dword ptr [ESP + 0x2c]
MOV dword ptr [EDX],EAX
JMP 0x000a346e
MOV ESI,dword ptr [ESP + 0x4c]
JMP 0x000a3868
SUB ESP,0x4
PUSH dword ptr [ESP + 0x40]
PUSH dword ptr [ESP + 0x34]
PUSH EBX
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00015130
ADD ESP,0x10
JMP 0x000a33b0
CALL 0x00116110
(translation_unit "int FUN_000a3060(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}\n\n" (function_definition "int FUN_000a3060(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" primitive_type (function_declarator "FUN_000a3060(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined4 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "void *pvVar13;" primitive_type (pointer_declarator "*pvVar13" * identifier) ;) (declaration "ushort uVar14;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (declaration "uint local_98;" type_identifier identifier ;) (declaration "size_t local_88;" primitive_type identifier ;) (declaration "void *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "uint *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "size_t local_60;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "short local_38;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined2 local_36;" type_identifier identifier ;) (declaration "undefined2 uStack_34;" type_identifier identifier ;) (declaration "undefined1 local_32;" type_identifier identifier ;) (declaration "undefined1 uStack_31;" type_identifier identifier ;) (declaration "ushort local_30;" type_identifier identifier ;) (declaration "ushort local_2e;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar15 = FUN_00036ac5();" (assignment_expression "uVar15 = FUN_00036ac5()" identifier = (call_expression "FUN_00036ac5()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);" (assignment_expression "puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20)" identifier = (cast_expression "(undefined4 *)((ulonglong)uVar15 >> 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pcVar5 = (char *)uVar15;" (assignment_expression "pcVar5 = (char *)uVar15" identifier = (cast_expression "(char *)uVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_4c = param_1;" (assignment_expression "local_4c = param_1" identifier = identifier) ;) (if_statement "if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }" if (parenthesized_expression "(*pcVar5 == '\x04')" ( (binary_expression "*pcVar5 == '\x04'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }" { (expression_statement "iVar7 = *(int *)(pcVar5 + 4);" (assignment_expression "iVar7 = *(int *)(pcVar5 + 4)" identifier = (pointer_expression "*(int *)(pcVar5 + 4)" * (cast_expression "(int *)(pcVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 4)" ( (binary_expression "pcVar5 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) (expression_statement "iVar1 = *(int *)(pcVar5 + 8);" (assignment_expression "iVar1 = *(int *)(pcVar5 + 8)" identifier = (pointer_expression "*(int *)(pcVar5 + 8)" * (cast_expression "(int *)(pcVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 8)" ( (binary_expression "pcVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar1 + 4);" (assignment_expression "iVar2 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;" if (parenthesized_expression "(((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))" ( (binary_expression "((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0)" (parenthesized_expression "((pcVar5[1] & 0x20U) != 0)" ( (binary_expression "(pcVar5[1] & 0x20U) != 0" (parenthesized_expression "(pcVar5[1] & 0x20U)" ( (binary_expression "pcVar5[1] & 0x20U" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0)" ( (comma_expression "local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0" (assignment_expression "local_50 = FUN_000a11a0()" identifier = (call_expression "FUN_000a11a0()" identifier (argument_list "()" ( )))) , (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (if_statement "if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" if (parenthesized_expression "(*(int *)(pcVar5 + 0x68) == 0)" ( (binary_expression "*(int *)(pcVar5 + 0x68) == 0" (pointer_expression "*(int *)(pcVar5 + 0x68)" * (cast_expression "(int *)(pcVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x68)" ( (binary_expression "pcVar5 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" { (if_statement "if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }" if (parenthesized_expression "(*(char *)(iVar1 + 0xb) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xb) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xb)" * (cast_expression "(char *)(iVar1 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb)" ( (binary_expression "iVar1 + 0xb" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }" { (expression_statement "FUN_00048fb0(puVar11[1],puVar11[2],0);" (call_expression "FUN_00048fb0(puVar11[1],puVar11[2],0)" identifier (argument_list "(puVar11[1],puVar11[2],0)" ( (subscript_expression "puVar11[1]" identifier [ number_literal ]) , (subscript_expression "puVar11[2]" identifier [ number_literal ]) , number_literal ))) ;) })) (if_statement "if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c)))" ( (binary_expression "((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))" (parenthesized_expression "((pcVar5[1] & 2U) == 0)" ( (binary_expression "(pcVar5[1] & 2U) == 0" (parenthesized_expression "(pcVar5[1] & 2U)" ( (binary_expression "pcVar5[1] & 2U" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) || (parenthesized_expression "(puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))" ( (binary_expression "puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c)" (binary_expression "puVar11[2] != *(int *)(pcVar5 + 0x20)" (subscript_expression "puVar11[2]" identifier [ number_literal ]) != (pointer_expression "*(int *)(pcVar5 + 0x20)" * (cast_expression "(int *)(pcVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x20)" ( (binary_expression "pcVar5 + 0x20" identifier + number_literal) ))))) || (binary_expression "puVar11[1] != *(int *)(pcVar5 + 0x1c)" (subscript_expression "puVar11[1]" identifier [ number_literal ]) != (pointer_expression "*(int *)(pcVar5 + 0x1c)" * (cast_expression "(int *)(pcVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x1c)" ( (binary_expression "pcVar5 + 0x1c" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }" { (if_statement "if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;" if (parenthesized_expression "((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0))" ( (binary_expression "(local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)" (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) && (parenthesized_expression "(local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)" ( (comma_expression "local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0" (assignment_expression "local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier = (call_expression "FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier (argument_list "(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" ( (subscript_expression "puVar11[1]" identifier [ number_literal ]) , (subscript_expression "puVar11[2]" identifier [ number_literal ]) , (binary_expression "extraout_ECX != 0" identifier != number_literal) , (pointer_expression "&local_4c" & identifier) )))) , (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) }) (else_clause "else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" else (if_statement "if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6]))" ( (binary_expression "(*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])" (parenthesized_expression "(*(short *)(pcVar5 + 0x2e) != 0)" ( (binary_expression "*(short *)(pcVar5 + 0x2e) != 0" (pointer_expression "*(short *)(pcVar5 + 0x2e)" * (cast_expression "(short *)(pcVar5 + 0x2e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x2e)" ( (binary_expression "pcVar5 + 0x2e" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])" ( (binary_expression "*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6]" (pointer_expression "*(int *)(pcVar5 + 0x28)" * (cast_expression "(int *)(pcVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x28)" ( (binary_expression "pcVar5 + 0x28" identifier + number_literal) )))) == (binary_expression "puVar11[7] + puVar11[6]" (subscript_expression "puVar11[7]" identifier [ number_literal ]) + (subscript_expression "puVar11[6]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" { (expression_statement "iVar7 = FUN_0009de20();" (assignment_expression "iVar7 = FUN_0009de20()" identifier = (call_expression "FUN_0009de20()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })))) }) (else_clause "else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" else (if_statement "if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" { (if_statement "if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }" if (parenthesized_expression "((extraout_ECX & 2) == 0)" ( (binary_expression "(extraout_ECX & 2) == 0" (parenthesized_expression "(extraout_ECX & 2)" ( (binary_expression "extraout_ECX & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }" { (if_statement "if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" if (parenthesized_expression "(*(short *)(puVar11 + 5) == 0)" ( (binary_expression "*(short *)(puVar11 + 5) == 0" (pointer_expression "*(short *)(puVar11 + 5)" * (cast_expression "(short *)(puVar11 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 5)" ( (binary_expression "puVar11 + 5" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }" { (expression_statement "local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);" (assignment_expression "local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier = (call_expression "FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier (argument_list "(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" ( (subscript_expression "puVar11[1]" identifier [ number_literal ]) , (subscript_expression "puVar11[2]" identifier [ number_literal ]) , (binary_expression "extraout_ECX != 0" identifier != number_literal) , (pointer_expression "&local_4c" & identifier) )))) ;) }) (else_clause "else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" else (compound_statement "{\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" { (expression_statement "local_3c = puVar11[4];" (assignment_expression "local_3c = puVar11[4]" identifier = (subscript_expression "puVar11[4]" identifier [ number_literal ])) ;) (expression_statement "local_36 = 0;" (assignment_expression "local_36 = 0" identifier = number_literal) ;) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (expression_statement "local_32 = 0;" (assignment_expression "local_32 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(int *)(pcVar5 + 0x68);" (assignment_expression "local_40 = *(int *)(pcVar5 + 0x68)" identifier = (pointer_expression "*(int *)(pcVar5 + 0x68)" * (cast_expression "(int *)(pcVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x68)" ( (binary_expression "pcVar5 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(short *)(puVar11 + 5);" (assignment_expression "local_38 = *(short *)(puVar11 + 5)" identifier = (pointer_expression "*(short *)(puVar11 + 5)" * (cast_expression "(short *)(puVar11 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 5)" ( (binary_expression "puVar11 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);" (assignment_expression "local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c)" identifier = (call_expression "FUN_000a2060(0,0,extraout_ECX != 0,&local_4c)" identifier (argument_list "(0,0,extraout_ECX != 0,&local_4c)" ( number_literal , number_literal , (binary_expression "extraout_ECX != 0" identifier != number_literal) , (pointer_expression "&local_4c" & identifier) )))) ;) }))) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (local_50 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (if_statement "if (local_4c != 0) goto LAB_000a3150;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a3150;" goto statement_identifier ;)) })) (expression_statement "FUN_00040b40();" (call_expression "FUN_00040b40()" identifier (argument_list "()" ( ))) ;) (if_statement "if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1])" ( (binary_expression "puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]" (binary_expression "puVar11[2] == *(int *)(pcVar5 + 0x20)" (subscript_expression "puVar11[2]" identifier [ number_literal ]) == (pointer_expression "*(int *)(pcVar5 + 0x20)" * (cast_expression "(int *)(pcVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x20)" ( (binary_expression "pcVar5 + 0x20" identifier + number_literal) ))))) && (binary_expression "*(int *)(pcVar5 + 0x1c) == puVar11[1]" (pointer_expression "*(int *)(pcVar5 + 0x1c)" * (cast_expression "(int *)(pcVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x1c)" ( (binary_expression "pcVar5 + 0x1c" identifier + number_literal) )))) == (subscript_expression "puVar11[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uStack_34 = (undefined2)uVar4;" (assignment_expression "uStack_34 = (undefined2)uVar4" identifier = (cast_expression "(undefined2)uVar4" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "local_32 = (undefined1)((uint)uVar4 >> 0x10);" (assignment_expression "local_32 = (undefined1)((uint)uVar4 >> 0x10)" identifier = (call_expression "(undefined1)((uint)uVar4 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)uVar4 >> 0x10)" ( (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_31 = (undefined1)((uint)uVar4 >> 0x18);" (assignment_expression "uStack_31 = (undefined1)((uint)uVar4 >> 0x18)" identifier = (call_expression "(undefined1)((uint)uVar4 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)uVar4 >> 0x18)" ( (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_28 = puVar11[1];" (assignment_expression "local_28 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = FUN_0009de20();" (assignment_expression "iVar7 = FUN_0009de20()" identifier = (call_expression "FUN_0009de20()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) })))) (labeled_statement "LAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);" statement_identifier : (expression_statement "iVar1 = *(int *)(pcVar5 + 0x6c);" (assignment_expression "iVar1 = *(int *)(pcVar5 + 0x6c)" identifier = (pointer_expression "*(int *)(pcVar5 + 0x6c)" * (cast_expression "(int *)(pcVar5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x6c)" ( (binary_expression "pcVar5 + 0x6c" identifier + number_literal) ))))) ;)) (expression_statement "uVar12 = (uint)*(byte *)(iVar1 + 10);" (assignment_expression "uVar12 = (uint)*(byte *)(iVar1 + 10)" identifier = (binary_expression "(uint)*(byte *)(iVar1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 10)" ( (binary_expression "iVar1 + 10" identifier + number_literal) ))))) ;) (expression_statement "__src = *(undefined4 **)(iVar2 + 0x50);" (assignment_expression "__src = *(undefined4 **)(iVar2 + 0x50)" identifier = (pointer_expression "*(undefined4 **)(iVar2 + 0x50)" * (cast_expression "(undefined4 **)(iVar2 + 0x50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x50)" ( (binary_expression "iVar2 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined1 *)((int)__src + uVar12);" (assignment_expression "puVar6 = (undefined1 *)((int)__src + uVar12)" identifier = (cast_expression "(undefined1 *)((int)__src + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__src + uVar12)" ( (binary_expression "(int)__src + uVar12" (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 2) == '\0')" ( (binary_expression "*(char *)(iVar1 + 2) == '\0'" (pointer_expression "*(char *)(iVar1 + 2)" * (cast_expression "(char *)(iVar1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 2)" ( (binary_expression "iVar1 + 2" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }" { (expression_statement "local_98 = puVar11[1];" (assignment_expression "local_98 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "local_84 = (void *)*puVar11;" (assignment_expression "local_84 = (void *)*puVar11" identifier = (cast_expression "(void *)*puVar11" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (if_statement "if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" if (parenthesized_expression "(local_98 < 0x80)" ( (binary_expression "local_98 < 0x80" identifier < number_literal) )) (compound_statement "{\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)local_98" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" else (if_statement "if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" if (parenthesized_expression "((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98))" ( (binary_expression "(int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)" (binary_expression "(int)local_98 < 0" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)" (binary_expression "(uint)-((int)local_98 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)local_98 >> 0x1f)" ( (binary_expression "(int)local_98 >> 0x1f" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < local_98)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < local_98)" ( (binary_expression "0x7f < local_98" number_literal < identifier) ))))) )) (compound_statement "{\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" { (expression_statement "uVar9 = FUN_00046180();" (assignment_expression "uVar9 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar9 = uVar9 & 0xff;" (assignment_expression "uVar9 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" else (compound_statement "{\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" { (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)local_98" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) }))))) (expression_statement "iVar7 = uVar9 + uVar12;" (assignment_expression "iVar7 = uVar9 + uVar12" identifier = (binary_expression "uVar9 + uVar12" identifier + identifier)) ;) (expression_statement "local_88 = local_98;" (assignment_expression "local_88 = local_98" identifier = identifier) ;) }) (else_clause "else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" else (compound_statement "{\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" { (expression_statement "local_88 = puVar11[6];" (assignment_expression "local_88 = puVar11[6]" identifier = (subscript_expression "puVar11[6]" identifier [ number_literal ])) ;) (expression_statement "local_98 = local_88 + puVar11[7];" (assignment_expression "local_98 = local_88 + puVar11[7]" identifier = (binary_expression "local_88 + puVar11[7]" identifier + (subscript_expression "puVar11[7]" identifier [ number_literal ]))) ;) (expression_statement "local_84 = (void *)puVar11[3];" (assignment_expression "local_84 = (void *)puVar11[3]" identifier = (cast_expression "(void *)puVar11[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[3]" identifier [ number_literal ]))) ;) (if_statement "if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" if (parenthesized_expression "(local_98 < 0x80)" ( (binary_expression "local_98 < 0x80" identifier < number_literal) )) (compound_statement "{\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" { (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)local_98" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" else (compound_statement "{\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" { (expression_statement "uVar9 = FUN_00046180();" (assignment_expression "uVar9 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar9 = uVar9 & 0xff;" (assignment_expression "uVar9 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) }))) (if_statement "if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }" if (parenthesized_expression "(puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2])" ( (binary_expression "puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]" (binary_expression "puVar11[2] == 0" (subscript_expression "puVar11[2]" identifier [ number_literal ]) == number_literal) && (binary_expression "(uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]" (call_expression "(uint)(0x7f < (uint)puVar11[1])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < (uint)puVar11[1])" ( (binary_expression "0x7f < (uint)puVar11[1]" number_literal < (cast_expression "(uint)puVar11[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ))) <= (binary_expression "(uint)-puVar11[2]" (parenthesized_expression "(uint)" ( identifier )) - (subscript_expression "puVar11[2]" identifier [ number_literal ])))) )) (compound_statement "{\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }" { (expression_statement "*(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];" (assignment_expression "*(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1]" (pointer_expression "*(char *)((int)__src + uVar12 + uVar9)" * (cast_expression "(char *)((int)__src + uVar12 + uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__src + uVar12 + uVar9)" ( (binary_expression "(int)__src + uVar12 + uVar9" (binary_expression "(int)__src + uVar12" (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) )))) = (cast_expression "(char)puVar11[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar7 = FUN_00046180();\n    }" else (compound_statement "{\n      iVar7 = FUN_00046180();\n    }" { (expression_statement "iVar7 = FUN_00046180();" (assignment_expression "iVar7 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "iVar7 = uVar12 + uVar9 + iVar7;" (assignment_expression "iVar7 = uVar12 + uVar9 + iVar7" identifier = (binary_expression "uVar12 + uVar9 + iVar7" (binary_expression "uVar12 + uVar9" identifier + identifier) + identifier)) ;) }))) (expression_statement "pvVar13 = (void *)((int)__src + iVar7);" (assignment_expression "pvVar13 = (void *)((int)__src + iVar7)" identifier = (cast_expression "(void *)((int)__src + iVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__src + iVar7)" ( (binary_expression "(int)__src + iVar7" (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" if (parenthesized_expression "((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98)" ( (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98" (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar1 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xe)" ( (binary_expression "iVar1 + 0xe" identifier + number_literal) )))) < (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = *(int *)(iVar1 + 0x34);" (assignment_expression "iVar3 = *(int *)(iVar1 + 0x34)" identifier = (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = (uint)*(ushort *)(iVar1 + 0x10);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar1 + 0x10)" identifier = (binary_expression "(uint)*(ushort *)(iVar1 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar1 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;" (assignment_expression "uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9" identifier = (binary_expression "(local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9" (binary_expression "(local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U)" (parenthesized_expression "(local_98 - uVar9)" ( (binary_expression "local_98 - uVar9" identifier - identifier) )) % (parenthesized_expression "(*(int *)(iVar3 + 0x24) - 4U)" ( (binary_expression "*(int *)(iVar3 + 0x24) - 4U" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) - number_literal) ))) + identifier)) ;) (if_statement "if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }" if (parenthesized_expression "((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12)" ( (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12" (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar1 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xe)" ( (binary_expression "iVar1 + 0xe" identifier + number_literal) )))) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar12 = uVar9;\n    }" { (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) })) (expression_statement "local_60 = iVar7 + uVar12 + 4;" (assignment_expression "local_60 = iVar7 + uVar12 + 4" identifier = (binary_expression "iVar7 + uVar12 + 4" (binary_expression "iVar7 + uVar12" identifier + identifier) + number_literal)) ;) (expression_statement "local_78 = (uint *)(iVar7 + uVar12 + (int)__src);" (assignment_expression "local_78 = (uint *)(iVar7 + uVar12 + (int)__src)" identifier = (cast_expression "(uint *)(iVar7 + uVar12 + (int)__src)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar12 + (int)__src)" ( (binary_expression "iVar7 + uVar12 + (int)__src" (binary_expression "iVar7 + uVar12" identifier + identifier) + (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (while_statement "while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }" { (expression_statement "uVar9 = local_98;" (assignment_expression "uVar9 = local_98" identifier = identifier) ;) (if_statement "if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }" if (parenthesized_expression "((int)uVar12 < (int)local_98)" ( (binary_expression "(int)uVar12 < (int)local_98" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar9 = uVar12;\n      }" { (expression_statement "uVar9 = uVar12;" (assignment_expression "uVar9 = uVar12" identifier = identifier) ;) })) (expression_statement "__n = uVar9;" (assignment_expression "__n = uVar9" identifier = identifier) ;) (if_statement "if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" if (parenthesized_expression "(((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1))" ( (binary_expression "((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)" (parenthesized_expression "((int)local_88 < (int)uVar9)" ( (binary_expression "(int)local_88 < (int)uVar9" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(__n = local_88, (int)local_88 < 1)" ( (comma_expression "__n = local_88, (int)local_88 < 1" (assignment_expression "__n = local_88" identifier = identifier) , (binary_expression "(int)local_88 < 1" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) (compound_statement "{\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }" { (expression_statement "memset(pvVar13,0,uVar9);" (call_expression "memset(pvVar13,0,uVar9)" identifier (argument_list "(pvVar13,0,uVar9)" ( identifier , number_literal , identifier ))) ;) (expression_statement "__n = uVar9;" (assignment_expression "__n = uVar9" identifier = identifier) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) }) (else_clause "else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" else (compound_statement "{\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" { (expression_statement "memcpy(pvVar13,local_84,__n);" (call_expression "memcpy(pvVar13,local_84,__n)" identifier (argument_list "(pvVar13,local_84,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) }))) (expression_statement "local_98 = local_98 - __n;" (assignment_expression "local_98 = local_98 - __n" identifier = (binary_expression "local_98 - __n" identifier - identifier)) ;) (expression_statement "local_44 = uVar9;" (assignment_expression "local_44 = uVar9" identifier = identifier) ;) (if_statement "if ((int)local_98 < 1) break;" if (parenthesized_expression "((int)local_98 < 1)" ( (binary_expression "(int)local_98 < 1" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_84 = (void *)((int)local_84 + __n);" (assignment_expression "local_84 = (void *)((int)local_84 + __n)" identifier = (cast_expression "(void *)((int)local_84 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_84 + __n)" ( (binary_expression "(int)local_84 + __n" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_88 = local_88 - __n;" (assignment_expression "local_88 = local_88 - __n" identifier = (binary_expression "local_88 - __n" identifier - identifier)) ;) (expression_statement "uVar12 = uVar12 - __n;" (assignment_expression "uVar12 = uVar12 - __n" identifier = (binary_expression "uVar12 - __n" identifier - identifier)) ;) (if_statement "if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }" if (parenthesized_expression "(*(char *)(iVar3 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar3 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" * (cast_expression "(char *)(iVar3 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x11)" ( (binary_expression "iVar3 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }" { (expression_statement "uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);" (assignment_expression "uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20)" identifier = (binary_expression "*(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20)" (pointer_expression "*(uint *)(&DAT_000d935d + unaff_EDI)" * (cast_expression "(uint *)(&DAT_000d935d + unaff_EDI)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000d935d + unaff_EDI)" ( (binary_expression "&DAT_000d935d + unaff_EDI" (pointer_expression "&DAT_000d935d" & identifier) + identifier) )))) / (pointer_expression "*(uint *)(iVar3 + 0x20)" * (cast_expression "(uint *)(iVar3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) (do_statement "do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));" do (compound_statement "{\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          }" { (expression_statement "uVar10 = uVar12;" (assignment_expression "uVar10 = uVar12" identifier = identifier) ;) (expression_statement "local_44 = uVar10 + 1;" (assignment_expression "local_44 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }" if (parenthesized_expression "(1 < local_44)" ( (binary_expression "1 < local_44" number_literal < identifier) )) (compound_statement "{\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }" { (expression_statement "uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;" (assignment_expression "uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1" identifier = (binary_expression "*(uint *)(iVar3 + 0x24) / 5 + 1" (binary_expression "*(uint *)(iVar3 + 0x24) / 5" (pointer_expression "*(uint *)(iVar3 + 0x24)" * (cast_expression "(uint *)(iVar3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) / number_literal) + number_literal)) ;) (expression_statement "iVar7 = ((uVar10 - 1) / uVar12) * uVar12;" (assignment_expression "iVar7 = ((uVar10 - 1) / uVar12) * uVar12" identifier = (binary_expression "((uVar10 - 1) / uVar12) * uVar12" (parenthesized_expression "((uVar10 - 1) / uVar12)" ( (binary_expression "(uVar10 - 1) / uVar12" (parenthesized_expression "(uVar10 - 1)" ( (binary_expression "uVar10 - 1" identifier - number_literal) )) / identifier) )) * identifier)) ;) (expression_statement "uVar12 = iVar7 + 2;" (assignment_expression "uVar12 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (if_statement "if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }" if (parenthesized_expression "(uVar12 == uVar8 + 1)" ( (binary_expression "uVar12 == uVar8 + 1" identifier == (binary_expression "uVar8 + 1" identifier + number_literal)) )) (compound_statement "{\n                uVar12 = iVar7 + 3;\n              }" { (expression_statement "uVar12 = iVar7 + 3;" (assignment_expression "uVar12 = iVar7 + 3" identifier = (binary_expression "iVar7 + 3" identifier + number_literal)) ;) })) })) }) while (parenthesized_expression "((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8))" ( (binary_expression "(local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8)" (parenthesized_expression "(local_44 == uVar12)" ( (binary_expression "local_44 == uVar12" identifier == identifier) )) || (parenthesized_expression "(uVar12 = local_44, uVar10 == uVar8)" ( (comma_expression "uVar12 = local_44, uVar10 == uVar8" (assignment_expression "uVar12 = local_44" identifier = identifier) , (binary_expression "uVar10 == uVar8" identifier == identifier)) ))) )) ;) })) (expression_statement "local_48 = FUN_0009c6f0(local_44,0);" (assignment_expression "local_48 = FUN_0009c6f0(local_44,0)" identifier = (call_expression "FUN_0009c6f0(local_44,0)" identifier (argument_list "(local_44,0)" ( identifier , number_literal )))) ;) (if_statement "if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" if (parenthesized_expression "((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0))" ( (binary_expression "(*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)" (parenthesized_expression "(*(char *)(iVar3 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" * (cast_expression "(char *)(iVar3 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x11)" ( (binary_expression "iVar3 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) ))) )) (compound_statement "{\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }" { (labeled_statement "LAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" statement_identifier : (if_statement "if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" { (labeled_statement "LAB_000a3710:\n            iVar7 = local_48;" statement_identifier : (expression_statement "iVar7 = local_48;" (assignment_expression "iVar7 = local_48" identifier = identifier) ;)) (if_statement "if (local_80 == 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_50 = local_48;" (assignment_expression "local_50 = local_48" identifier = identifier) ;) (expression_statement "iVar7 = local_48;" (assignment_expression "iVar7 = local_48" identifier = identifier) ;) (if_statement "if (local_48 == 0) goto LAB_000a36ac;" if (parenthesized_expression "(local_48 == 0)" ( (binary_expression "local_48 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a36ac;" goto statement_identifier ;)) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) }))) }) (else_clause "else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" else (compound_statement "{\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" { (expression_statement "FUN_0009d070(uVar9,&local_48);" (call_expression "FUN_0009d070(uVar9,&local_48)" identifier (argument_list "(uVar9,&local_48)" ( identifier , (pointer_expression "&local_48" & identifier) ))) ;) (if_statement "if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" { (if_statement "if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }" { (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000a32d2;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a3710;" goto statement_identifier ;) })) }))) (expression_statement "*local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;" (assignment_expression "*local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18" (pointer_expression "*local_78" * identifier) = (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" ( (binary_expression "local_44 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" ( (binary_expression "local_44 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_44 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_80 != 0) {\n          FUN_000386c0();\n        }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_000386c0();\n        }" { (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_80 = local_40;" (assignment_expression "local_80 = local_40" identifier = identifier) ;) (expression_statement "local_78 = *(uint **)(local_40 + 0x38);" (assignment_expression "local_78 = *(uint **)(local_40 + 0x38)" identifier = (pointer_expression "*(uint **)(local_40 + 0x38)" * (cast_expression "(uint **)(local_40 + 0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_40 + 0x38)" ( (binary_expression "local_40 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*local_78 = 0;" (assignment_expression "*local_78 = 0" (pointer_expression "*local_78" * identifier) = number_literal) ;) (expression_statement "pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);" (assignment_expression "pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4)" identifier = (cast_expression "(void *)(*(int *)(local_40 + 0x38) + 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_40 + 0x38) + 4)" ( (binary_expression "*(int *)(local_40 + 0x38) + 4" (pointer_expression "*(int *)(local_40 + 0x38)" * (cast_expression "(int *)(local_40 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x38)" ( (binary_expression "local_40 + 0x38" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar12 = *(int *)(iVar3 + 0x24) - 4;" (assignment_expression "uVar12 = *(int *)(iVar3 + 0x24) - 4" identifier = (binary_expression "*(int *)(iVar3 + 0x24) - 4" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) - number_literal)) ;) }) (else_clause "else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" else (compound_statement "{\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" { (expression_statement "pvVar13 = (void *)((int)pvVar13 + __n);" (assignment_expression "pvVar13 = (void *)((int)pvVar13 + __n)" identifier = (cast_expression "(void *)((int)pvVar13 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar13 + __n)" ( (binary_expression "(int)pvVar13 + __n" (cast_expression "(int)pvVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) })) (if_statement "if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a36ac;" goto statement_identifier ;) })) (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = *(ushort *)(pcVar5 + 0x3e);" (assignment_expression "uVar14 = *(ushort *)(pcVar5 + 0x3e)" identifier = (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" * (cast_expression "(ushort *)(pcVar5 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x3e)" ( (binary_expression "pcVar5 + 0x3e" identifier + number_literal) ))))) ;) (if_statement "if (local_4c == 0) goto LAB_000a3433;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a3433;" goto statement_identifier ;)) (labeled_statement "LAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" statement_identifier : (if_statement "if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" if (parenthesized_expression "((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0))" ( (binary_expression "(local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)" (parenthesized_expression "(local_4c < 0)" ( (binary_expression "local_4c < 0" identifier < number_literal) )) && (parenthesized_expression "(*(short *)(iVar1 + 0x16) != 0)" ( (binary_expression "*(short *)(iVar1 + 0x16) != 0" (pointer_expression "*(short *)(iVar1 + 0x16)" * (cast_expression "(short *)(iVar1 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x16)" ( (binary_expression "iVar1 + 0x16" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" { (expression_statement "*(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;" (assignment_expression "*(ushort *)(pcVar5 + 0x3e) = uVar14 + 1" (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" * (cast_expression "(ushort *)(pcVar5 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x3e)" ( (binary_expression "pcVar5 + 0x3e" identifier + number_literal) )))) = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "pcVar5[1] = pcVar5[1] & 0xfd;" (assignment_expression "pcVar5[1] = pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (binary_expression "pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal)) ;) }))) }) (else_clause "else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" else (compound_statement "{\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" { (expression_statement "local_60 = 4;" (assignment_expression "local_60 = 4" identifier = number_literal) ;) (if_statement "if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }" if (parenthesized_expression "(3 < (int)(iVar7 + local_98))" ( (binary_expression "3 < (int)(iVar7 + local_98)" number_literal < (cast_expression "(int)(iVar7 + local_98)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 + local_98)" ( (binary_expression "iVar7 + local_98" identifier + identifier) )))) )) (compound_statement "{\n      local_60 = iVar7 + local_98;\n    }" { (expression_statement "local_60 = iVar7 + local_98;" (assignment_expression "local_60 = iVar7 + local_98" identifier = (binary_expression "iVar7 + local_98" identifier + identifier)) ;) })) (expression_statement "memcpy(pvVar13,local_84,local_88);" (call_expression "memcpy(pvVar13,local_84,local_88)" identifier (argument_list "(pvVar13,local_84,local_88)" ( identifier , identifier , identifier ))) ;) (expression_statement "memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);" (call_expression "memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88)" identifier (argument_list "((void *)((int)pvVar13 + local_88),0,local_98 - local_88)" ( (cast_expression "(void *)((int)pvVar13 + local_88)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar13 + local_88)" ( (binary_expression "(int)pvVar13 + local_88" (cast_expression "(int)pvVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , number_literal , (binary_expression "local_98 - local_88" identifier - identifier) ))) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);" statement_identifier : (expression_statement "uVar14 = *(ushort *)(pcVar5 + 0x3e);" (assignment_expression "uVar14 = *(ushort *)(pcVar5 + 0x3e)" identifier = (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" * (cast_expression "(ushort *)(pcVar5 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x3e)" ( (binary_expression "pcVar5 + 0x3e" identifier + number_literal) ))))) ;)) (if_statement "if (local_4c != 0) goto LAB_000a36c0;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a36c0;" goto statement_identifier ;)) (labeled_statement "LAB_000a3433:\n    iVar7 = FUN_00098750();" statement_identifier : (expression_statement "iVar7 = FUN_00098750();" (assignment_expression "iVar7 = FUN_00098750()" identifier = (call_expression "FUN_00098750()" identifier (argument_list "()" ( )))) ;)) (expression_statement "local_50 = iVar7;" (assignment_expression "local_50 = iVar7" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (expression_statement "uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);" (assignment_expression "uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" identifier = (pointer_expression "*(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" * (cast_expression "(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" ( (binary_expression "*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2" (pointer_expression "*(int *)(iVar1 + 0x40)" * (cast_expression "(int *)(iVar1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) + (binary_expression "(uint)uVar14 * 2" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "__dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));" (assignment_expression "__dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" identifier = (cast_expression "(undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" ( (binary_expression "(uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38)" (call_expression "(uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18))" ( (binary_expression "(uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)" (parenthesized_expression "(uVar14 << 8 | uVar14 >> 8)" ( (binary_expression "uVar14 << 8 | uVar14 >> 8" (binary_expression "uVar14 << 8" identifier << number_literal) | (binary_expression "uVar14 >> 8" identifier >> number_literal)) )) & (pointer_expression "*(ushort *)(iVar1 + 0x18)" * (cast_expression "(ushort *)(iVar1 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ))) + (pointer_expression "*(int *)(iVar1 + 0x38)" * (cast_expression "(int *)(iVar1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x38)" ( (binary_expression "iVar1 + 0x38" identifier + number_literal) ))))) )))) ;) (if_statement "if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }" if (parenthesized_expression "(*(char *)(iVar1 + 8) == '\0')" ( (binary_expression "*(char *)(iVar1 + 8) == '\0'" (pointer_expression "*(char *)(iVar1 + 8)" * (cast_expression "(char *)(iVar1 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *__src = *__dest;\n    }" { (expression_statement "*__src = *__dest;" (assignment_expression "*__src = *__dest" (pointer_expression "*__src" * identifier) = (pointer_expression "*__dest" * identifier)) ;) })) (expression_statement "local_50 = FUN_0009e3e0();" (assignment_expression "local_50 = FUN_0009e3e0()" identifier = (call_expression "FUN_0009e3e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       )" ( (binary_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))" (parenthesized_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))))" ( (binary_expression "(local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))" (parenthesized_expression "(local_2e == local_60)" ( (binary_expression "local_2e == local_60" identifier == identifier) )) && (parenthesized_expression "((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))" ( (binary_expression "(uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))" (cast_expression "(uint)local_30" ( (type_descriptor "uint" type_identifier) ) identifier) == (call_expression "CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))" identifier (argument_list "(uStack_31,CONCAT12(local_32,uStack_34))" ( identifier , (call_expression "CONCAT12(local_32,uStack_34)" identifier (argument_list "(local_32,uStack_34)" ( identifier , identifier ))) )))) ))) )) && (parenthesized_expression "((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))" ( (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10)))" ( (binary_expression "*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))" (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" * (cast_expression "(char *)(iVar2 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x11)" ( (binary_expression "iVar2 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))" ( (binary_expression "(int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10)" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0x10)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar1 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }" { (if_statement "if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }" if (parenthesized_expression "(*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest)" ( (binary_expression "*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest" (pointer_expression "*(uint *)(iVar1 + 0x3c)" * (cast_expression "(uint *)(iVar1 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) < (binary_expression "local_60 + (int)__dest" identifier + (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }" { (expression_statement "FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);" (call_expression "FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5)" identifier (argument_list "(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5)" ( number_literal , (binary_expression "unaff_EDI + 0x7c78b" identifier + number_literal) , (binary_expression "unaff_EDI + 0x7c9c6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x796f5" identifier + number_literal) ))) ;) (expression_statement "iVar7 = 0xb;" (assignment_expression "iVar7 = 0xb" identifier = number_literal) ;) }) (else_clause "else {\n        memcpy(__dest,__src,local_60);\n      }" else (compound_statement "{\n        memcpy(__dest,__src,local_60);\n      }" { (expression_statement "memcpy(__dest,__src,local_60);" (call_expression "memcpy(__dest,__src,local_60)" identifier (argument_list "(__dest,__src,local_60)" ( identifier , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;" if (parenthesized_expression "((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))" ( (binary_expression "(local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0)" (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) || (parenthesized_expression "(FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0)" ( (comma_expression "FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0" (call_expression "FUN_0006ff70(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) ))) , (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) }))) (expression_statement "FUN_0009e630(local_60,0,0,&local_50);" (call_expression "FUN_0009e630(local_60,0,0,&local_50)" identifier (argument_list "(local_60,0,0,&local_50)" ( identifier , number_literal , number_literal , (pointer_expression "&local_50" & identifier) ))) ;) (expression_statement "pcVar5[0x2e] = '\0';" (assignment_expression "pcVar5[0x2e] = '\0'" (subscript_expression "pcVar5[0x2e]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar5[0x2f] = '\0';" (assignment_expression "pcVar5[0x2f] = '\0'" (subscript_expression "pcVar5[0x2f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0xc) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xc)" * (cast_expression "(char *)(iVar1 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }" { (expression_statement "pcVar5[1] = pcVar5[1] & 0xfd;" (assignment_expression "pcVar5[1] = pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (binary_expression "pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_50 = FUN_000a0160();" (assignment_expression "local_50 = FUN_000a0160()" identifier = (call_expression "FUN_000a0160()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;" (assignment_expression "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0" (pointer_expression "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc)" * (cast_expression "(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar5 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(pcVar5 + 0x6c) + 0xc" (pointer_expression "*(int *)(pcVar5 + 0x6c)" * (cast_expression "(int *)(pcVar5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x6c)" ( (binary_expression "pcVar5 + 0x6c" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (expression_statement "*pcVar5 = '\x01';" (assignment_expression "*pcVar5 = '\x01'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }" if (parenthesized_expression "(((extraout_ECX & 2) != 0) && (local_50 == 0))" ( (binary_expression "((extraout_ECX & 2) != 0) && (local_50 == 0)" (parenthesized_expression "((extraout_ECX & 2) != 0)" ( (binary_expression "(extraout_ECX & 2) != 0" (parenthesized_expression "(extraout_ECX & 2)" ( (binary_expression "extraout_ECX & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }" { (expression_statement "FUN_00049010();" (call_expression "FUN_00049010()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }" if (parenthesized_expression "(*(int *)(pcVar5 + 0x68) != 0)" ( (binary_expression "*(int *)(pcVar5 + 0x68) != 0" (pointer_expression "*(int *)(pcVar5 + 0x68)" * (cast_expression "(int *)(pcVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x68)" ( (binary_expression "pcVar5 + 0x68" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }" { (expression_statement "pvVar13 = (void *)FUN_000421f0();" (assignment_expression "pvVar13 = (void *)FUN_000421f0()" identifier = (cast_expression "(void *)FUN_000421f0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(void **)(pcVar5 + 0x10) = pvVar13;" (assignment_expression "*(void **)(pcVar5 + 0x10) = pvVar13" (pointer_expression "*(void **)(pcVar5 + 0x10)" * (cast_expression "(void **)(pcVar5 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar5 + 0x10)" ( (binary_expression "pcVar5 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" identifier = number_literal) ;) (if_statement "if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }" if (parenthesized_expression "(pvVar13 != (void *)0x0)" ( (binary_expression "pvVar13 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }" { (expression_statement "memcpy(pvVar13,(void *)*puVar11,puVar11[1]);" (call_expression "memcpy(pvVar13,(void *)*puVar11,puVar11[1])" identifier (argument_list "(pvVar13,(void *)*puVar11,puVar11[1])" ( identifier , (cast_expression "(void *)*puVar11" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier)) , (subscript_expression "puVar11[1]" identifier [ number_literal ]) ))) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) })) })) (expression_statement "*pcVar5 = '\x03';" (assignment_expression "*pcVar5 = '\x03'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "uVar4 = puVar11[1];" (assignment_expression "uVar4 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(pcVar5 + 0x34) = puVar11[2];" (assignment_expression "*(undefined4 *)(pcVar5 + 0x34) = puVar11[2]" (pointer_expression "*(undefined4 *)(pcVar5 + 0x34)" * (cast_expression "(undefined4 *)(pcVar5 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x34)" ( (binary_expression "pcVar5 + 0x34" identifier + number_literal) )))) = (subscript_expression "puVar11[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(pcVar5 + 0x30) = uVar4;" (assignment_expression "*(undefined4 *)(pcVar5 + 0x30) = uVar4" (pointer_expression "*(undefined4 *)(pcVar5 + 0x30)" * (cast_expression "(undefined4 *)(pcVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x30)" ( (binary_expression "pcVar5 + 0x30" identifier + number_literal) )))) = identifier) ;) })) })) (labeled_statement "LAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\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 iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) }))) comment (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int sqlite3BtreeInsert(BtCursor *pCur,BtreePayload *pX,int flags,int seekResult)\n\n{\n  int iVar1;\n  Btree *pBVar2;\n  BtShared *pBVar3;\n  MemPage *pPage;\n  u8 *pCell;\n  BtShared *pBt;\n  undefined4 uVar4;\n  Pgno parent;\n  BtCursor *pExcept;\n  uchar *puVar5;\n  int iVar6;\n  void *__dest;\n  uint extraout_ECX;\n  Pgno *pPVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  Pgno *pPVar12;\n  u8 *__dest_00;\n  int unaff_EDI;\n  Pgno *pPVar13;\n  Pgno *__n;\n  int in_GS_OFFSET;\n  undefined8 uVar14;\n  Pgno *pPgno;\n  int *in_stack_ffffff60;\n  BtCursor *in_stack_ffffff64;\n  BtreePayload *in_stack_ffffff68;\n  Pgno *local_88;\n  void *local_84;\n  KeyInfo *local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int loc;\n  int rc;\n  Pgno pgnoOvfl;\n  UnpackedRecord r;\n  ushort local_30;\n  ushort local_2e;\n  \n  uVar14 = __x86_get_pc_thunk_di();\n  puVar10 = (undefined4 *)((ulonglong)uVar14 >> 0x20);\n  pExcept = (BtCursor *)uVar14;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  loc = (int)pCur;\n  if (pExcept->eState == '\x04') {\n    iVar6 = pExcept->skipNext;\n    goto LAB_000a33b0;\n  }\n  pBVar2 = pExcept->pBtree;\n  pBVar3 = pBVar2->pBt;\n  if ((pExcept->curFlags & 0x20) != 0) {\n    in_stack_ffffff60 = (int *)0xa3643;\n    local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);\n    iVar6 = local_50;\n    if (local_50 != 0) goto LAB_000a33b0;\n  }\n  if (pExcept->pKeyInfo == (KeyInfo *)0x0) {\n    if (pBVar2->hasIncrblobCur != '\0') {\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }\n    if (((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)) {\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }\n    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\n  else if (loc == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  pPage = pExcept->pPage;\n  uVar11 = (uint)pPage->childPtrSize;\n  pCell = pBVar3->pTmpSpace;\n  puVar5 = pCell + uVar11;\n  if (pPage->intKey == '\0') {\n    pPVar7 = (Pgno *)puVar10[1];\n    local_84 = (void *)*puVar10;\n    if (pPVar7 < (Pgno *)0x80) {\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }\n    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    iVar6 = uVar8 + uVar11;\n    local_88 = pPVar7;\n  }\n  else {\n    local_88 = (Pgno *)puVar10[6];\n    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);\n    local_84 = (void *)puVar10[3];\n    if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }\n    iVar6 = uVar11 + uVar8 + iVar6;\n  }\n  __dest_00 = pCell + iVar6;\n  if ((int)(uint)pPage->maxLocal < (int)pPVar7) {\n    pgnoOvfl = 0;\n    local_80 = (KeyInfo *)0x0;\n    pBt = pPage->pBt;\n    pPVar13 = (Pgno *)(uint)pPage->minLocal;\n    pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);\n    if ((int)(uint)pPage->maxLocal < (int)pPVar12) {\n      pPVar12 = pPVar13;\n    }\n    local_60 = iVar6 + (int)pPVar12 + 4;\n    local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);\n    while( true ) {\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }\n    if (local_80 == (KeyInfo *)0x0) {\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }\n    sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n    local_50 = 0;\n    uVar11 = (uint)pExcept->ix;\n    if (loc == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }\n    pPVar12 = pPVar7;\n    memcpy(__dest_00,local_84,(size_t)local_88);\n    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;\n    pPVar7 = pPVar12;\n    if (loc != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);\n    local_50 = iVar6;\n    if (iVar6 != 0) goto LAB_000a33b0;\n    puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);\n    if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }\n    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar6 = local_50;\n    if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  insertCell(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50);\n  (pExcept->info).nSize = 0;\n  iVar6 = local_50;\n  if (pPage->nOverflow != '\0') {\n    pExcept->curFlags = pExcept->curFlags & 0xfd;\n    local_50 = balance(pExcept);\n    pExcept->pPage->nOverflow = '\0';\n    pExcept->eState = '\x01';\n    iVar6 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" (function_definition "int sqlite3BtreeInsert(BtCursor *pCur,BtreePayload *pX,int flags,int seekResult)\n\n{\n  int iVar1;\n  Btree *pBVar2;\n  BtShared *pBVar3;\n  MemPage *pPage;\n  u8 *pCell;\n  BtShared *pBt;\n  undefined4 uVar4;\n  Pgno parent;\n  BtCursor *pExcept;\n  uchar *puVar5;\n  int iVar6;\n  void *__dest;\n  uint extraout_ECX;\n  Pgno *pPVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  Pgno *pPVar12;\n  u8 *__dest_00;\n  int unaff_EDI;\n  Pgno *pPVar13;\n  Pgno *__n;\n  int in_GS_OFFSET;\n  undefined8 uVar14;\n  Pgno *pPgno;\n  int *in_stack_ffffff60;\n  BtCursor *in_stack_ffffff64;\n  BtreePayload *in_stack_ffffff68;\n  Pgno *local_88;\n  void *local_84;\n  KeyInfo *local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int loc;\n  int rc;\n  Pgno pgnoOvfl;\n  UnpackedRecord r;\n  ushort local_30;\n  ushort local_2e;\n  \n  uVar14 = __x86_get_pc_thunk_di();\n  puVar10 = (undefined4 *)((ulonglong)uVar14 >> 0x20);\n  pExcept = (BtCursor *)uVar14;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  loc = (int)pCur;\n  if (pExcept->eState == '\x04') {\n    iVar6 = pExcept->skipNext;\n    goto LAB_000a33b0;\n  }\n  pBVar2 = pExcept->pBtree;\n  pBVar3 = pBVar2->pBt;\n  if ((pExcept->curFlags & 0x20) != 0) {\n    in_stack_ffffff60 = (int *)0xa3643;\n    local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);\n    iVar6 = local_50;\n    if (local_50 != 0) goto LAB_000a33b0;\n  }\n  if (pExcept->pKeyInfo == (KeyInfo *)0x0) {\n    if (pBVar2->hasIncrblobCur != '\0') {\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }\n    if (((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)) {\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }\n    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\n  else if (loc == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  pPage = pExcept->pPage;\n  uVar11 = (uint)pPage->childPtrSize;\n  pCell = pBVar3->pTmpSpace;\n  puVar5 = pCell + uVar11;\n  if (pPage->intKey == '\0') {\n    pPVar7 = (Pgno *)puVar10[1];\n    local_84 = (void *)*puVar10;\n    if (pPVar7 < (Pgno *)0x80) {\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }\n    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    iVar6 = uVar8 + uVar11;\n    local_88 = pPVar7;\n  }\n  else {\n    local_88 = (Pgno *)puVar10[6];\n    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);\n    local_84 = (void *)puVar10[3];\n    if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }\n    iVar6 = uVar11 + uVar8 + iVar6;\n  }\n  __dest_00 = pCell + iVar6;\n  if ((int)(uint)pPage->maxLocal < (int)pPVar7) {\n    pgnoOvfl = 0;\n    local_80 = (KeyInfo *)0x0;\n    pBt = pPage->pBt;\n    pPVar13 = (Pgno *)(uint)pPage->minLocal;\n    pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);\n    if ((int)(uint)pPage->maxLocal < (int)pPVar12) {\n      pPVar12 = pPVar13;\n    }\n    local_60 = iVar6 + (int)pPVar12 + 4;\n    local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);\n    while( true ) {\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }\n    if (local_80 == (KeyInfo *)0x0) {\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }\n    sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n    local_50 = 0;\n    uVar11 = (uint)pExcept->ix;\n    if (loc == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }\n    pPVar12 = pPVar7;\n    memcpy(__dest_00,local_84,(size_t)local_88);\n    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;\n    pPVar7 = pPVar12;\n    if (loc != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);\n    local_50 = iVar6;\n    if (iVar6 != 0) goto LAB_000a33b0;\n    puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);\n    if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }\n    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar6 = local_50;\n    if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  insertCell(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50);\n  (pExcept->info).nSize = 0;\n  iVar6 = local_50;\n  if (pPage->nOverflow != '\0') {\n    pExcept->curFlags = pExcept->curFlags & 0xfd;\n    local_50 = balance(pExcept);\n    pExcept->pPage->nOverflow = '\0';\n    pExcept->eState = '\x01';\n    iVar6 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "sqlite3BtreeInsert(BtCursor *pCur,BtreePayload *pX,int flags,int seekResult)" identifier (parameter_list "(BtCursor *pCur,BtreePayload *pX,int flags,int seekResult)" ( (parameter_declaration "BtCursor *pCur" type_identifier (pointer_declarator "*pCur" * identifier)) , (parameter_declaration "BtreePayload *pX" type_identifier (pointer_declarator "*pX" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) , (parameter_declaration "int seekResult" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  Btree *pBVar2;\n  BtShared *pBVar3;\n  MemPage *pPage;\n  u8 *pCell;\n  BtShared *pBt;\n  undefined4 uVar4;\n  Pgno parent;\n  BtCursor *pExcept;\n  uchar *puVar5;\n  int iVar6;\n  void *__dest;\n  uint extraout_ECX;\n  Pgno *pPVar7;\n  uint uVar8;\n  uint uVar9;\n  undefined4 *puVar10;\n  uint uVar11;\n  Pgno *pPVar12;\n  u8 *__dest_00;\n  int unaff_EDI;\n  Pgno *pPVar13;\n  Pgno *__n;\n  int in_GS_OFFSET;\n  undefined8 uVar14;\n  Pgno *pPgno;\n  int *in_stack_ffffff60;\n  BtCursor *in_stack_ffffff64;\n  BtreePayload *in_stack_ffffff68;\n  Pgno *local_88;\n  void *local_84;\n  KeyInfo *local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int loc;\n  int rc;\n  Pgno pgnoOvfl;\n  UnpackedRecord r;\n  ushort local_30;\n  ushort local_2e;\n  \n  uVar14 = __x86_get_pc_thunk_di();\n  puVar10 = (undefined4 *)((ulonglong)uVar14 >> 0x20);\n  pExcept = (BtCursor *)uVar14;\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  loc = (int)pCur;\n  if (pExcept->eState == '\x04') {\n    iVar6 = pExcept->skipNext;\n    goto LAB_000a33b0;\n  }\n  pBVar2 = pExcept->pBtree;\n  pBVar3 = pBVar2->pBt;\n  if ((pExcept->curFlags & 0x20) != 0) {\n    in_stack_ffffff60 = (int *)0xa3643;\n    local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);\n    iVar6 = local_50;\n    if (local_50 != 0) goto LAB_000a33b0;\n  }\n  if (pExcept->pKeyInfo == (KeyInfo *)0x0) {\n    if (pBVar2->hasIncrblobCur != '\0') {\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }\n    if (((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)) {\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }\n    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\n  else if (loc == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  pPage = pExcept->pPage;\n  uVar11 = (uint)pPage->childPtrSize;\n  pCell = pBVar3->pTmpSpace;\n  puVar5 = pCell + uVar11;\n  if (pPage->intKey == '\0') {\n    pPVar7 = (Pgno *)puVar10[1];\n    local_84 = (void *)*puVar10;\n    if (pPVar7 < (Pgno *)0x80) {\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }\n    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    iVar6 = uVar8 + uVar11;\n    local_88 = pPVar7;\n  }\n  else {\n    local_88 = (Pgno *)puVar10[6];\n    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);\n    local_84 = (void *)puVar10[3];\n    if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }\n    iVar6 = uVar11 + uVar8 + iVar6;\n  }\n  __dest_00 = pCell + iVar6;\n  if ((int)(uint)pPage->maxLocal < (int)pPVar7) {\n    pgnoOvfl = 0;\n    local_80 = (KeyInfo *)0x0;\n    pBt = pPage->pBt;\n    pPVar13 = (Pgno *)(uint)pPage->minLocal;\n    pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);\n    if ((int)(uint)pPage->maxLocal < (int)pPVar12) {\n      pPVar12 = pPVar13;\n    }\n    local_60 = iVar6 + (int)pPVar12 + 4;\n    local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);\n    while( true ) {\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }\n    if (local_80 == (KeyInfo *)0x0) {\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }\n    sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n    local_50 = 0;\n    uVar11 = (uint)pExcept->ix;\n    if (loc == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }\n    pPVar12 = pPVar7;\n    memcpy(__dest_00,local_84,(size_t)local_88);\n    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;\n    pPVar7 = pPVar12;\n    if (loc != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);\n    local_50 = iVar6;\n    if (iVar6 != 0) goto LAB_000a33b0;\n    puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);\n    if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }\n    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar6 = local_50;\n    if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  insertCell(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50);\n  (pExcept->info).nSize = 0;\n  iVar6 = local_50;\n  if (pPage->nOverflow != '\0') {\n    pExcept->curFlags = pExcept->curFlags & 0xfd;\n    local_50 = balance(pExcept);\n    pExcept->pPage->nOverflow = '\0';\n    pExcept->eState = '\x01';\n    iVar6 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "Btree *pBVar2;" type_identifier (pointer_declarator "*pBVar2" * identifier) ;) (declaration "BtShared *pBVar3;" type_identifier (pointer_declarator "*pBVar3" * identifier) ;) (declaration "MemPage *pPage;" type_identifier (pointer_declarator "*pPage" * identifier) ;) (declaration "u8 *pCell;" type_identifier (pointer_declarator "*pCell" * identifier) ;) (declaration "BtShared *pBt;" type_identifier (pointer_declarator "*pBt" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "Pgno parent;" type_identifier identifier ;) (declaration "BtCursor *pExcept;" type_identifier (pointer_declarator "*pExcept" * identifier) ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "Pgno *pPVar7;" type_identifier (pointer_declarator "*pPVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "Pgno *pPVar12;" type_identifier (pointer_declarator "*pPVar12" * identifier) ;) (declaration "u8 *__dest_00;" type_identifier (pointer_declarator "*__dest_00" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "Pgno *pPVar13;" type_identifier (pointer_declarator "*pPVar13" * identifier) ;) (declaration "Pgno *__n;" type_identifier (pointer_declarator "*__n" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar14;" type_identifier identifier ;) (declaration "Pgno *pPgno;" type_identifier (pointer_declarator "*pPgno" * identifier) ;) (declaration "int *in_stack_ffffff60;" primitive_type (pointer_declarator "*in_stack_ffffff60" * identifier) ;) (declaration "BtCursor *in_stack_ffffff64;" type_identifier (pointer_declarator "*in_stack_ffffff64" * identifier) ;) (declaration "BtreePayload *in_stack_ffffff68;" type_identifier (pointer_declarator "*in_stack_ffffff68" * identifier) ;) (declaration "Pgno *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "void *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "KeyInfo *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "uint *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "size_t local_60;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int loc;" primitive_type identifier ;) (declaration "int rc;" primitive_type identifier ;) (declaration "Pgno pgnoOvfl;" type_identifier identifier ;) (declaration "UnpackedRecord r;" type_identifier identifier ;) (declaration "ushort local_30;" type_identifier identifier ;) (declaration "ushort local_2e;" type_identifier identifier ;) (expression_statement "uVar14 = __x86_get_pc_thunk_di();" (assignment_expression "uVar14 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar10 = (undefined4 *)((ulonglong)uVar14 >> 0x20);" (assignment_expression "puVar10 = (undefined4 *)((ulonglong)uVar14 >> 0x20)" identifier = (cast_expression "(undefined4 *)((ulonglong)uVar14 >> 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar14 >> 0x20)" ( (binary_expression "(ulonglong)uVar14 >> 0x20" (cast_expression "(ulonglong)uVar14" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pExcept = (BtCursor *)uVar14;" (assignment_expression "pExcept = (BtCursor *)uVar14" identifier = (cast_expression "(BtCursor *)uVar14" ( (type_descriptor "BtCursor *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "loc = (int)pCur;" (assignment_expression "loc = (int)pCur" identifier = (cast_expression "(int)pCur" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (pExcept->eState == '\x04') {\n    iVar6 = pExcept->skipNext;\n    goto LAB_000a33b0;\n  }" if (parenthesized_expression "(pExcept->eState == '\x04')" ( (binary_expression "pExcept->eState == '\x04'" (field_expression "pExcept->eState" identifier -> field_identifier) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n    iVar6 = pExcept->skipNext;\n    goto LAB_000a33b0;\n  }" { (expression_statement "iVar6 = pExcept->skipNext;" (assignment_expression "iVar6 = pExcept->skipNext" identifier = (field_expression "pExcept->skipNext" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) (expression_statement "pBVar2 = pExcept->pBtree;" (assignment_expression "pBVar2 = pExcept->pBtree" identifier = (field_expression "pExcept->pBtree" identifier -> field_identifier)) ;) (expression_statement "pBVar3 = pBVar2->pBt;" (assignment_expression "pBVar3 = pBVar2->pBt" identifier = (field_expression "pBVar2->pBt" identifier -> field_identifier)) ;) (if_statement "if ((pExcept->curFlags & 0x20) != 0) {\n    in_stack_ffffff60 = (int *)0xa3643;\n    local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);\n    iVar6 = local_50;\n    if (local_50 != 0) goto LAB_000a33b0;\n  }" if (parenthesized_expression "((pExcept->curFlags & 0x20) != 0)" ( (binary_expression "(pExcept->curFlags & 0x20) != 0" (parenthesized_expression "(pExcept->curFlags & 0x20)" ( (binary_expression "pExcept->curFlags & 0x20" (field_expression "pExcept->curFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    in_stack_ffffff60 = (int *)0xa3643;\n    local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);\n    iVar6 = local_50;\n    if (local_50 != 0) goto LAB_000a33b0;\n  }" { (expression_statement "in_stack_ffffff60 = (int *)0xa3643;" (assignment_expression "in_stack_ffffff60 = (int *)0xa3643" identifier = (cast_expression "(int *)0xa3643" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);" (assignment_expression "local_50 = saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept)" identifier = (call_expression "saveAllCursors((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept)" identifier (argument_list "((BtShared *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept)" ( (cast_expression "(BtShared *)pBVar3->pCursor" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pBVar3->pCursor" identifier -> field_identifier)) , (field_expression "pExcept->pgnoRoot" identifier -> field_identifier) , identifier )))) ;) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if (local_50 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) })) (if_statement "if (pExcept->pKeyInfo == (KeyInfo *)0x0) {\n    if (pBVar2->hasIncrblobCur != '\0') {\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }\n    if (((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)) {\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }\n    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }\n  else if (loc == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }" if (parenthesized_expression "(pExcept->pKeyInfo == (KeyInfo *)0x0)" ( (binary_expression "pExcept->pKeyInfo == (KeyInfo *)0x0" (field_expression "pExcept->pKeyInfo" identifier -> field_identifier) == (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pBVar2->hasIncrblobCur != '\0') {\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }\n    if (((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)) {\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }\n    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }" { (if_statement "if (pBVar2->hasIncrblobCur != '\0') {\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }" if (parenthesized_expression "(pBVar2->hasIncrblobCur != '\0')" ( (binary_expression "pBVar2->hasIncrblobCur != '\0'" (field_expression "pBVar2->hasIncrblobCur" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);\n    }" { (expression_statement "invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0);" (call_expression "invalidateIncrblobCursors\n                ((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0)" identifier (argument_list "((Btree *)pBVar2->pBt,(Pgno)&pBVar2->hasIncrblobCur,*(i64 *)(puVar10 + 1),\n                 pExcept->pgnoRoot,(Btree *)0x0)" ( (cast_expression "(Btree *)pBVar2->pBt" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pBVar2->pBt" identifier -> field_identifier)) , (binary_expression "(Pgno)&pBVar2->hasIncrblobCur" (parenthesized_expression "(Pgno)" ( identifier )) & (field_expression "pBVar2->hasIncrblobCur" identifier -> field_identifier)) , (pointer_expression "*(i64 *)(puVar10 + 1)" * (cast_expression "(i64 *)(puVar10 + 1)" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 1)" ( (binary_expression "puVar10 + 1" identifier + number_literal) )))) , (field_expression "pExcept->pgnoRoot" identifier -> field_identifier) , (cast_expression "(Btree *)0x0" ( (type_descriptor "Btree *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) })) (if_statement "if (((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)) {\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }\n    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey))" ( (binary_expression "((pExcept->curFlags & 2) == 0) ||\n       (puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)" (parenthesized_expression "((pExcept->curFlags & 2) == 0)" ( (binary_expression "(pExcept->curFlags & 2) == 0" (parenthesized_expression "(pExcept->curFlags & 2)" ( (binary_expression "pExcept->curFlags & 2" (field_expression "pExcept->curFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey)" ( (binary_expression "puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||\n        puVar10[1] != (int)(pExcept->info).nKey" (binary_expression "puVar10[2] != *(int *)((int)&(pExcept->info).nKey + 4)" (subscript_expression "puVar10[2]" identifier [ number_literal ]) != (pointer_expression "*(int *)((int)&(pExcept->info).nKey + 4)" * (cast_expression "(int *)((int)&(pExcept->info).nKey + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pExcept->info).nKey + 4)" ( (binary_expression "(int)&(pExcept->info).nKey + 4" (cast_expression "(int)&(pExcept->info).nKey" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pExcept->info).nKey" & (field_expression "(pExcept->info).nKey" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) || (binary_expression "puVar10[1] != (int)(pExcept->info).nKey" (subscript_expression "puVar10[1]" identifier [ number_literal ]) != (cast_expression "(int)(pExcept->info).nKey" ( (type_descriptor "int" primitive_type) ) (field_expression "(pExcept->info).nKey" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier)))) ))) )) (compound_statement "{\n      if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }\n    }" { (if_statement "if (loc == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }" if (parenthesized_expression "(loc == 0)" ( (binary_expression "loc == 0" identifier == number_literal) )) (compound_statement "{\n        in_stack_ffffff60 = &loc;\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n        iVar6 = local_50;\n        if (local_50 != 0) goto LAB_000a33b0;\n      }" { (expression_statement "in_stack_ffffff60 = &loc;" (assignment_expression "in_stack_ffffff60 = &loc" identifier = (pointer_expression "&loc" & identifier)) ;) (expression_statement "local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);" (assignment_expression "local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68)" identifier = (call_expression "sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68)" identifier (argument_list "((BtCursor *)puVar10[1],(UnpackedRecord *)puVar10[2],\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68)" ( (cast_expression "(BtCursor *)puVar10[1]" ( (type_descriptor "BtCursor *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ])) , (cast_expression "(UnpackedRecord *)puVar10[2]" ( (type_descriptor "UnpackedRecord *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[2]" identifier [ number_literal ])) , (call_expression "CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0))" identifier (argument_list "(in_stack_ffffff60,(uint)(extraout_ECX != 0))" ( identifier , (call_expression "(uint)(extraout_ECX != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(extraout_ECX != 0)" ( (binary_expression "extraout_ECX != 0" identifier != number_literal) ))) ))) , (cast_expression "(int)in_stack_ffffff64" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int *)in_stack_ffffff68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if (local_50 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) })) }) (else_clause "else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }" else (if_statement "if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))\n    {\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6]))" ( (binary_expression "((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == puVar10[7] + puVar10[6])" (parenthesized_expression "((pExcept->info).nSize != 0)" ( (binary_expression "(pExcept->info).nSize != 0" (field_expression "(pExcept->info).nSize" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier) != number_literal) )) && (parenthesized_expression "((pExcept->info).nPayload == puVar10[7] + puVar10[6])" ( (binary_expression "(pExcept->info).nPayload == puVar10[7] + puVar10[6]" (field_expression "(pExcept->info).nPayload" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier) == (binary_expression "puVar10[7] + puVar10[6]" (subscript_expression "puVar10[7]" identifier [ number_literal ]) + (subscript_expression "puVar10[6]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }" { (expression_statement "iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);" (assignment_expression "iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68)" identifier = (call_expression "btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68)" identifier (argument_list "(in_stack_ffffff64,in_stack_ffffff68)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })))) }) (else_clause "else if (loc == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }" else (if_statement "if (loc == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }" if (parenthesized_expression "(loc == 0)" ( (binary_expression "loc == 0" identifier == number_literal) )) (compound_statement "{\n    if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }\n    in_stack_ffffff60 = (int *)0xa375b;\n    getCellInfo(pExcept);\n    if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }\n  }" { (if_statement "if ((extraout_ECX & 2) == 0) {\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }" if (parenthesized_expression "((extraout_ECX & 2) == 0)" ( (binary_expression "(extraout_ECX & 2) == 0" (parenthesized_expression "(extraout_ECX & 2)" ( (binary_expression "extraout_ECX & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }\n      iVar6 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (loc != 0) goto LAB_000a3150;\n    }" { (if_statement "if (*(u16 *)(puVar10 + 5) == 0) {\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }\n      else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }" if (parenthesized_expression "(*(u16 *)(puVar10 + 5) == 0)" ( (binary_expression "*(u16 *)(puVar10 + 5) == 0" (pointer_expression "*(u16 *)(puVar10 + 5)" * (cast_expression "(u16 *)(puVar10 + 5)" ( (type_descriptor "u16 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        in_stack_ffffff60 = &loc;\n        local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);\n      }" { (expression_statement "in_stack_ffffff60 = &loc;" (assignment_expression "in_stack_ffffff60 = &loc" identifier = (pointer_expression "&loc" & identifier)) ;) (expression_statement "local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60);" (assignment_expression "local_50 = btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60)" identifier = (call_expression "btreeMoveto(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60)" identifier (argument_list "(pExcept,(void *)*puVar10,*(i64 *)(puVar10 + 1),\n                               (uint)(extraout_ECX != 0),in_stack_ffffff60)" ( identifier , (cast_expression "(void *)*puVar10" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier)) , (pointer_expression "*(i64 *)(puVar10 + 1)" * (cast_expression "(i64 *)(puVar10 + 1)" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 1)" ( (binary_expression "puVar10 + 1" identifier + number_literal) )))) , (call_expression "(uint)(extraout_ECX != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(extraout_ECX != 0)" ( (binary_expression "extraout_ECX != 0" identifier != number_literal) ))) , identifier )))) ;) }) (else_clause "else {\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }" else (compound_statement "{\n        r.aMem = (Mem *)puVar10[4];\n        in_stack_ffffff60 = &loc;\n        r.default_rc = '\0';\n        r.errCode = '\0';\n        r.r1 = '\0';\n        r.r2 = '\0';\n        r.eqSeen = '\0';\n        r.pKeyInfo = pExcept->pKeyInfo;\n        r.nField = *(u16 *)(puVar10 + 5);\n        local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);\n      }" { (expression_statement "r.aMem = (Mem *)puVar10[4];" (assignment_expression "r.aMem = (Mem *)puVar10[4]" (field_expression "r.aMem" identifier . field_identifier) = (cast_expression "(Mem *)puVar10[4]" ( (type_descriptor "Mem *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[4]" identifier [ number_literal ]))) ;) (expression_statement "in_stack_ffffff60 = &loc;" (assignment_expression "in_stack_ffffff60 = &loc" identifier = (pointer_expression "&loc" & identifier)) ;) (expression_statement "r.default_rc = '\0';" (assignment_expression "r.default_rc = '\0'" (field_expression "r.default_rc" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "r.errCode = '\0';" (assignment_expression "r.errCode = '\0'" (field_expression "r.errCode" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "r.r1 = '\0';" (assignment_expression "r.r1 = '\0'" (field_expression "r.r1" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "r.r2 = '\0';" (assignment_expression "r.r2 = '\0'" (field_expression "r.r2" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "r.eqSeen = '\0';" (assignment_expression "r.eqSeen = '\0'" (field_expression "r.eqSeen" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "r.pKeyInfo = pExcept->pKeyInfo;" (assignment_expression "r.pKeyInfo = pExcept->pKeyInfo" (field_expression "r.pKeyInfo" identifier . field_identifier) = (field_expression "pExcept->pKeyInfo" identifier -> field_identifier)) ;) (expression_statement "r.nField = *(u16 *)(puVar10 + 5);" (assignment_expression "r.nField = *(u16 *)(puVar10 + 5)" (field_expression "r.nField" identifier . field_identifier) = (pointer_expression "*(u16 *)(puVar10 + 5)" * (cast_expression "(u16 *)(puVar10 + 5)" ( (type_descriptor "u16 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar10 + 5)" ( (binary_expression "puVar10 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);" (assignment_expression "local_50 = sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68)" identifier = (call_expression "sqlite3BtreeMovetoUnpacked\n                             ((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68)" identifier (argument_list "((BtCursor *)0x0,(UnpackedRecord *)0x0,\n                              CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0)),\n                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68)" ( (cast_expression "(BtCursor *)0x0" ( (type_descriptor "BtCursor *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(UnpackedRecord *)0x0" ( (type_descriptor "UnpackedRecord *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (call_expression "CONCAT44(in_stack_ffffff60,(uint)(extraout_ECX != 0))" identifier (argument_list "(in_stack_ffffff60,(uint)(extraout_ECX != 0))" ( identifier , (call_expression "(uint)(extraout_ECX != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(extraout_ECX != 0)" ( (binary_expression "extraout_ECX != 0" identifier != number_literal) ))) ))) , (cast_expression "(int)in_stack_ffffff64" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(int *)in_stack_ffffff68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) }))) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if (local_50 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (if_statement "if (loc != 0) goto LAB_000a3150;" if (parenthesized_expression "(loc != 0)" ( (binary_expression "loc != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a3150;" goto statement_identifier ;)) })) (expression_statement "in_stack_ffffff60 = (int *)0xa375b;" (assignment_expression "in_stack_ffffff60 = (int *)0xa375b" identifier = (cast_expression "(int *)0xa375b" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "getCellInfo(pExcept);" (call_expression "getCellInfo(pExcept)" identifier (argument_list "(pExcept)" ( identifier ))) ;) (if_statement "if (puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]) {\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1])" ( (binary_expression "puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&\n        (int)(pExcept->info).nKey == puVar10[1]" (binary_expression "puVar10[2] == *(int *)((int)&(pExcept->info).nKey + 4)" (subscript_expression "puVar10[2]" identifier [ number_literal ]) == (pointer_expression "*(int *)((int)&(pExcept->info).nKey + 4)" * (cast_expression "(int *)((int)&(pExcept->info).nKey + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pExcept->info).nKey + 4)" ( (binary_expression "(int)&(pExcept->info).nKey + 4" (cast_expression "(int)&(pExcept->info).nKey" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pExcept->info).nKey" & (field_expression "(pExcept->info).nKey" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) && (binary_expression "(int)(pExcept->info).nKey == puVar10[1]" (cast_expression "(int)(pExcept->info).nKey" ( (type_descriptor "int" primitive_type) ) (field_expression "(pExcept->info).nKey" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier)) == (subscript_expression "puVar10[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      uVar4 = *puVar10;\n      r._12_2_ = (undefined2)uVar4;\n      r.eqSeen = (u8)((uint)uVar4 >> 0x10);\n      r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);\n      iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);\n      goto LAB_000a33b0;\n    }" { (expression_statement "uVar4 = *puVar10;" (assignment_expression "uVar4 = *puVar10" identifier = (pointer_expression "*puVar10" * identifier)) ;) (expression_statement "r._12_2_ = (undefined2)uVar4;" (assignment_expression "r._12_2_ = (undefined2)uVar4" (field_expression "r._12_2_" identifier . field_identifier) = (cast_expression "(undefined2)uVar4" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "r.eqSeen = (u8)((uint)uVar4 >> 0x10);" (assignment_expression "r.eqSeen = (u8)((uint)uVar4 >> 0x10)" (field_expression "r.eqSeen" identifier . field_identifier) = (call_expression "(u8)((uint)uVar4 >> 0x10)" (parenthesized_expression "(u8)" ( identifier )) (argument_list "((uint)uVar4 >> 0x10)" ( (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "r._15_1_ = (undefined1)((uint)uVar4 >> 0x18);" (assignment_expression "r._15_1_ = (undefined1)((uint)uVar4 >> 0x18)" (field_expression "r._15_1_" identifier . field_identifier) = (call_expression "(undefined1)((uint)uVar4 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)uVar4 >> 0x18)" ( (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68);" (assignment_expression "iVar6 = btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68)" identifier = (call_expression "btreeOverwriteCell(in_stack_ffffff64,in_stack_ffffff68)" identifier (argument_list "(in_stack_ffffff64,in_stack_ffffff68)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) })))) (labeled_statement "LAB_000a3150:\n  pPage = pExcept->pPage;" statement_identifier : (expression_statement "pPage = pExcept->pPage;" (assignment_expression "pPage = pExcept->pPage" identifier = (field_expression "pExcept->pPage" identifier -> field_identifier)) ;)) (expression_statement "uVar11 = (uint)pPage->childPtrSize;" (assignment_expression "uVar11 = (uint)pPage->childPtrSize" identifier = (cast_expression "(uint)pPage->childPtrSize" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPage->childPtrSize" identifier -> field_identifier))) ;) (expression_statement "pCell = pBVar3->pTmpSpace;" (assignment_expression "pCell = pBVar3->pTmpSpace" identifier = (field_expression "pBVar3->pTmpSpace" identifier -> field_identifier)) ;) (expression_statement "puVar5 = pCell + uVar11;" (assignment_expression "puVar5 = pCell + uVar11" identifier = (binary_expression "pCell + uVar11" identifier + identifier)) ;) (if_statement "if (pPage->intKey == '\0') {\n    pPVar7 = (Pgno *)puVar10[1];\n    local_84 = (void *)*puVar10;\n    if (pPVar7 < (Pgno *)0x80) {\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }\n    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    iVar6 = uVar8 + uVar11;\n    local_88 = pPVar7;\n  }\n  else {\n    local_88 = (Pgno *)puVar10[6];\n    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);\n    local_84 = (void *)puVar10[3];\n    if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }\n    iVar6 = uVar11 + uVar8 + iVar6;\n  }" if (parenthesized_expression "(pPage->intKey == '\0')" ( (binary_expression "pPage->intKey == '\0'" (field_expression "pPage->intKey" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pPVar7 = (Pgno *)puVar10[1];\n    local_84 = (void *)*puVar10;\n    if (pPVar7 < (Pgno *)0x80) {\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }\n    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    iVar6 = uVar8 + uVar11;\n    local_88 = pPVar7;\n  }" { (expression_statement "pPVar7 = (Pgno *)puVar10[1];" (assignment_expression "pPVar7 = (Pgno *)puVar10[1]" identifier = (cast_expression "(Pgno *)puVar10[1]" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "local_84 = (void *)*puVar10;" (assignment_expression "local_84 = (void *)*puVar10" identifier = (cast_expression "(void *)*puVar10" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (if_statement "if (pPVar7 < (Pgno *)0x80) {\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }\n    else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }" if (parenthesized_expression "(pPVar7 < (Pgno *)0x80)" ( (binary_expression "pPVar7 < (Pgno *)0x80" identifier < (cast_expression "(Pgno *)0x80" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar8 = 1;\n      *puVar5 = (uchar)pPVar7;\n    }" { (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) (expression_statement "*puVar5 = (uchar)pPVar7;" (assignment_expression "*puVar5 = (uchar)pPVar7" (pointer_expression "*puVar5" * identifier) = (cast_expression "(uchar)pPVar7" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) }) (else_clause "else if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }" else (if_statement "if ((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)) {\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }" if (parenthesized_expression "((int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7))" ( (binary_expression "(int)pPVar7 < 0 || (uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)" (binary_expression "(int)pPVar7 < 0" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)pPVar7 >> 0x1f) < (uint)((Pgno *)0x7f < pPVar7)" (binary_expression "(uint)-((int)pPVar7 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)pPVar7 >> 0x1f)" ( (binary_expression "(int)pPVar7 >> 0x1f" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)((Pgno *)0x7f < pPVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((Pgno *)0x7f < pPVar7)" ( (binary_expression "(Pgno *)0x7f < pPVar7" (cast_expression "(Pgno *)0x7f" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) < identifier) ))))) )) (compound_statement "{\n      in_stack_ffffff60 = (int *)0xa361e;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }" { (expression_statement "in_stack_ffffff60 = (int *)0xa361e;" (assignment_expression "in_stack_ffffff60 = (int *)0xa361e" identifier = (cast_expression "(int *)0xa361e" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));" (assignment_expression "uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64))" identifier = (call_expression "sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64))" identifier (argument_list "(puVar5,CONCAT44(pPVar7,in_stack_ffffff64))" ( identifier , (call_expression "CONCAT44(pPVar7,in_stack_ffffff64)" identifier (argument_list "(pPVar7,in_stack_ffffff64)" ( identifier , identifier ))) )))) ;) (expression_statement "uVar8 = uVar8 & 0xff;" (assignment_expression "uVar8 = uVar8 & 0xff" identifier = (binary_expression "uVar8 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }" else (compound_statement "{\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }" { (expression_statement "*puVar5 = (uchar)pPVar7;" (assignment_expression "*puVar5 = (uchar)pPVar7" (pointer_expression "*puVar5" * identifier) = (cast_expression "(uchar)pPVar7" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) }))))) (expression_statement "iVar6 = uVar8 + uVar11;" (assignment_expression "iVar6 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "local_88 = pPVar7;" (assignment_expression "local_88 = pPVar7" identifier = identifier) ;) }) (else_clause "else {\n    local_88 = (Pgno *)puVar10[6];\n    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);\n    local_84 = (void *)puVar10[3];\n    if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }\n    iVar6 = uVar11 + uVar8 + iVar6;\n  }" else (compound_statement "{\n    local_88 = (Pgno *)puVar10[6];\n    pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);\n    local_84 = (void *)puVar10[3];\n    if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }\n    if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }\n    iVar6 = uVar11 + uVar8 + iVar6;\n  }" { (expression_statement "local_88 = (Pgno *)puVar10[6];" (assignment_expression "local_88 = (Pgno *)puVar10[6]" identifier = (cast_expression "(Pgno *)puVar10[6]" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[6]" identifier [ number_literal ]))) ;) (expression_statement "pPVar7 = (Pgno *)((int)local_88 + puVar10[7]);" (assignment_expression "pPVar7 = (Pgno *)((int)local_88 + puVar10[7])" identifier = (cast_expression "(Pgno *)((int)local_88 + puVar10[7])" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_88 + puVar10[7])" ( (binary_expression "(int)local_88 + puVar10[7]" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) + (subscript_expression "puVar10[7]" identifier [ number_literal ])) )))) ;) (expression_statement "local_84 = (void *)puVar10[3];" (assignment_expression "local_84 = (void *)puVar10[3]" identifier = (cast_expression "(void *)puVar10[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[3]" identifier [ number_literal ]))) ;) (if_statement "if (pPVar7 < (Pgno *)0x80) {\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }" if (parenthesized_expression "(pPVar7 < (Pgno *)0x80)" ( (binary_expression "pPVar7 < (Pgno *)0x80" identifier < (cast_expression "(Pgno *)0x80" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *puVar5 = (uchar)pPVar7;\n      uVar8 = 1;\n    }" { (expression_statement "*puVar5 = (uchar)pPVar7;" (assignment_expression "*puVar5 = (uchar)pPVar7" (pointer_expression "*puVar5" * identifier) = (cast_expression "(uchar)pPVar7" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = 1;" (assignment_expression "uVar8 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }" else (compound_statement "{\n      in_stack_ffffff60 = (int *)0xa38a6;\n      uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));\n      uVar8 = uVar8 & 0xff;\n    }" { (expression_statement "in_stack_ffffff60 = (int *)0xa38a6;" (assignment_expression "in_stack_ffffff60 = (int *)0xa38a6" identifier = (cast_expression "(int *)0xa38a6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64));" (assignment_expression "uVar8 = sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64))" identifier = (call_expression "sqlite3PutVarint(puVar5,CONCAT44(pPVar7,in_stack_ffffff64))" identifier (argument_list "(puVar5,CONCAT44(pPVar7,in_stack_ffffff64))" ( identifier , (call_expression "CONCAT44(pPVar7,in_stack_ffffff64)" identifier (argument_list "(pPVar7,in_stack_ffffff64)" ( identifier , identifier ))) )))) ;) (expression_statement "uVar8 = uVar8 & 0xff;" (assignment_expression "uVar8 = uVar8 & 0xff" identifier = (binary_expression "uVar8 & 0xff" identifier & number_literal)) ;) }))) (if_statement "if (puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]) {\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }\n    else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }" if (parenthesized_expression "(puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2])" ( (binary_expression "puVar10[2] == 0 && (uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]" (binary_expression "puVar10[2] == 0" (subscript_expression "puVar10[2]" identifier [ number_literal ]) == number_literal) && (binary_expression "(uint)(0x7f < (uint)puVar10[1]) <= (uint)-puVar10[2]" (call_expression "(uint)(0x7f < (uint)puVar10[1])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < (uint)puVar10[1])" ( (binary_expression "0x7f < (uint)puVar10[1]" number_literal < (cast_expression "(uint)puVar10[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ))) <= (binary_expression "(uint)-puVar10[2]" (parenthesized_expression "(uint)" ( identifier )) - (subscript_expression "puVar10[2]" identifier [ number_literal ])))) )) (compound_statement "{\n      pCell[uVar11 + uVar8] = (uchar)puVar10[1];\n      iVar6 = 1;\n    }" { (expression_statement "pCell[uVar11 + uVar8] = (uchar)puVar10[1];" (assignment_expression "pCell[uVar11 + uVar8] = (uchar)puVar10[1]" (subscript_expression "pCell[uVar11 + uVar8]" identifier [ (binary_expression "uVar11 + uVar8" identifier + identifier) ]) = (cast_expression "(uchar)puVar10[1]" ( (type_descriptor "uchar" type_identifier) ) (subscript_expression "puVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }" else (compound_statement "{\n      in_stack_ffffff60 = (int *)0xa31ca;\n      iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));\n    }" { (expression_statement "in_stack_ffffff60 = (int *)0xa31ca;" (assignment_expression "in_stack_ffffff60 = (int *)0xa31ca" identifier = (cast_expression "(int *)0xa31ca" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64));" (assignment_expression "iVar6 = sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64))" identifier = (call_expression "sqlite3PutVarint(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64))" identifier (argument_list "(pCell + uVar11 + uVar8,CONCAT44(pPVar7,in_stack_ffffff64))" ( (binary_expression "pCell + uVar11 + uVar8" (binary_expression "pCell + uVar11" identifier + identifier) + identifier) , (call_expression "CONCAT44(pPVar7,in_stack_ffffff64)" identifier (argument_list "(pPVar7,in_stack_ffffff64)" ( identifier , identifier ))) )))) ;) }))) (expression_statement "iVar6 = uVar11 + uVar8 + iVar6;" (assignment_expression "iVar6 = uVar11 + uVar8 + iVar6" identifier = (binary_expression "uVar11 + uVar8 + iVar6" (binary_expression "uVar11 + uVar8" identifier + identifier) + identifier)) ;) }))) (expression_statement "__dest_00 = pCell + iVar6;" (assignment_expression "__dest_00 = pCell + iVar6" identifier = (binary_expression "pCell + iVar6" identifier + identifier)) ;) (if_statement "if ((int)(uint)pPage->maxLocal < (int)pPVar7) {\n    pgnoOvfl = 0;\n    local_80 = (KeyInfo *)0x0;\n    pBt = pPage->pBt;\n    pPVar13 = (Pgno *)(uint)pPage->minLocal;\n    pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);\n    if ((int)(uint)pPage->maxLocal < (int)pPVar12) {\n      pPVar12 = pPVar13;\n    }\n    local_60 = iVar6 + (int)pPVar12 + 4;\n    local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);\n    while( true ) {\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }\n    if (local_80 == (KeyInfo *)0x0) {\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }\n    sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n    local_50 = 0;\n    uVar11 = (uint)pExcept->ix;\n    if (loc == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }\n    pPVar12 = pPVar7;\n    memcpy(__dest_00,local_84,(size_t)local_88);\n    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;\n    pPVar7 = pPVar12;\n    if (loc != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);\n    local_50 = iVar6;\n    if (iVar6 != 0) goto LAB_000a33b0;\n    puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);\n    if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }\n    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar6 = local_50;\n    if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" if (parenthesized_expression "((int)(uint)pPage->maxLocal < (int)pPVar7)" ( (binary_expression "(int)(uint)pPage->maxLocal < (int)pPVar7" (cast_expression "(int)(uint)pPage->maxLocal" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pPage->maxLocal" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPage->maxLocal" identifier -> field_identifier))) < (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    pgnoOvfl = 0;\n    local_80 = (KeyInfo *)0x0;\n    pBt = pPage->pBt;\n    pPVar13 = (Pgno *)(uint)pPage->minLocal;\n    pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);\n    if ((int)(uint)pPage->maxLocal < (int)pPVar12) {\n      pPVar12 = pPVar13;\n    }\n    local_60 = iVar6 + (int)pPVar12 + 4;\n    local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);\n    while( true ) {\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }\n    if (local_80 == (KeyInfo *)0x0) {\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }\n    sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n    local_50 = 0;\n    uVar11 = (uint)pExcept->ix;\n    if (loc == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }\n  }" { (expression_statement "pgnoOvfl = 0;" (assignment_expression "pgnoOvfl = 0" identifier = number_literal) ;) (expression_statement "local_80 = (KeyInfo *)0x0;" (assignment_expression "local_80 = (KeyInfo *)0x0" identifier = (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pBt = pPage->pBt;" (assignment_expression "pBt = pPage->pBt" identifier = (field_expression "pPage->pBt" identifier -> field_identifier)) ;) (expression_statement "pPVar13 = (Pgno *)(uint)pPage->minLocal;" (assignment_expression "pPVar13 = (Pgno *)(uint)pPage->minLocal" identifier = (cast_expression "(Pgno *)(uint)pPage->minLocal" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pPage->minLocal" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPage->minLocal" identifier -> field_identifier)))) ;) (expression_statement "pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);" (assignment_expression "pPVar12 = (Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13)" identifier = (cast_expression "(Pgno *)((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13)" ( (binary_expression "(uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13" (binary_expression "(uint)((int)pPVar7 - (int)pPVar13) % (pBt->usableSize - 4)" (call_expression "(uint)((int)pPVar7 - (int)pPVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)pPVar7 - (int)pPVar13)" ( (binary_expression "(int)pPVar7 - (int)pPVar13" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar13" ( (type_descriptor "int" primitive_type) ) identifier)) ))) % (parenthesized_expression "(pBt->usableSize - 4)" ( (binary_expression "pBt->usableSize - 4" (field_expression "pBt->usableSize" identifier -> field_identifier) - number_literal) ))) + (cast_expression "(int)pPVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((int)(uint)pPage->maxLocal < (int)pPVar12) {\n      pPVar12 = pPVar13;\n    }" if (parenthesized_expression "((int)(uint)pPage->maxLocal < (int)pPVar12)" ( (binary_expression "(int)(uint)pPage->maxLocal < (int)pPVar12" (cast_expression "(int)(uint)pPage->maxLocal" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pPage->maxLocal" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPage->maxLocal" identifier -> field_identifier))) < (cast_expression "(int)pPVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      pPVar12 = pPVar13;\n    }" { (expression_statement "pPVar12 = pPVar13;" (assignment_expression "pPVar12 = pPVar13" identifier = identifier) ;) })) (expression_statement "local_60 = iVar6 + (int)pPVar12 + 4;" (assignment_expression "local_60 = iVar6 + (int)pPVar12 + 4" identifier = (binary_expression "iVar6 + (int)pPVar12 + 4" (binary_expression "iVar6 + (int)pPVar12" identifier + (cast_expression "(int)pPVar12" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal)) ;) (expression_statement "local_78 = (uint *)(pCell + iVar6 + (int)pPVar12);" (assignment_expression "local_78 = (uint *)(pCell + iVar6 + (int)pPVar12)" identifier = (cast_expression "(uint *)(pCell + iVar6 + (int)pPVar12)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pCell + iVar6 + (int)pPVar12)" ( (binary_expression "pCell + iVar6 + (int)pPVar12" (binary_expression "pCell + iVar6" identifier + identifier) + (cast_expression "(int)pPVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (while_statement "while( true ) {\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pPVar13 = pPVar7;\n      if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }\n      __n = pPVar13;\n      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }\n      pgnoOvfl = parent;\n      if ((int)pPVar7 < 1) break;\n      local_84 = (void *)((int)local_84 + (int)__n);\n      local_88 = (Pgno *)((int)local_88 - (int)__n);\n      pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);\n      if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }\n    }" { (expression_statement "pPVar13 = pPVar7;" (assignment_expression "pPVar13 = pPVar7" identifier = identifier) ;) (if_statement "if ((int)pPVar12 < (int)pPVar7) {\n        pPVar13 = pPVar12;\n      }" if (parenthesized_expression "((int)pPVar12 < (int)pPVar7)" ( (binary_expression "(int)pPVar12 < (int)pPVar7" (cast_expression "(int)pPVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pPVar13 = pPVar12;\n      }" { (expression_statement "pPVar13 = pPVar12;" (assignment_expression "pPVar13 = pPVar12" identifier = identifier) ;) })) (expression_statement "__n = pPVar13;" (assignment_expression "__n = pPVar13" identifier = identifier) ;) (if_statement "if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }\n      else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }" if (parenthesized_expression "(((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1))" ( (binary_expression "((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)" (parenthesized_expression "((int)local_88 < (int)pPVar13)" ( (binary_expression "(int)local_88 < (int)pPVar13" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)pPVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(__n = local_88, (int)local_88 < 1)" ( (comma_expression "__n = local_88, (int)local_88 < 1" (assignment_expression "__n = local_88" identifier = identifier) , (binary_expression "(int)local_88 < 1" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) (compound_statement "{\n        pPgno = pPVar13;\n        memset(__dest_00,0,(size_t)pPVar13);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);\n        __n = pPVar13;\n        parent = pgnoOvfl;\n      }" { (expression_statement "pPgno = pPVar13;" (assignment_expression "pPgno = pPVar13" identifier = identifier) ;) (expression_statement "memset(__dest_00,0,(size_t)pPVar13);" (call_expression "memset(__dest_00,0,(size_t)pPVar13)" identifier (argument_list "(__dest_00,0,(size_t)pPVar13)" ( identifier , number_literal , (cast_expression "(size_t)pPVar13" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13);" (assignment_expression "pPVar7 = (Pgno *)((int)pPVar7 - (int)pPVar13)" identifier = (cast_expression "(Pgno *)((int)pPVar7 - (int)pPVar13)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar7 - (int)pPVar13)" ( (binary_expression "(int)pPVar7 - (int)pPVar13" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pPVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "__n = pPVar13;" (assignment_expression "__n = pPVar13" identifier = identifier) ;) (expression_statement "parent = pgnoOvfl;" (assignment_expression "parent = pgnoOvfl" identifier = identifier) ;) }) (else_clause "else {\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }" else (compound_statement "{\n        pPgno = __n;\n        memcpy(__dest_00,local_84,(size_t)__n);\n        pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);\n        parent = pgnoOvfl;\n      }" { (expression_statement "pPgno = __n;" (assignment_expression "pPgno = __n" identifier = identifier) ;) (expression_statement "memcpy(__dest_00,local_84,(size_t)__n);" (call_expression "memcpy(__dest_00,local_84,(size_t)__n)" identifier (argument_list "(__dest_00,local_84,(size_t)__n)" ( identifier , identifier , (cast_expression "(size_t)__n" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "pPVar7 = (Pgno *)((int)pPVar7 - (int)__n);" (assignment_expression "pPVar7 = (Pgno *)((int)pPVar7 - (int)__n)" identifier = (cast_expression "(Pgno *)((int)pPVar7 - (int)__n)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar7 - (int)__n)" ( (binary_expression "(int)pPVar7 - (int)__n" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "parent = pgnoOvfl;" (assignment_expression "parent = pgnoOvfl" identifier = identifier) ;) }))) (expression_statement "pgnoOvfl = parent;" (assignment_expression "pgnoOvfl = parent" identifier = identifier) ;) (if_statement "if ((int)pPVar7 < 1) break;" if (parenthesized_expression "((int)pPVar7 < 1)" ( (binary_expression "(int)pPVar7 < 1" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_84 = (void *)((int)local_84 + (int)__n);" (assignment_expression "local_84 = (void *)((int)local_84 + (int)__n)" identifier = (cast_expression "(void *)((int)local_84 + (int)__n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_84 + (int)__n)" ( (binary_expression "(int)local_84 + (int)__n" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "local_88 = (Pgno *)((int)local_88 - (int)__n);" (assignment_expression "local_88 = (Pgno *)((int)local_88 - (int)__n)" identifier = (cast_expression "(Pgno *)((int)local_88 - (int)__n)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_88 - (int)__n)" ( (binary_expression "(int)local_88 - (int)__n" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pPVar12 = (Pgno *)((int)pPVar12 - (int)__n);" (assignment_expression "pPVar12 = (Pgno *)((int)pPVar12 - (int)__n)" identifier = (cast_expression "(Pgno *)((int)pPVar12 - (int)__n)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pPVar12 - (int)__n)" ( (binary_expression "(int)pPVar12 - (int)__n" (cast_expression "(int)pPVar12" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (pPVar12 == (Pgno *)0x0) {\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }\n      else {\n        __dest_00 = __dest_00 + (int)__n;\n      }" if (parenthesized_expression "(pPVar12 == (Pgno *)0x0)" ( (binary_expression "pPVar12 == (Pgno *)0x0" identifier == (cast_expression "(Pgno *)0x0" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        r.pKeyInfo = (KeyInfo *)0x0;\n        if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }\n        rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);\n        if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;\n        if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }\n        local_80 = r.pKeyInfo;\n        local_78 = *(uint **)&r.pKeyInfo[2].nAllField;\n        *local_78 = 0;\n        __dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);\n        pPVar12 = (Pgno *)(pBt->usableSize - 4);\n      }" { (expression_statement "r.pKeyInfo = (KeyInfo *)0x0;" (assignment_expression "r.pKeyInfo = (KeyInfo *)0x0" (field_expression "r.pKeyInfo" identifier . field_identifier) = (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pBt->autoVacuum != '\0') {\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }" if (parenthesized_expression "(pBt->autoVacuum != '\0')" ( (binary_expression "pBt->autoVacuum != '\0'" (field_expression "pBt->autoVacuum" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;\n          uVar11 = parent;\n          do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));\n        }" { (expression_statement "uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize;" (assignment_expression "uVar8 = *(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize" identifier = (binary_expression "*(uint *)(unaff_EDI + 0xd935d) / pBt->pageSize" (pointer_expression "*(uint *)(unaff_EDI + 0xd935d)" * (cast_expression "(uint *)(unaff_EDI + 0xd935d)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0xd935d)" ( (binary_expression "unaff_EDI + 0xd935d" identifier + number_literal) )))) / (field_expression "pBt->pageSize" identifier -> field_identifier))) ;) (expression_statement "uVar11 = parent;" (assignment_expression "uVar11 = parent" identifier = identifier) ;) (do_statement "do {\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          } while ((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8));" do (compound_statement "{\n            uVar9 = uVar11;\n            pgnoOvfl = uVar9 + 1;\n            uVar11 = 0;\n            if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }\n          }" { (expression_statement "uVar9 = uVar11;" (assignment_expression "uVar9 = uVar11" identifier = identifier) ;) (expression_statement "pgnoOvfl = uVar9 + 1;" (assignment_expression "pgnoOvfl = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (if_statement "if (1 < pgnoOvfl) {\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }" if (parenthesized_expression "(1 < pgnoOvfl)" ( (binary_expression "1 < pgnoOvfl" number_literal < identifier) )) (compound_statement "{\n              uVar11 = pBt->usableSize / 5 + 1;\n              iVar6 = ((uVar9 - 1) / uVar11) * uVar11;\n              uVar11 = iVar6 + 2;\n              if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }\n            }" { (expression_statement "uVar11 = pBt->usableSize / 5 + 1;" (assignment_expression "uVar11 = pBt->usableSize / 5 + 1" identifier = (binary_expression "pBt->usableSize / 5 + 1" (binary_expression "pBt->usableSize / 5" (field_expression "pBt->usableSize" identifier -> field_identifier) / number_literal) + number_literal)) ;) (expression_statement "iVar6 = ((uVar9 - 1) / uVar11) * uVar11;" (assignment_expression "iVar6 = ((uVar9 - 1) / uVar11) * uVar11" identifier = (binary_expression "((uVar9 - 1) / uVar11) * uVar11" (parenthesized_expression "((uVar9 - 1) / uVar11)" ( (binary_expression "(uVar9 - 1) / uVar11" (parenthesized_expression "(uVar9 - 1)" ( (binary_expression "uVar9 - 1" identifier - number_literal) )) / identifier) )) * identifier)) ;) (expression_statement "uVar11 = iVar6 + 2;" (assignment_expression "uVar11 = iVar6 + 2" identifier = (binary_expression "iVar6 + 2" identifier + number_literal)) ;) (if_statement "if (uVar11 == uVar8 + 1) {\n                uVar11 = iVar6 + 3;\n              }" if (parenthesized_expression "(uVar11 == uVar8 + 1)" ( (binary_expression "uVar11 == uVar8 + 1" identifier == (binary_expression "uVar8 + 1" identifier + number_literal)) )) (compound_statement "{\n                uVar11 = iVar6 + 3;\n              }" { (expression_statement "uVar11 = iVar6 + 3;" (assignment_expression "uVar11 = iVar6 + 3" identifier = (binary_expression "iVar6 + 3" identifier + number_literal)) ;) })) })) }) while (parenthesized_expression "((pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8))" ( (binary_expression "(pgnoOvfl == uVar11) || (uVar11 = pgnoOvfl, uVar9 == uVar8)" (parenthesized_expression "(pgnoOvfl == uVar11)" ( (binary_expression "pgnoOvfl == uVar11" identifier == identifier) )) || (parenthesized_expression "(uVar11 = pgnoOvfl, uVar9 == uVar8)" ( (comma_expression "uVar11 = pgnoOvfl, uVar9 == uVar8" (assignment_expression "uVar11 = pgnoOvfl" identifier = identifier) , (binary_expression "uVar9 == uVar8" identifier == identifier)) ))) )) ;) })) (expression_statement "rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64);" (assignment_expression "rc = allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64)" identifier = (call_expression "allocateBtreePage((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64)" identifier (argument_list "((BtShared *)pgnoOvfl,(MemPage **)0x0,pPgno,(Pgno)in_stack_ffffff60,\n                               (u8)in_stack_ffffff64)" ( (cast_expression "(BtShared *)pgnoOvfl" ( (type_descriptor "BtShared *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(MemPage **)0x0" ( (type_descriptor "MemPage **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , identifier , (cast_expression "(Pgno)in_stack_ffffff60" ( (type_descriptor "Pgno" type_identifier) ) identifier) , (cast_expression "(u8)in_stack_ffffff64" ( (type_descriptor "u8" type_identifier) ) identifier) )))) ;) (if_statement "if ((pBt->autoVacuum == '\0') || (rc != 0)) {\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" if (parenthesized_expression "((pBt->autoVacuum == '\0') || (rc != 0))" ( (binary_expression "(pBt->autoVacuum == '\0') || (rc != 0)" (parenthesized_expression "(pBt->autoVacuum == '\0')" ( (binary_expression "pBt->autoVacuum == '\0'" (field_expression "pBt->autoVacuum" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) ))) )) (compound_statement "{\nLAB_000a32d2:\n          pPVar12 = pPVar7;\n          if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }" { (labeled_statement "LAB_000a32d2:\n          pPVar12 = pPVar7;" statement_identifier : (expression_statement "pPVar12 = pPVar7;" (assignment_expression "pPVar12 = pPVar7" identifier = identifier) ;)) (if_statement "if (rc != 0) {\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a3710:\n            iVar6 = rc;\n            if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;\n            sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n            local_50 = rc;\n            iVar6 = rc;\n            if (rc == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" { (labeled_statement "LAB_000a3710:\n            iVar6 = rc;" statement_identifier : (expression_statement "iVar6 = rc;" (assignment_expression "iVar6 = rc" identifier = identifier) ;)) (if_statement "if (local_80 == (KeyInfo *)0x0) goto LAB_000a33b0;" if (parenthesized_expression "(local_80 == (KeyInfo *)0x0)" ( (binary_expression "local_80 == (KeyInfo *)0x0" identifier == (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (expression_statement "sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);" (call_expression "sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef)" identifier (argument_list "((DbPage *)local_80[3].nRef)" ( (cast_expression "(DbPage *)local_80[3].nRef" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_80[3].nRef" (subscript_expression "local_80[3]" identifier [ number_literal ]) . field_identifier)) ))) ;) (expression_statement "local_50 = rc;" (assignment_expression "local_50 = rc" identifier = identifier) ;) (expression_statement "iVar6 = rc;" (assignment_expression "iVar6 = rc" identifier = identifier) ;) (if_statement "if (rc == 0) goto LAB_000a36ac;" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a36ac;" goto statement_identifier ;)) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) }) (else_clause "else {\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" else (compound_statement "{\n          ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);\n          if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" { (expression_statement "ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc);" (call_expression "ptrmapPut(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc)" identifier (argument_list "(pBt,pgnoOvfl,(parent != 0) + '\x03',parent,&rc)" ( identifier , identifier , (binary_expression "(parent != 0) + '\x03'" (parenthesized_expression "(parent != 0)" ( (binary_expression "parent != 0" identifier != number_literal) )) + (char_literal "'\x03'" ' escape_sequence ')) , identifier , (pointer_expression "&rc" & identifier) ))) ;) (if_statement "if (rc != 0) {\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (compound_statement "{\n            pPVar12 = pPVar7;\n            if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" { (expression_statement "pPVar12 = pPVar7;" (assignment_expression "pPVar12 = pPVar7" identifier = identifier) ;) (if_statement "if (r.pKeyInfo != (KeyInfo *)0x0) {\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }" if (parenthesized_expression "(r.pKeyInfo != (KeyInfo *)0x0)" ( (binary_expression "r.pKeyInfo != (KeyInfo *)0x0" (field_expression "r.pKeyInfo" identifier . field_identifier) != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              in_stack_ffffff60 = (int *)0xa35d1;\n              sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);\n              goto LAB_000a32d2;\n            }" { (expression_statement "in_stack_ffffff60 = (int *)0xa35d1;" (assignment_expression "in_stack_ffffff60 = (int *)0xa35d1" identifier = (cast_expression "(int *)0xa35d1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef);" (call_expression "sqlite3PagerUnrefNotNull((DbPage *)r.pKeyInfo[3].nRef)" identifier (argument_list "((DbPage *)r.pKeyInfo[3].nRef)" ( (cast_expression "(DbPage *)r.pKeyInfo[3].nRef" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "r.pKeyInfo[3].nRef" (subscript_expression "r.pKeyInfo[3]" (field_expression "r.pKeyInfo" identifier . field_identifier) [ number_literal ]) . field_identifier)) ))) ;) (goto_statement "goto LAB_000a32d2;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a3710;" goto statement_identifier ;) })) }))) (expression_statement "*local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18;" (assignment_expression "*local_78 = pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18" (pointer_expression "*local_78" * identifier) = (binary_expression "pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8 |\n                    pgnoOvfl << 0x18" (binary_expression "pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8 | (pgnoOvfl & 0xff00) << 8" (binary_expression "pgnoOvfl >> 0x18 | (pgnoOvfl & 0xff0000) >> 8" (binary_expression "pgnoOvfl >> 0x18" identifier >> number_literal) | (binary_expression "(pgnoOvfl & 0xff0000) >> 8" (parenthesized_expression "(pgnoOvfl & 0xff0000)" ( (binary_expression "pgnoOvfl & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(pgnoOvfl & 0xff00) << 8" (parenthesized_expression "(pgnoOvfl & 0xff00)" ( (binary_expression "pgnoOvfl & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "pgnoOvfl << 0x18" identifier << number_literal))) ;) (if_statement "if (local_80 != (KeyInfo *)0x0) {\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }" if (parenthesized_expression "(local_80 != (KeyInfo *)0x0)" ( (binary_expression "local_80 != (KeyInfo *)0x0" identifier != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          in_stack_ffffff60 = (int *)0xa32f6;\n          sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);\n        }" { (expression_statement "in_stack_ffffff60 = (int *)0xa32f6;" (assignment_expression "in_stack_ffffff60 = (int *)0xa32f6" identifier = (cast_expression "(int *)0xa32f6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);" (call_expression "sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef)" identifier (argument_list "((DbPage *)local_80[3].nRef)" ( (cast_expression "(DbPage *)local_80[3].nRef" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_80[3].nRef" (subscript_expression "local_80[3]" identifier [ number_literal ]) . field_identifier)) ))) ;) })) (expression_statement "local_80 = r.pKeyInfo;" (assignment_expression "local_80 = r.pKeyInfo" identifier = (field_expression "r.pKeyInfo" identifier . field_identifier)) ;) (expression_statement "local_78 = *(uint **)&r.pKeyInfo[2].nAllField;" (assignment_expression "local_78 = *(uint **)&r.pKeyInfo[2].nAllField" identifier = (pointer_expression "*(uint **)&r.pKeyInfo[2].nAllField" * (cast_expression "(uint **)&r.pKeyInfo[2].nAllField" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&r.pKeyInfo[2].nAllField" & (field_expression "r.pKeyInfo[2].nAllField" (subscript_expression "r.pKeyInfo[2]" (field_expression "r.pKeyInfo" identifier . field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "*local_78 = 0;" (assignment_expression "*local_78 = 0" (pointer_expression "*local_78" * identifier) = number_literal) ;) (expression_statement "__dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);" (assignment_expression "__dest_00 = (u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4)" identifier = (cast_expression "(u8 *)(*(int *)&r.pKeyInfo[2].nAllField + 4)" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)&r.pKeyInfo[2].nAllField + 4)" ( (binary_expression "*(int *)&r.pKeyInfo[2].nAllField + 4" (pointer_expression "*(int *)&r.pKeyInfo[2].nAllField" * (cast_expression "(int *)&r.pKeyInfo[2].nAllField" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&r.pKeyInfo[2].nAllField" & (field_expression "r.pKeyInfo[2].nAllField" (subscript_expression "r.pKeyInfo[2]" (field_expression "r.pKeyInfo" identifier . field_identifier) [ number_literal ]) . field_identifier)))) + number_literal) )))) ;) (expression_statement "pPVar12 = (Pgno *)(pBt->usableSize - 4);" (assignment_expression "pPVar12 = (Pgno *)(pBt->usableSize - 4)" identifier = (cast_expression "(Pgno *)(pBt->usableSize - 4)" ( (type_descriptor "Pgno *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pBt->usableSize - 4)" ( (binary_expression "pBt->usableSize - 4" (field_expression "pBt->usableSize" identifier -> field_identifier) - number_literal) )))) ;) }) (else_clause "else {\n        __dest_00 = __dest_00 + (int)__n;\n      }" else (compound_statement "{\n        __dest_00 = __dest_00 + (int)__n;\n      }" { (expression_statement "__dest_00 = __dest_00 + (int)__n;" (assignment_expression "__dest_00 = __dest_00 + (int)__n" identifier = (binary_expression "__dest_00 + (int)__n" identifier + (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) })) (if_statement "if (local_80 == (KeyInfo *)0x0) {\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }" if (parenthesized_expression "(local_80 == (KeyInfo *)0x0)" ( (binary_expression "local_80 == (KeyInfo *)0x0" identifier == (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_50 = 0;\n      pPVar12 = pPVar7;\n      goto LAB_000a36ac;\n    }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "pPVar12 = pPVar7;" (assignment_expression "pPVar12 = pPVar7" identifier = identifier) ;) (goto_statement "goto LAB_000a36ac;" goto statement_identifier ;) })) (expression_statement "sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef);" (call_expression "sqlite3PagerUnrefNotNull((DbPage *)local_80[3].nRef)" identifier (argument_list "((DbPage *)local_80[3].nRef)" ( (cast_expression "(DbPage *)local_80[3].nRef" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "local_80[3].nRef" (subscript_expression "local_80[3]" identifier [ number_literal ]) . field_identifier)) ))) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = (uint)pExcept->ix;" (assignment_expression "uVar11 = (uint)pExcept->ix" identifier = (cast_expression "(uint)pExcept->ix" ( (type_descriptor "uint" type_identifier) ) (field_expression "pExcept->ix" identifier -> field_identifier))) ;) (if_statement "if (loc == 0) goto LAB_000a3433;" if (parenthesized_expression "(loc == 0)" ( (binary_expression "loc == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a3433;" goto statement_identifier ;)) (labeled_statement "LAB_000a36c0:\n    if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }" statement_identifier : (if_statement "if ((loc < 0) && (pPage->nCell != 0)) {\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }" if (parenthesized_expression "((loc < 0) && (pPage->nCell != 0))" ( (binary_expression "(loc < 0) && (pPage->nCell != 0)" (parenthesized_expression "(loc < 0)" ( (binary_expression "loc < 0" identifier < number_literal) )) && (parenthesized_expression "(pPage->nCell != 0)" ( (binary_expression "pPage->nCell != 0" (field_expression "pPage->nCell" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n      pExcept->ix = (u16)(uVar11 + 1);\n      uVar11 = uVar11 + 1 & 0xffff;\n      pExcept->curFlags = pExcept->curFlags & 0xfd;\n    }" { (expression_statement "pExcept->ix = (u16)(uVar11 + 1);" (assignment_expression "pExcept->ix = (u16)(uVar11 + 1)" (field_expression "pExcept->ix" identifier -> field_identifier) = (call_expression "(u16)(uVar11 + 1)" (parenthesized_expression "(u16)" ( identifier )) (argument_list "(uVar11 + 1)" ( (binary_expression "uVar11 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar11 = uVar11 + 1 & 0xffff;" (assignment_expression "uVar11 = uVar11 + 1 & 0xffff" identifier = (binary_expression "uVar11 + 1 & 0xffff" (binary_expression "uVar11 + 1" identifier + number_literal) & number_literal)) ;) (expression_statement "pExcept->curFlags = pExcept->curFlags & 0xfd;" (assignment_expression "pExcept->curFlags = pExcept->curFlags & 0xfd" (field_expression "pExcept->curFlags" identifier -> field_identifier) = (binary_expression "pExcept->curFlags & 0xfd" (field_expression "pExcept->curFlags" identifier -> field_identifier) & number_literal)) ;) }))) }) (else_clause "else {\n    local_60 = 4;\n    if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }\n    pPVar12 = pPVar7;\n    memcpy(__dest_00,local_84,(size_t)local_88);\n    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;\n    pPVar7 = pPVar12;\n    if (loc != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);\n    local_50 = iVar6;\n    if (iVar6 != 0) goto LAB_000a33b0;\n    puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);\n    if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }\n    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar6 = local_50;\n    if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" else (compound_statement "{\n    local_60 = 4;\n    if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }\n    pPVar12 = pPVar7;\n    memcpy(__dest_00,local_84,(size_t)local_88);\n    memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;\n    pPVar7 = pPVar12;\n    if (loc != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);\n    local_50 = iVar6;\n    if (iVar6 != 0) goto LAB_000a33b0;\n    puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);\n    if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }\n    local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar6 = local_50;\n    if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" { (expression_statement "local_60 = 4;" (assignment_expression "local_60 = 4" identifier = number_literal) ;) (if_statement "if (3 < iVar6 + (int)pPVar7) {\n      local_60 = iVar6 + (int)pPVar7;\n    }" if (parenthesized_expression "(3 < iVar6 + (int)pPVar7)" ( (binary_expression "3 < iVar6 + (int)pPVar7" number_literal < (binary_expression "iVar6 + (int)pPVar7" identifier + (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n      local_60 = iVar6 + (int)pPVar7;\n    }" { (expression_statement "local_60 = iVar6 + (int)pPVar7;" (assignment_expression "local_60 = iVar6 + (int)pPVar7" identifier = (binary_expression "iVar6 + (int)pPVar7" identifier + (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pPVar12 = pPVar7;" (assignment_expression "pPVar12 = pPVar7" identifier = identifier) ;) (expression_statement "memcpy(__dest_00,local_84,(size_t)local_88);" (call_expression "memcpy(__dest_00,local_84,(size_t)local_88)" identifier (argument_list "(__dest_00,local_84,(size_t)local_88)" ( identifier , identifier , (cast_expression "(size_t)local_88" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) (expression_statement "memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88);" (call_expression "memset(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88)" identifier (argument_list "(__dest_00 + (int)local_88,0,(int)pPVar7 - (int)local_88)" ( (binary_expression "__dest_00 + (int)local_88" identifier + (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , (binary_expression "(int)pPVar7 - (int)local_88" (cast_expression "(int)pPVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a36ac:\n    uVar11 = (uint)pExcept->ix;" statement_identifier : (expression_statement "uVar11 = (uint)pExcept->ix;" (assignment_expression "uVar11 = (uint)pExcept->ix" identifier = (cast_expression "(uint)pExcept->ix" ( (type_descriptor "uint" type_identifier) ) (field_expression "pExcept->ix" identifier -> field_identifier))) ;)) (expression_statement "pPVar7 = pPVar12;" (assignment_expression "pPVar7 = pPVar12" identifier = identifier) ;) (if_statement "if (loc != 0) goto LAB_000a36c0;" if (parenthesized_expression "(loc != 0)" ( (binary_expression "loc != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a36c0;" goto statement_identifier ;)) (labeled_statement "LAB_000a3433:\n    iVar6 = sqlite3PagerWrite(pPage->pDbPage);" statement_identifier : (expression_statement "iVar6 = sqlite3PagerWrite(pPage->pDbPage);" (assignment_expression "iVar6 = sqlite3PagerWrite(pPage->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pPage->pDbPage)" identifier (argument_list "(pPage->pDbPage)" ( (field_expression "pPage->pDbPage" identifier -> field_identifier) )))) ;)) (expression_statement "local_50 = iVar6;" (assignment_expression "local_50 = iVar6" identifier = identifier) ;) (if_statement "if (iVar6 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (expression_statement "puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage);" (assignment_expression "puVar5 = pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage)" identifier = (binary_expression "pPage->aData +\n             ((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage)" (field_expression "pPage->aData" identifier -> field_identifier) + (parenthesized_expression "((*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage)" ( (binary_expression "(*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8) & pPage->maskPage" (parenthesized_expression "(*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8)" ( (binary_expression "*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8 |\n              *(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8" (binary_expression "*(ushort *)(pPage->aCellIdx + uVar11 * 2) << 8" (pointer_expression "*(ushort *)(pPage->aCellIdx + uVar11 * 2)" * (cast_expression "(ushort *)(pPage->aCellIdx + uVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pPage->aCellIdx + uVar11 * 2)" ( (binary_expression "pPage->aCellIdx + uVar11 * 2" (field_expression "pPage->aCellIdx" identifier -> field_identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) )))) << number_literal) | (binary_expression "*(ushort *)(pPage->aCellIdx + uVar11 * 2) >> 8" (pointer_expression "*(ushort *)(pPage->aCellIdx + uVar11 * 2)" * (cast_expression "(ushort *)(pPage->aCellIdx + uVar11 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pPage->aCellIdx + uVar11 * 2)" ( (binary_expression "pPage->aCellIdx + uVar11 * 2" (field_expression "pPage->aCellIdx" identifier -> field_identifier) + (binary_expression "uVar11 * 2" identifier * number_literal)) )))) >> number_literal)) )) & (field_expression "pPage->maskPage" identifier -> field_identifier)) )))) ;) (if_statement "if (pPage->leaf == '\0') {\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }" if (parenthesized_expression "(pPage->leaf == '\0')" ( (binary_expression "pPage->leaf == '\0'" (field_expression "pPage->leaf" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined4 *)pCell = *(undefined4 *)puVar5;\n    }" { (expression_statement "*(undefined4 *)pCell = *(undefined4 *)puVar5;" (assignment_expression "*(undefined4 *)pCell = *(undefined4 *)puVar5" (pointer_expression "*(undefined4 *)pCell" * (cast_expression "(undefined4 *)pCell" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined4 *)puVar5" * (cast_expression "(undefined4 *)puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) })) (expression_statement "local_50 = clearCell(pPage,puVar5,(CellInfo *)&r);" (assignment_expression "local_50 = clearCell(pPage,puVar5,(CellInfo *)&r)" identifier = (call_expression "clearCell(pPage,puVar5,(CellInfo *)&r)" identifier (argument_list "(pPage,puVar5,(CellInfo *)&r)" ( identifier , identifier , (cast_expression "(CellInfo *)&r" ( (type_descriptor "CellInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&r" & identifier)) )))) ;) (if_statement "if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))) {\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal))))" ( (binary_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))) &&\n       ((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))" (parenthesized_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_))))" ( (binary_expression "(local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))" (parenthesized_expression "(local_2e == local_60)" ( (binary_expression "local_2e == local_60" identifier == identifier) )) && (parenthesized_expression "((uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_)))" ( (binary_expression "(uint)local_30 == CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_))" (cast_expression "(uint)local_30" ( (type_descriptor "uint" type_identifier) ) identifier) == (call_expression "CONCAT13(r._15_1_,CONCAT12(r.eqSeen,r._12_2_))" identifier (argument_list "(r._15_1_,CONCAT12(r.eqSeen,r._12_2_))" ( (field_expression "r._15_1_" identifier . field_identifier) , (call_expression "CONCAT12(r.eqSeen,r._12_2_)" identifier (argument_list "(r.eqSeen,r._12_2_)" ( (field_expression "r.eqSeen" identifier . field_identifier) , (field_expression "r._12_2_" identifier . field_identifier) ))) )))) ))) )) && (parenthesized_expression "((pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)))" ( (parenthesized_expression "(pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal))" ( (binary_expression "pBVar3->autoVacuum == '\0' || ((int)local_60 < (int)(uint)pPage->minLocal)" (binary_expression "pBVar3->autoVacuum == '\0'" (field_expression "pBVar3->autoVacuum" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((int)local_60 < (int)(uint)pPage->minLocal)" ( (binary_expression "(int)local_60 < (int)(uint)pPage->minLocal" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)(uint)pPage->minLocal" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)pPage->minLocal" ( (type_descriptor "uint" type_identifier) ) (field_expression "pPage->minLocal" identifier -> field_identifier)))) ))) )) ))) )) (compound_statement "{\n      if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }\n      goto LAB_000a33b0;\n    }" { (if_statement "if (pPage->aDataEnd < puVar5 + local_60) {\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }\n      else {\n        memcpy(puVar5,pCell,local_60);\n      }" if (parenthesized_expression "(pPage->aDataEnd < puVar5 + local_60)" ( (binary_expression "pPage->aDataEnd < puVar5 + local_60" (field_expression "pPage->aDataEnd" identifier -> field_identifier) < (binary_expression "puVar5 + local_60" identifier + identifier)) )) (compound_statement "{\n        sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);\n        iVar6 = 0xb;\n      }" { (expression_statement "sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5);" (call_expression "sqlite3_log(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5)" identifier (argument_list "(0xb,(char *)(unaff_EDI + 0x7c78b),unaff_EDI + 0x7c9c6,0x11825,\n                    unaff_EDI + 0x796f5)" ( number_literal , (cast_expression "(char *)(unaff_EDI + 0x7c78b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7c78b)" ( (binary_expression "unaff_EDI + 0x7c78b" identifier + number_literal) ))) , (binary_expression "unaff_EDI + 0x7c9c6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x796f5" identifier + number_literal) ))) ;) (expression_statement "iVar6 = 0xb;" (assignment_expression "iVar6 = 0xb" identifier = number_literal) ;) }) (else_clause "else {\n        memcpy(puVar5,pCell,local_60);\n      }" else (compound_statement "{\n        memcpy(puVar5,pCell,local_60);\n      }" { (expression_statement "memcpy(puVar5,pCell,local_60);" (call_expression "memcpy(puVar5,pCell,local_60)" identifier (argument_list "(puVar5,pCell,local_60)" ( identifier , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if ((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))\n    goto LAB_000a33b0;" if (parenthesized_expression "((local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0))" ( (binary_expression "(local_50 != 0) ||\n       (dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0)" (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) || (parenthesized_expression "(dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0)" ( (comma_expression "dropCell(pPage,uVar11,(uint)local_2e,&local_50), iVar6 = local_50, local_50 != 0" (call_expression "dropCell(pPage,uVar11,(uint)local_2e,&local_50)" identifier (argument_list "(pPage,uVar11,(uint)local_2e,&local_50)" ( identifier , identifier , (cast_expression "(uint)local_2e" ( (type_descriptor "uint" type_identifier) ) identifier) , (pointer_expression "&local_50" & identifier) ))) , (comma_expression "iVar6 = local_50, local_50 != 0" (assignment_expression "iVar6 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) }))) (expression_statement "insertCell(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50);" (call_expression "insertCell(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50)" identifier (argument_list "(pPage,uVar11,pCell,local_60,(u8 *)0x0,0,&local_50)" ( identifier , identifier , identifier , identifier , (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (pointer_expression "&local_50" & identifier) ))) ;) (expression_statement "(pExcept->info).nSize = 0;" (assignment_expression "(pExcept->info).nSize = 0" (field_expression "(pExcept->info).nSize" (parenthesized_expression "(pExcept->info)" ( (field_expression "pExcept->info" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if (pPage->nOverflow != '\0') {\n    pExcept->curFlags = pExcept->curFlags & 0xfd;\n    local_50 = balance(pExcept);\n    pExcept->pPage->nOverflow = '\0';\n    pExcept->eState = '\x01';\n    iVar6 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }\n  }" if (parenthesized_expression "(pPage->nOverflow != '\0')" ( (binary_expression "pPage->nOverflow != '\0'" (field_expression "pPage->nOverflow" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pExcept->curFlags = pExcept->curFlags & 0xfd;\n    local_50 = balance(pExcept);\n    pExcept->pPage->nOverflow = '\0';\n    pExcept->eState = '\x01';\n    iVar6 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }\n  }" { (expression_statement "pExcept->curFlags = pExcept->curFlags & 0xfd;" (assignment_expression "pExcept->curFlags = pExcept->curFlags & 0xfd" (field_expression "pExcept->curFlags" identifier -> field_identifier) = (binary_expression "pExcept->curFlags & 0xfd" (field_expression "pExcept->curFlags" identifier -> field_identifier) & number_literal)) ;) (expression_statement "local_50 = balance(pExcept);" (assignment_expression "local_50 = balance(pExcept)" identifier = (call_expression "balance(pExcept)" identifier (argument_list "(pExcept)" ( identifier )))) ;) (expression_statement "pExcept->pPage->nOverflow = '\0';" (assignment_expression "pExcept->pPage->nOverflow = '\0'" (field_expression "pExcept->pPage->nOverflow" (field_expression "pExcept->pPage" identifier -> field_identifier) -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pExcept->eState = '\x01';" (assignment_expression "pExcept->eState = '\x01'" (field_expression "pExcept->eState" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }" if (parenthesized_expression "(((extraout_ECX & 2) != 0) && (local_50 == 0))" ( (binary_expression "((extraout_ECX & 2) != 0) && (local_50 == 0)" (parenthesized_expression "((extraout_ECX & 2) != 0)" ( (binary_expression "(extraout_ECX & 2) != 0" (parenthesized_expression "(extraout_ECX & 2)" ( (binary_expression "extraout_ECX & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      btreeReleaseAllCursorPages(pExcept);\n      iVar6 = local_50;\n      if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }\n      pExcept->eState = '\x03';\n      uVar4 = puVar10[1];\n      *(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];\n      *(undefined4 *)&pExcept->nKey = uVar4;\n    }" { (expression_statement "btreeReleaseAllCursorPages(pExcept);" (call_expression "btreeReleaseAllCursorPages(pExcept)" identifier (argument_list "(pExcept)" ( identifier ))) ;) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) (if_statement "if (pExcept->pKeyInfo != (KeyInfo *)0x0) {\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }" if (parenthesized_expression "(pExcept->pKeyInfo != (KeyInfo *)0x0)" ( (binary_expression "pExcept->pKeyInfo != (KeyInfo *)0x0" (field_expression "pExcept->pKeyInfo" identifier -> field_identifier) != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        __dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));\n        pExcept->pKey = __dest;\n        iVar6 = 7;\n        if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }\n      }" { (expression_statement "__dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64));" (assignment_expression "__dest = sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64))" identifier = (call_expression "sqlite3Malloc(CONCAT44(pPVar7,in_stack_ffffff64))" identifier (argument_list "(CONCAT44(pPVar7,in_stack_ffffff64))" ( (call_expression "CONCAT44(pPVar7,in_stack_ffffff64)" identifier (argument_list "(pPVar7,in_stack_ffffff64)" ( identifier , identifier ))) )))) ;) (expression_statement "pExcept->pKey = __dest;" (assignment_expression "pExcept->pKey = __dest" (field_expression "pExcept->pKey" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar6 = 7;" (assignment_expression "iVar6 = 7" identifier = number_literal) ;) (if_statement "if (__dest != (void *)0x0) {\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }" if (parenthesized_expression "(__dest != (void *)0x0)" ( (binary_expression "__dest != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(__dest,(void *)*puVar10,puVar10[1]);\n          iVar6 = local_50;\n        }" { (expression_statement "memcpy(__dest,(void *)*puVar10,puVar10[1]);" (call_expression "memcpy(__dest,(void *)*puVar10,puVar10[1])" identifier (argument_list "(__dest,(void *)*puVar10,puVar10[1])" ( identifier , (cast_expression "(void *)*puVar10" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier)) , (subscript_expression "puVar10[1]" identifier [ number_literal ]) ))) ;) (expression_statement "iVar6 = local_50;" (assignment_expression "iVar6 = local_50" identifier = identifier) ;) })) })) (expression_statement "pExcept->eState = '\x03';" (assignment_expression "pExcept->eState = '\x03'" (field_expression "pExcept->eState" identifier -> field_identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "uVar4 = puVar10[1];" (assignment_expression "uVar4 = puVar10[1]" identifier = (subscript_expression "puVar10[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2];" (assignment_expression "*(undefined4 *)((int)&pExcept->nKey + 4) = puVar10[2]" (pointer_expression "*(undefined4 *)((int)&pExcept->nKey + 4)" * (cast_expression "(undefined4 *)((int)&pExcept->nKey + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pExcept->nKey + 4)" ( (binary_expression "(int)&pExcept->nKey + 4" (cast_expression "(int)&pExcept->nKey" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pExcept->nKey" & (field_expression "pExcept->nKey" identifier -> field_identifier))) + number_literal) )))) = (subscript_expression "puVar10[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)&pExcept->nKey = uVar4;" (assignment_expression "*(undefined4 *)&pExcept->nKey = uVar4" (pointer_expression "*(undefined4 *)&pExcept->nKey" * (cast_expression "(undefined4 *)&pExcept->nKey" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pExcept->nKey" & (field_expression "pExcept->nKey" identifier -> field_identifier)))) = identifier) ;) })) })) (labeled_statement "LAB_000a33b0:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar6;\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 iVar6;\n  }" { (return_statement "return iVar6;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int FUN_000a3060(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    \n  FUN_00116110();\n}\n\n" (function_definition "int FUN_000a3060(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    \n  FUN_00116110();\n}" primitive_type (function_declarator "FUN_000a3060(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    \n  FUN_00116110();\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint extraout_ECX;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "undefined4 *__dest;" type_identifier (pointer_declarator "*__dest" * identifier) ;) (declaration "void *pvVar13;" primitive_type (pointer_declarator "*pvVar13" * identifier) ;) (declaration "ushort uVar14;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (declaration "uint local_98;" type_identifier identifier ;) (declaration "size_t local_88;" primitive_type identifier ;) (declaration "void *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "int local_80;" primitive_type identifier ;) (declaration "uint *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "size_t local_60;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "short local_38;" (sized_type_specifier "short" short) identifier ;) (declaration "undefined2 local_36;" type_identifier identifier ;) (declaration "undefined2 uStack_34;" type_identifier identifier ;) (declaration "undefined1 local_32;" type_identifier identifier ;) (declaration "undefined1 uStack_31;" type_identifier identifier ;) (declaration "ushort local_30;" type_identifier identifier ;) (declaration "ushort local_2e;" type_identifier identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "uVar15 = FUN_00036ac5();" (assignment_expression "uVar15 = FUN_00036ac5()" identifier = (call_expression "FUN_00036ac5()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);" (assignment_expression "puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20)" identifier = (cast_expression "(undefined4 *)((ulonglong)uVar15 >> 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "pcVar5 = (char *)uVar15;" (assignment_expression "pcVar5 = (char *)uVar15" identifier = (cast_expression "(char *)uVar15" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_4c = param_1;" (assignment_expression "local_4c = param_1" identifier = identifier) ;) (if_statement "if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }" if (parenthesized_expression "(*pcVar5 == '\x04')" ( (binary_expression "*pcVar5 == '\x04'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'\x04'" ' escape_sequence ')) )) (compound_statement "{\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }" { (expression_statement "iVar7 = *(int *)(pcVar5 + 4);" (assignment_expression "iVar7 = *(int *)(pcVar5 + 4)" identifier = (pointer_expression "*(int *)(pcVar5 + 4)" * (cast_expression "(int *)(pcVar5 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 4)" ( (binary_expression "pcVar5 + 4" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) (expression_statement "iVar1 = *(int *)(pcVar5 + 8);" (assignment_expression "iVar1 = *(int *)(pcVar5 + 8)" identifier = (pointer_expression "*(int *)(pcVar5 + 8)" * (cast_expression "(int *)(pcVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 8)" ( (binary_expression "pcVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar2 = *(int *)(iVar1 + 4);" (assignment_expression "iVar2 = *(int *)(iVar1 + 4)" identifier = (pointer_expression "*(int *)(iVar1 + 4)" * (cast_expression "(int *)(iVar1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 4)" ( (binary_expression "iVar1 + 4" identifier + number_literal) ))))) ;) (if_statement "if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;" if (parenthesized_expression "(((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))" ( (binary_expression "((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0)" (parenthesized_expression "((pcVar5[1] & 0x20U) != 0)" ( (binary_expression "(pcVar5[1] & 0x20U) != 0" (parenthesized_expression "(pcVar5[1] & 0x20U)" ( (binary_expression "pcVar5[1] & 0x20U" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0)" ( (comma_expression "local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0" (assignment_expression "local_50 = FUN_000a11a0()" identifier = (call_expression "FUN_000a11a0()" identifier (argument_list "()" ( )))) , (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (if_statement "if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" if (parenthesized_expression "(*(int *)(pcVar5 + 0x68) == 0)" ( (binary_expression "*(int *)(pcVar5 + 0x68) == 0" (pointer_expression "*(int *)(pcVar5 + 0x68)" * (cast_expression "(int *)(pcVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x68)" ( (binary_expression "pcVar5 + 0x68" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" { (if_statement "if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }" if (parenthesized_expression "(*(char *)(iVar1 + 0xb) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xb) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xb)" * (cast_expression "(char *)(iVar1 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xb)" ( (binary_expression "iVar1 + 0xb" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }" { (expression_statement "FUN_00048fb0(puVar11[1],puVar11[2],0);" (call_expression "FUN_00048fb0(puVar11[1],puVar11[2],0)" identifier (argument_list "(puVar11[1],puVar11[2],0)" ( (subscript_expression "puVar11[1]" identifier [ number_literal ]) , (subscript_expression "puVar11[2]" identifier [ number_literal ]) , number_literal ))) ;) })) (if_statement "if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c)))" ( (binary_expression "((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))" (parenthesized_expression "((pcVar5[1] & 2U) == 0)" ( (binary_expression "(pcVar5[1] & 2U) == 0" (parenthesized_expression "(pcVar5[1] & 2U)" ( (binary_expression "pcVar5[1] & 2U" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) || (parenthesized_expression "(puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))" ( (binary_expression "puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c)" (binary_expression "puVar11[2] != *(int *)(pcVar5 + 0x20)" (subscript_expression "puVar11[2]" identifier [ number_literal ]) != (pointer_expression "*(int *)(pcVar5 + 0x20)" * (cast_expression "(int *)(pcVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x20)" ( (binary_expression "pcVar5 + 0x20" identifier + number_literal) ))))) || (binary_expression "puVar11[1] != *(int *)(pcVar5 + 0x1c)" (subscript_expression "puVar11[1]" identifier [ number_literal ]) != (pointer_expression "*(int *)(pcVar5 + 0x1c)" * (cast_expression "(int *)(pcVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x1c)" ( (binary_expression "pcVar5 + 0x1c" identifier + number_literal) )))))) ))) )) (compound_statement "{\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }" { (if_statement "if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;" if (parenthesized_expression "((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0))" ( (binary_expression "(local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)" (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) && (parenthesized_expression "(local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)" ( (comma_expression "local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0" (assignment_expression "local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier = (call_expression "FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier (argument_list "(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" ( (subscript_expression "puVar11[1]" identifier [ number_literal ]) , (subscript_expression "puVar11[2]" identifier [ number_literal ]) , (binary_expression "extraout_ECX != 0" identifier != number_literal) , (pointer_expression "&local_4c" & identifier) )))) , (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) }) (else_clause "else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" else (if_statement "if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6]))" ( (binary_expression "(*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])" (parenthesized_expression "(*(short *)(pcVar5 + 0x2e) != 0)" ( (binary_expression "*(short *)(pcVar5 + 0x2e) != 0" (pointer_expression "*(short *)(pcVar5 + 0x2e)" * (cast_expression "(short *)(pcVar5 + 0x2e)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x2e)" ( (binary_expression "pcVar5 + 0x2e" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])" ( (binary_expression "*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6]" (pointer_expression "*(int *)(pcVar5 + 0x28)" * (cast_expression "(int *)(pcVar5 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x28)" ( (binary_expression "pcVar5 + 0x28" identifier + number_literal) )))) == (binary_expression "puVar11[7] + puVar11[6]" (subscript_expression "puVar11[7]" identifier [ number_literal ]) + (subscript_expression "puVar11[6]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" { (expression_statement "iVar7 = FUN_0009de20();" (assignment_expression "iVar7 = FUN_0009de20()" identifier = (call_expression "FUN_0009de20()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })))) }) (else_clause "else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" else (if_statement "if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" { (if_statement "if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }" if (parenthesized_expression "((extraout_ECX & 2) == 0)" ( (binary_expression "(extraout_ECX & 2) == 0" (parenthesized_expression "(extraout_ECX & 2)" ( (binary_expression "extraout_ECX & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }" { (if_statement "if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" if (parenthesized_expression "(*(short *)(puVar11 + 5) == 0)" ( (binary_expression "*(short *)(puVar11 + 5) == 0" (pointer_expression "*(short *)(puVar11 + 5)" * (cast_expression "(short *)(puVar11 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 5)" ( (binary_expression "puVar11 + 5" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }" { (expression_statement "local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);" (assignment_expression "local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier = (call_expression "FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" identifier (argument_list "(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" ( (subscript_expression "puVar11[1]" identifier [ number_literal ]) , (subscript_expression "puVar11[2]" identifier [ number_literal ]) , (binary_expression "extraout_ECX != 0" identifier != number_literal) , (pointer_expression "&local_4c" & identifier) )))) ;) }) (else_clause "else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" else (compound_statement "{\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" { (expression_statement "local_3c = puVar11[4];" (assignment_expression "local_3c = puVar11[4]" identifier = (subscript_expression "puVar11[4]" identifier [ number_literal ])) ;) (expression_statement "local_36 = 0;" (assignment_expression "local_36 = 0" identifier = number_literal) ;) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" identifier = number_literal) ;) (expression_statement "local_32 = 0;" (assignment_expression "local_32 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(int *)(pcVar5 + 0x68);" (assignment_expression "local_40 = *(int *)(pcVar5 + 0x68)" identifier = (pointer_expression "*(int *)(pcVar5 + 0x68)" * (cast_expression "(int *)(pcVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x68)" ( (binary_expression "pcVar5 + 0x68" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(short *)(puVar11 + 5);" (assignment_expression "local_38 = *(short *)(puVar11 + 5)" identifier = (pointer_expression "*(short *)(puVar11 + 5)" * (cast_expression "(short *)(puVar11 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 5)" ( (binary_expression "puVar11 + 5" identifier + number_literal) ))))) ;) (expression_statement "local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);" (assignment_expression "local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c)" identifier = (call_expression "FUN_000a2060(0,0,extraout_ECX != 0,&local_4c)" identifier (argument_list "(0,0,extraout_ECX != 0,&local_4c)" ( number_literal , number_literal , (binary_expression "extraout_ECX != 0" identifier != number_literal) , (pointer_expression "&local_4c" & identifier) )))) ;) }))) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (local_50 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (if_statement "if (local_4c != 0) goto LAB_000a3150;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a3150;" goto statement_identifier ;)) })) (expression_statement "FUN_00040b40();" (call_expression "FUN_00040b40()" identifier (argument_list "()" ( ))) ;) (if_statement "if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1])" ( (binary_expression "puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]" (binary_expression "puVar11[2] == *(int *)(pcVar5 + 0x20)" (subscript_expression "puVar11[2]" identifier [ number_literal ]) == (pointer_expression "*(int *)(pcVar5 + 0x20)" * (cast_expression "(int *)(pcVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x20)" ( (binary_expression "pcVar5 + 0x20" identifier + number_literal) ))))) && (binary_expression "*(int *)(pcVar5 + 0x1c) == puVar11[1]" (pointer_expression "*(int *)(pcVar5 + 0x1c)" * (cast_expression "(int *)(pcVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x1c)" ( (binary_expression "pcVar5 + 0x1c" identifier + number_literal) )))) == (subscript_expression "puVar11[1]" identifier [ number_literal ]))) )) (compound_statement "{\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" identifier = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "uStack_34 = (undefined2)uVar4;" (assignment_expression "uStack_34 = (undefined2)uVar4" identifier = (cast_expression "(undefined2)uVar4" ( (type_descriptor "undefined2" type_identifier) ) identifier)) ;) (expression_statement "local_32 = (undefined1)((uint)uVar4 >> 0x10);" (assignment_expression "local_32 = (undefined1)((uint)uVar4 >> 0x10)" identifier = (call_expression "(undefined1)((uint)uVar4 >> 0x10)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)uVar4 >> 0x10)" ( (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "uStack_31 = (undefined1)((uint)uVar4 >> 0x18);" (assignment_expression "uStack_31 = (undefined1)((uint)uVar4 >> 0x18)" identifier = (call_expression "(undefined1)((uint)uVar4 >> 0x18)" (parenthesized_expression "(undefined1)" ( identifier )) (argument_list "((uint)uVar4 >> 0x18)" ( (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "local_28 = puVar11[1];" (assignment_expression "local_28 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = FUN_0009de20();" (assignment_expression "iVar7 = FUN_0009de20()" identifier = (call_expression "FUN_0009de20()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) })))) (labeled_statement "LAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);" statement_identifier : (expression_statement "iVar1 = *(int *)(pcVar5 + 0x6c);" (assignment_expression "iVar1 = *(int *)(pcVar5 + 0x6c)" identifier = (pointer_expression "*(int *)(pcVar5 + 0x6c)" * (cast_expression "(int *)(pcVar5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x6c)" ( (binary_expression "pcVar5 + 0x6c" identifier + number_literal) ))))) ;)) (expression_statement "uVar12 = (uint)*(byte *)(iVar1 + 10);" (assignment_expression "uVar12 = (uint)*(byte *)(iVar1 + 10)" identifier = (binary_expression "(uint)*(byte *)(iVar1 + 10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar1 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 10)" ( (binary_expression "iVar1 + 10" identifier + number_literal) ))))) ;) (expression_statement "__src = *(undefined4 **)(iVar2 + 0x50);" (assignment_expression "__src = *(undefined4 **)(iVar2 + 0x50)" identifier = (pointer_expression "*(undefined4 **)(iVar2 + 0x50)" * (cast_expression "(undefined4 **)(iVar2 + 0x50)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar2 + 0x50)" ( (binary_expression "iVar2 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "puVar6 = (undefined1 *)((int)__src + uVar12);" (assignment_expression "puVar6 = (undefined1 *)((int)__src + uVar12)" identifier = (cast_expression "(undefined1 *)((int)__src + uVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__src + uVar12)" ( (binary_expression "(int)__src + uVar12" (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 2) == '\0')" ( (binary_expression "*(char *)(iVar1 + 2) == '\0'" (pointer_expression "*(char *)(iVar1 + 2)" * (cast_expression "(char *)(iVar1 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 2)" ( (binary_expression "iVar1 + 2" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }" { (expression_statement "local_98 = puVar11[1];" (assignment_expression "local_98 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "local_84 = (void *)*puVar11;" (assignment_expression "local_84 = (void *)*puVar11" identifier = (cast_expression "(void *)*puVar11" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier))) ;) (if_statement "if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" if (parenthesized_expression "(local_98 < 0x80)" ( (binary_expression "local_98 < 0x80" identifier < number_literal) )) (compound_statement "{\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)local_98" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" else (if_statement "if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" if (parenthesized_expression "((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98))" ( (binary_expression "(int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)" (binary_expression "(int)local_98 < 0" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) || (binary_expression "(uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)" (binary_expression "(uint)-((int)local_98 >> 0x1f)" (parenthesized_expression "(uint)" ( identifier )) - (parenthesized_expression "((int)local_98 >> 0x1f)" ( (binary_expression "(int)local_98 >> 0x1f" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) < (call_expression "(uint)(0x7f < local_98)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < local_98)" ( (binary_expression "0x7f < local_98" number_literal < identifier) ))))) )) (compound_statement "{\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" { (expression_statement "uVar9 = FUN_00046180();" (assignment_expression "uVar9 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar9 = uVar9 & 0xff;" (assignment_expression "uVar9 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" else (compound_statement "{\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" { (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)local_98" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) }))))) (expression_statement "iVar7 = uVar9 + uVar12;" (assignment_expression "iVar7 = uVar9 + uVar12" identifier = (binary_expression "uVar9 + uVar12" identifier + identifier)) ;) (expression_statement "local_88 = local_98;" (assignment_expression "local_88 = local_98" identifier = identifier) ;) }) (else_clause "else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" else (compound_statement "{\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" { (expression_statement "local_88 = puVar11[6];" (assignment_expression "local_88 = puVar11[6]" identifier = (subscript_expression "puVar11[6]" identifier [ number_literal ])) ;) (expression_statement "local_98 = local_88 + puVar11[7];" (assignment_expression "local_98 = local_88 + puVar11[7]" identifier = (binary_expression "local_88 + puVar11[7]" identifier + (subscript_expression "puVar11[7]" identifier [ number_literal ]))) ;) (expression_statement "local_84 = (void *)puVar11[3];" (assignment_expression "local_84 = (void *)puVar11[3]" identifier = (cast_expression "(void *)puVar11[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar11[3]" identifier [ number_literal ]))) ;) (if_statement "if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" if (parenthesized_expression "(local_98 < 0x80)" ( (binary_expression "local_98 < 0x80" identifier < number_literal) )) (compound_statement "{\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" { (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" * identifier) = (cast_expression "(char)local_98" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" else (compound_statement "{\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" { (expression_statement "uVar9 = FUN_00046180();" (assignment_expression "uVar9 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar9 = uVar9 & 0xff;" (assignment_expression "uVar9 = uVar9 & 0xff" identifier = (binary_expression "uVar9 & 0xff" identifier & number_literal)) ;) }))) (if_statement "if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }" if (parenthesized_expression "(puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2])" ( (binary_expression "puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]" (binary_expression "puVar11[2] == 0" (subscript_expression "puVar11[2]" identifier [ number_literal ]) == number_literal) && (binary_expression "(uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]" (call_expression "(uint)(0x7f < (uint)puVar11[1])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7f < (uint)puVar11[1])" ( (binary_expression "0x7f < (uint)puVar11[1]" number_literal < (cast_expression "(uint)puVar11[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ))) <= (binary_expression "(uint)-puVar11[2]" (parenthesized_expression "(uint)" ( identifier )) - (subscript_expression "puVar11[2]" identifier [ number_literal ])))) )) (compound_statement "{\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }" { (expression_statement "*(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];" (assignment_expression "*(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1]" (pointer_expression "*(char *)((int)__src + uVar12 + uVar9)" * (cast_expression "(char *)((int)__src + uVar12 + uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__src + uVar12 + uVar9)" ( (binary_expression "(int)__src + uVar12 + uVar9" (binary_expression "(int)__src + uVar12" (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + identifier) )))) = (cast_expression "(char)puVar11[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "puVar11[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      iVar7 = FUN_00046180();\n    }" else (compound_statement "{\n      iVar7 = FUN_00046180();\n    }" { (expression_statement "iVar7 = FUN_00046180();" (assignment_expression "iVar7 = FUN_00046180()" identifier = (call_expression "FUN_00046180()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "iVar7 = uVar12 + uVar9 + iVar7;" (assignment_expression "iVar7 = uVar12 + uVar9 + iVar7" identifier = (binary_expression "uVar12 + uVar9 + iVar7" (binary_expression "uVar12 + uVar9" identifier + identifier) + identifier)) ;) }))) (expression_statement "pvVar13 = (void *)((int)__src + iVar7);" (assignment_expression "pvVar13 = (void *)((int)__src + iVar7)" identifier = (cast_expression "(void *)((int)__src + iVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__src + iVar7)" ( (binary_expression "(int)__src + iVar7" (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (if_statement "if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" if (parenthesized_expression "((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98)" ( (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98" (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar1 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xe)" ( (binary_expression "iVar1 + 0xe" identifier + number_literal) )))) < (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }" { (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = *(int *)(iVar1 + 0x34);" (assignment_expression "iVar3 = *(int *)(iVar1 + 0x34)" identifier = (pointer_expression "*(int *)(iVar1 + 0x34)" * (cast_expression "(int *)(iVar1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x34)" ( (binary_expression "iVar1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar9 = (uint)*(ushort *)(iVar1 + 0x10);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar1 + 0x10)" identifier = (binary_expression "(uint)*(ushort *)(iVar1 + 0x10)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar1 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;" (assignment_expression "uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9" identifier = (binary_expression "(local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9" (binary_expression "(local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U)" (parenthesized_expression "(local_98 - uVar9)" ( (binary_expression "local_98 - uVar9" identifier - identifier) )) % (parenthesized_expression "(*(int *)(iVar3 + 0x24) - 4U)" ( (binary_expression "*(int *)(iVar3 + 0x24) - 4U" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) - number_literal) ))) + identifier)) ;) (if_statement "if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }" if (parenthesized_expression "((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12)" ( (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12" (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar1 + 0xe)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xe)" ( (binary_expression "iVar1 + 0xe" identifier + number_literal) )))) < (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar12 = uVar9;\n    }" { (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) })) (expression_statement "local_60 = iVar7 + uVar12 + 4;" (assignment_expression "local_60 = iVar7 + uVar12 + 4" identifier = (binary_expression "iVar7 + uVar12 + 4" (binary_expression "iVar7 + uVar12" identifier + identifier) + number_literal)) ;) (expression_statement "local_78 = (uint *)(iVar7 + uVar12 + (int)__src);" (assignment_expression "local_78 = (uint *)(iVar7 + uVar12 + (int)__src)" identifier = (cast_expression "(uint *)(iVar7 + uVar12 + (int)__src)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar12 + (int)__src)" ( (binary_expression "iVar7 + uVar12 + (int)__src" (binary_expression "iVar7 + uVar12" identifier + identifier) + (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (while_statement "while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }" { (expression_statement "uVar9 = local_98;" (assignment_expression "uVar9 = local_98" identifier = identifier) ;) (if_statement "if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }" if (parenthesized_expression "((int)uVar12 < (int)local_98)" ( (binary_expression "(int)uVar12 < (int)local_98" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar9 = uVar12;\n      }" { (expression_statement "uVar9 = uVar12;" (assignment_expression "uVar9 = uVar12" identifier = identifier) ;) })) (expression_statement "__n = uVar9;" (assignment_expression "__n = uVar9" identifier = identifier) ;) (if_statement "if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" if (parenthesized_expression "(((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1))" ( (binary_expression "((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)" (parenthesized_expression "((int)local_88 < (int)uVar9)" ( (binary_expression "(int)local_88 < (int)uVar9" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(__n = local_88, (int)local_88 < 1)" ( (comma_expression "__n = local_88, (int)local_88 < 1" (assignment_expression "__n = local_88" identifier = identifier) , (binary_expression "(int)local_88 < 1" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) (compound_statement "{\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }" { (expression_statement "memset(pvVar13,0,uVar9);" (call_expression "memset(pvVar13,0,uVar9)" identifier (argument_list "(pvVar13,0,uVar9)" ( identifier , number_literal , identifier ))) ;) (expression_statement "__n = uVar9;" (assignment_expression "__n = uVar9" identifier = identifier) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) }) (else_clause "else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" else (compound_statement "{\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" { (expression_statement "memcpy(pvVar13,local_84,__n);" (call_expression "memcpy(pvVar13,local_84,__n)" identifier (argument_list "(pvVar13,local_84,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) }))) (expression_statement "local_98 = local_98 - __n;" (assignment_expression "local_98 = local_98 - __n" identifier = (binary_expression "local_98 - __n" identifier - identifier)) ;) (expression_statement "local_44 = uVar9;" (assignment_expression "local_44 = uVar9" identifier = identifier) ;) (if_statement "if ((int)local_98 < 1) break;" if (parenthesized_expression "((int)local_98 < 1)" ( (binary_expression "(int)local_98 < 1" (cast_expression "(int)local_98" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_84 = (void *)((int)local_84 + __n);" (assignment_expression "local_84 = (void *)((int)local_84 + __n)" identifier = (cast_expression "(void *)((int)local_84 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_84 + __n)" ( (binary_expression "(int)local_84 + __n" (cast_expression "(int)local_84" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "local_88 = local_88 - __n;" (assignment_expression "local_88 = local_88 - __n" identifier = (binary_expression "local_88 - __n" identifier - identifier)) ;) (expression_statement "uVar12 = uVar12 - __n;" (assignment_expression "uVar12 = uVar12 - __n" identifier = (binary_expression "uVar12 - __n" identifier - identifier)) ;) (if_statement "if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }" { (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }" if (parenthesized_expression "(*(char *)(iVar3 + 0x11) != '\0')" ( (binary_expression "*(char *)(iVar3 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" * (cast_expression "(char *)(iVar3 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x11)" ( (binary_expression "iVar3 + 0x11" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }" { (expression_statement "uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);" (assignment_expression "uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20)" identifier = (binary_expression "*(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20)" (pointer_expression "*(uint *)(&DAT_000d935d + unaff_EDI)" * (cast_expression "(uint *)(&DAT_000d935d + unaff_EDI)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_000d935d + unaff_EDI)" ( (binary_expression "&DAT_000d935d + unaff_EDI" (pointer_expression "&DAT_000d935d" & identifier) + identifier) )))) / (pointer_expression "*(uint *)(iVar3 + 0x20)" * (cast_expression "(uint *)(iVar3 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))))) ;) (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) (do_statement "do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));" do (compound_statement "{\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          }" { (expression_statement "uVar10 = uVar12;" (assignment_expression "uVar10 = uVar12" identifier = identifier) ;) (expression_statement "local_44 = uVar10 + 1;" (assignment_expression "local_44 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }" if (parenthesized_expression "(1 < local_44)" ( (binary_expression "1 < local_44" number_literal < identifier) )) (compound_statement "{\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }" { (expression_statement "uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;" (assignment_expression "uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1" identifier = (binary_expression "*(uint *)(iVar3 + 0x24) / 5 + 1" (binary_expression "*(uint *)(iVar3 + 0x24) / 5" (pointer_expression "*(uint *)(iVar3 + 0x24)" * (cast_expression "(uint *)(iVar3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) / number_literal) + number_literal)) ;) (expression_statement "iVar7 = ((uVar10 - 1) / uVar12) * uVar12;" (assignment_expression "iVar7 = ((uVar10 - 1) / uVar12) * uVar12" identifier = (binary_expression "((uVar10 - 1) / uVar12) * uVar12" (parenthesized_expression "((uVar10 - 1) / uVar12)" ( (binary_expression "(uVar10 - 1) / uVar12" (parenthesized_expression "(uVar10 - 1)" ( (binary_expression "uVar10 - 1" identifier - number_literal) )) / identifier) )) * identifier)) ;) (expression_statement "uVar12 = iVar7 + 2;" (assignment_expression "uVar12 = iVar7 + 2" identifier = (binary_expression "iVar7 + 2" identifier + number_literal)) ;) (if_statement "if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }" if (parenthesized_expression "(uVar12 == uVar8 + 1)" ( (binary_expression "uVar12 == uVar8 + 1" identifier == (binary_expression "uVar8 + 1" identifier + number_literal)) )) (compound_statement "{\n                uVar12 = iVar7 + 3;\n              }" { (expression_statement "uVar12 = iVar7 + 3;" (assignment_expression "uVar12 = iVar7 + 3" identifier = (binary_expression "iVar7 + 3" identifier + number_literal)) ;) })) })) }) while (parenthesized_expression "((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8))" ( (binary_expression "(local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8)" (parenthesized_expression "(local_44 == uVar12)" ( (binary_expression "local_44 == uVar12" identifier == identifier) )) || (parenthesized_expression "(uVar12 = local_44, uVar10 == uVar8)" ( (comma_expression "uVar12 = local_44, uVar10 == uVar8" (assignment_expression "uVar12 = local_44" identifier = identifier) , (binary_expression "uVar10 == uVar8" identifier == identifier)) ))) )) ;) })) (expression_statement "local_48 = FUN_0009c6f0(local_44,0);" (assignment_expression "local_48 = FUN_0009c6f0(local_44,0)" identifier = (call_expression "FUN_0009c6f0(local_44,0)" identifier (argument_list "(local_44,0)" ( identifier , number_literal )))) ;) (if_statement "if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" if (parenthesized_expression "((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0))" ( (binary_expression "(*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)" (parenthesized_expression "(*(char *)(iVar3 + 0x11) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" * (cast_expression "(char *)(iVar3 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x11)" ( (binary_expression "iVar3 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) ))) )) (compound_statement "{\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }" { (labeled_statement "LAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" statement_identifier : (if_statement "if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" { (labeled_statement "LAB_000a3710:\n            iVar7 = local_48;" statement_identifier : (expression_statement "iVar7 = local_48;" (assignment_expression "iVar7 = local_48" identifier = identifier) ;)) (if_statement "if (local_80 == 0) goto LAB_000a33b0;" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_50 = local_48;" (assignment_expression "local_50 = local_48" identifier = identifier) ;) (expression_statement "iVar7 = local_48;" (assignment_expression "iVar7 = local_48" identifier = identifier) ;) (if_statement "if (local_48 == 0) goto LAB_000a36ac;" if (parenthesized_expression "(local_48 == 0)" ( (binary_expression "local_48 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a36ac;" goto statement_identifier ;)) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) }))) }) (else_clause "else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" else (compound_statement "{\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" { (expression_statement "FUN_0009d070(uVar9,&local_48);" (call_expression "FUN_0009d070(uVar9,&local_48)" identifier (argument_list "(uVar9,&local_48)" ( identifier , (pointer_expression "&local_48" & identifier) ))) ;) (if_statement "if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" { (if_statement "if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }" { (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_000a32d2;" goto statement_identifier ;) })) (goto_statement "goto LAB_000a3710;" goto statement_identifier ;) })) }))) (expression_statement "*local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;" (assignment_expression "*local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18" (pointer_expression "*local_78" * identifier) = (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" identifier >> number_literal) | (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" ( (binary_expression "local_44 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" ( (binary_expression "local_44 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_44 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_80 != 0) {\n          FUN_000386c0();\n        }" if (parenthesized_expression "(local_80 != 0)" ( (binary_expression "local_80 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_000386c0();\n        }" { (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_80 = local_40;" (assignment_expression "local_80 = local_40" identifier = identifier) ;) (expression_statement "local_78 = *(uint **)(local_40 + 0x38);" (assignment_expression "local_78 = *(uint **)(local_40 + 0x38)" identifier = (pointer_expression "*(uint **)(local_40 + 0x38)" * (cast_expression "(uint **)(local_40 + 0x38)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_40 + 0x38)" ( (binary_expression "local_40 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "*local_78 = 0;" (assignment_expression "*local_78 = 0" (pointer_expression "*local_78" * identifier) = number_literal) ;) (expression_statement "pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);" (assignment_expression "pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4)" identifier = (cast_expression "(void *)(*(int *)(local_40 + 0x38) + 4)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(local_40 + 0x38) + 4)" ( (binary_expression "*(int *)(local_40 + 0x38) + 4" (pointer_expression "*(int *)(local_40 + 0x38)" * (cast_expression "(int *)(local_40 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x38)" ( (binary_expression "local_40 + 0x38" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "uVar12 = *(int *)(iVar3 + 0x24) - 4;" (assignment_expression "uVar12 = *(int *)(iVar3 + 0x24) - 4" identifier = (binary_expression "*(int *)(iVar3 + 0x24) - 4" (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) )))) - number_literal)) ;) }) (else_clause "else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" else (compound_statement "{\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" { (expression_statement "pvVar13 = (void *)((int)pvVar13 + __n);" (assignment_expression "pvVar13 = (void *)((int)pvVar13 + __n)" identifier = (cast_expression "(void *)((int)pvVar13 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar13 + __n)" ( (binary_expression "(int)pvVar13 + __n" (cast_expression "(int)pvVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) })) (if_statement "if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }" if (parenthesized_expression "(local_80 == 0)" ( (binary_expression "local_80 == 0" identifier == number_literal) )) (compound_statement "{\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }" { (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000a36ac;" goto statement_identifier ;) })) (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = *(ushort *)(pcVar5 + 0x3e);" (assignment_expression "uVar14 = *(ushort *)(pcVar5 + 0x3e)" identifier = (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" * (cast_expression "(ushort *)(pcVar5 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x3e)" ( (binary_expression "pcVar5 + 0x3e" identifier + number_literal) ))))) ;) (if_statement "if (local_4c == 0) goto LAB_000a3433;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_000a3433;" goto statement_identifier ;)) (labeled_statement "LAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" statement_identifier : (if_statement "if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" if (parenthesized_expression "((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0))" ( (binary_expression "(local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)" (parenthesized_expression "(local_4c < 0)" ( (binary_expression "local_4c < 0" identifier < number_literal) )) && (parenthesized_expression "(*(short *)(iVar1 + 0x16) != 0)" ( (binary_expression "*(short *)(iVar1 + 0x16) != 0" (pointer_expression "*(short *)(iVar1 + 0x16)" * (cast_expression "(short *)(iVar1 + 0x16)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x16)" ( (binary_expression "iVar1 + 0x16" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" { (expression_statement "*(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;" (assignment_expression "*(ushort *)(pcVar5 + 0x3e) = uVar14 + 1" (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" * (cast_expression "(ushort *)(pcVar5 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x3e)" ( (binary_expression "pcVar5 + 0x3e" identifier + number_literal) )))) = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "pcVar5[1] = pcVar5[1] & 0xfd;" (assignment_expression "pcVar5[1] = pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (binary_expression "pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal)) ;) }))) }) (else_clause "else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" else (compound_statement "{\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" { (expression_statement "local_60 = 4;" (assignment_expression "local_60 = 4" identifier = number_literal) ;) (if_statement "if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }" if (parenthesized_expression "(3 < (int)(iVar7 + local_98))" ( (binary_expression "3 < (int)(iVar7 + local_98)" number_literal < (cast_expression "(int)(iVar7 + local_98)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar7 + local_98)" ( (binary_expression "iVar7 + local_98" identifier + identifier) )))) )) (compound_statement "{\n      local_60 = iVar7 + local_98;\n    }" { (expression_statement "local_60 = iVar7 + local_98;" (assignment_expression "local_60 = iVar7 + local_98" identifier = (binary_expression "iVar7 + local_98" identifier + identifier)) ;) })) (expression_statement "memcpy(pvVar13,local_84,local_88);" (call_expression "memcpy(pvVar13,local_84,local_88)" identifier (argument_list "(pvVar13,local_84,local_88)" ( identifier , identifier , identifier ))) ;) (expression_statement "memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);" (call_expression "memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88)" identifier (argument_list "((void *)((int)pvVar13 + local_88),0,local_98 - local_88)" ( (cast_expression "(void *)((int)pvVar13 + local_88)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar13 + local_88)" ( (binary_expression "(int)pvVar13 + local_88" (cast_expression "(int)pvVar13" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))) , number_literal , (binary_expression "local_98 - local_88" identifier - identifier) ))) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);" statement_identifier : (expression_statement "uVar14 = *(ushort *)(pcVar5 + 0x3e);" (assignment_expression "uVar14 = *(ushort *)(pcVar5 + 0x3e)" identifier = (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" * (cast_expression "(ushort *)(pcVar5 + 0x3e)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x3e)" ( (binary_expression "pcVar5 + 0x3e" identifier + number_literal) ))))) ;)) (if_statement "if (local_4c != 0) goto LAB_000a36c0;" if (parenthesized_expression "(local_4c != 0)" ( (binary_expression "local_4c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a36c0;" goto statement_identifier ;)) (labeled_statement "LAB_000a3433:\n    iVar7 = FUN_00098750();" statement_identifier : (expression_statement "iVar7 = FUN_00098750();" (assignment_expression "iVar7 = FUN_00098750()" identifier = (call_expression "FUN_00098750()" identifier (argument_list "()" ( )))) ;)) (expression_statement "local_50 = iVar7;" (assignment_expression "local_50 = iVar7" identifier = identifier) ;) (if_statement "if (iVar7 != 0) goto LAB_000a33b0;" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) (expression_statement "uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);" (assignment_expression "uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" identifier = (pointer_expression "*(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" * (cast_expression "(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" ( (binary_expression "*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2" (pointer_expression "*(int *)(iVar1 + 0x40)" * (cast_expression "(int *)(iVar1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x40)" ( (binary_expression "iVar1 + 0x40" identifier + number_literal) )))) + (binary_expression "(uint)uVar14 * 2" (cast_expression "(uint)uVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (expression_statement "__dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));" (assignment_expression "__dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" identifier = (cast_expression "(undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" ( (binary_expression "(uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38)" (call_expression "(uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18))" ( (binary_expression "(uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)" (parenthesized_expression "(uVar14 << 8 | uVar14 >> 8)" ( (binary_expression "uVar14 << 8 | uVar14 >> 8" (binary_expression "uVar14 << 8" identifier << number_literal) | (binary_expression "uVar14 >> 8" identifier >> number_literal)) )) & (pointer_expression "*(ushort *)(iVar1 + 0x18)" * (cast_expression "(ushort *)(iVar1 + 0x18)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x18)" ( (binary_expression "iVar1 + 0x18" identifier + number_literal) ))))) ))) + (pointer_expression "*(int *)(iVar1 + 0x38)" * (cast_expression "(int *)(iVar1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x38)" ( (binary_expression "iVar1 + 0x38" identifier + number_literal) ))))) )))) ;) (if_statement "if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }" if (parenthesized_expression "(*(char *)(iVar1 + 8) == '\0')" ( (binary_expression "*(char *)(iVar1 + 8) == '\0'" (pointer_expression "*(char *)(iVar1 + 8)" * (cast_expression "(char *)(iVar1 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *__src = *__dest;\n    }" { (expression_statement "*__src = *__dest;" (assignment_expression "*__src = *__dest" (pointer_expression "*__src" * identifier) = (pointer_expression "*__dest" * identifier)) ;) })) (expression_statement "local_50 = FUN_0009e3e0();" (assignment_expression "local_50 = FUN_0009e3e0()" identifier = (call_expression "FUN_0009e3e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }" if (parenthesized_expression "(((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       )" ( (binary_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))" (parenthesized_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))))" ( (binary_expression "(local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))" (parenthesized_expression "(local_2e == local_60)" ( (binary_expression "local_2e == local_60" identifier == identifier) )) && (parenthesized_expression "((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))" ( (binary_expression "(uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))" (cast_expression "(uint)local_30" ( (type_descriptor "uint" type_identifier) ) identifier) == (call_expression "CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))" identifier (argument_list "(uStack_31,CONCAT12(local_32,uStack_34))" ( identifier , (call_expression "CONCAT12(local_32,uStack_34)" identifier (argument_list "(local_32,uStack_34)" ( identifier , identifier ))) )))) ))) )) && (parenthesized_expression "((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))" ( (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10)))" ( (binary_expression "*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))" (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" * (cast_expression "(char *)(iVar2 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x11)" ( (binary_expression "iVar2 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))" ( (binary_expression "(int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10)" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0x10)" (cast_expression "(int)(uint)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(ushort *)(iVar1 + 0x10)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }" { (if_statement "if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }" if (parenthesized_expression "(*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest)" ( (binary_expression "*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest" (pointer_expression "*(uint *)(iVar1 + 0x3c)" * (cast_expression "(uint *)(iVar1 + 0x3c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x3c)" ( (binary_expression "iVar1 + 0x3c" identifier + number_literal) )))) < (binary_expression "local_60 + (int)__dest" identifier + (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }" { (expression_statement "FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);" (call_expression "FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5)" identifier (argument_list "(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5)" ( number_literal , (binary_expression "unaff_EDI + 0x7c78b" identifier + number_literal) , (binary_expression "unaff_EDI + 0x7c9c6" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x796f5" identifier + number_literal) ))) ;) (expression_statement "iVar7 = 0xb;" (assignment_expression "iVar7 = 0xb" identifier = number_literal) ;) }) (else_clause "else {\n        memcpy(__dest,__src,local_60);\n      }" else (compound_statement "{\n        memcpy(__dest,__src,local_60);\n      }" { (expression_statement "memcpy(__dest,__src,local_60);" (call_expression "memcpy(__dest,__src,local_60)" identifier (argument_list "(__dest,__src,local_60)" ( identifier , identifier , identifier ))) ;) }))) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;) })) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;" if (parenthesized_expression "((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))" ( (binary_expression "(local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0)" (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) || (parenthesized_expression "(FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0)" ( (comma_expression "FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0" (call_expression "FUN_0006ff70(&local_50)" identifier (argument_list "(&local_50)" ( (pointer_expression "&local_50" & identifier) ))) , (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" identifier = identifier) , (binary_expression "local_50 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_000a33b0;" goto statement_identifier ;)) }))) (expression_statement "FUN_0009e630(local_60,0,0,&local_50);" (call_expression "FUN_0009e630(local_60,0,0,&local_50)" identifier (argument_list "(local_60,0,0,&local_50)" ( identifier , number_literal , number_literal , (pointer_expression "&local_50" & identifier) ))) ;) (expression_statement "pcVar5[0x2e] = '\0';" (assignment_expression "pcVar5[0x2e] = '\0'" (subscript_expression "pcVar5[0x2e]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar5[0x2f] = '\0';" (assignment_expression "pcVar5[0x2f] = '\0'" (subscript_expression "pcVar5[0x2f]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar1 + 0xc) != '\0')" ( (binary_expression "*(char *)(iVar1 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xc)" * (cast_expression "(char *)(iVar1 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0xc)" ( (binary_expression "iVar1 + 0xc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }" { (expression_statement "pcVar5[1] = pcVar5[1] & 0xfd;" (assignment_expression "pcVar5[1] = pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) = (binary_expression "pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) & number_literal)) ;) (expression_statement "local_50 = FUN_000a0160();" (assignment_expression "local_50 = FUN_000a0160()" identifier = (call_expression "FUN_000a0160()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;" (assignment_expression "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0" (pointer_expression "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc)" * (cast_expression "(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar5 + 0x6c) + 0xc)" ( (binary_expression "*(int *)(pcVar5 + 0x6c) + 0xc" (pointer_expression "*(int *)(pcVar5 + 0x6c)" * (cast_expression "(int *)(pcVar5 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x6c)" ( (binary_expression "pcVar5 + 0x6c" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (expression_statement "*pcVar5 = '\x01';" (assignment_expression "*pcVar5 = '\x01'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }" if (parenthesized_expression "(((extraout_ECX & 2) != 0) && (local_50 == 0))" ( (binary_expression "((extraout_ECX & 2) != 0) && (local_50 == 0)" (parenthesized_expression "((extraout_ECX & 2) != 0)" ( (binary_expression "(extraout_ECX & 2) != 0" (parenthesized_expression "(extraout_ECX & 2)" ( (binary_expression "extraout_ECX & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }" { (expression_statement "FUN_00049010();" (call_expression "FUN_00049010()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) (if_statement "if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }" if (parenthesized_expression "(*(int *)(pcVar5 + 0x68) != 0)" ( (binary_expression "*(int *)(pcVar5 + 0x68) != 0" (pointer_expression "*(int *)(pcVar5 + 0x68)" * (cast_expression "(int *)(pcVar5 + 0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x68)" ( (binary_expression "pcVar5 + 0x68" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }" { (expression_statement "pvVar13 = (void *)FUN_000421f0();" (assignment_expression "pvVar13 = (void *)FUN_000421f0()" identifier = (cast_expression "(void *)FUN_000421f0()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000421f0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*(void **)(pcVar5 + 0x10) = pvVar13;" (assignment_expression "*(void **)(pcVar5 + 0x10) = pvVar13" (pointer_expression "*(void **)(pcVar5 + 0x10)" * (cast_expression "(void **)(pcVar5 + 0x10)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar5 + 0x10)" ( (binary_expression "pcVar5 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" identifier = number_literal) ;) (if_statement "if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }" if (parenthesized_expression "(pvVar13 != (void *)0x0)" ( (binary_expression "pvVar13 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }" { (expression_statement "memcpy(pvVar13,(void *)*puVar11,puVar11[1]);" (call_expression "memcpy(pvVar13,(void *)*puVar11,puVar11[1])" identifier (argument_list "(pvVar13,(void *)*puVar11,puVar11[1])" ( identifier , (cast_expression "(void *)*puVar11" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar11" * identifier)) , (subscript_expression "puVar11[1]" identifier [ number_literal ]) ))) ;) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" identifier = identifier) ;) })) })) (expression_statement "*pcVar5 = '\x03';" (assignment_expression "*pcVar5 = '\x03'" (pointer_expression "*pcVar5" * identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "uVar4 = puVar11[1];" (assignment_expression "uVar4 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(pcVar5 + 0x34) = puVar11[2];" (assignment_expression "*(undefined4 *)(pcVar5 + 0x34) = puVar11[2]" (pointer_expression "*(undefined4 *)(pcVar5 + 0x34)" * (cast_expression "(undefined4 *)(pcVar5 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x34)" ( (binary_expression "pcVar5 + 0x34" identifier + number_literal) )))) = (subscript_expression "puVar11[2]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(pcVar5 + 0x30) = uVar4;" (assignment_expression "*(undefined4 *)(pcVar5 + 0x30) = uVar4" (pointer_expression "*(undefined4 *)(pcVar5 + 0x30)" * (cast_expression "(undefined4 *)(pcVar5 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar5 + 0x30)" ( (binary_expression "pcVar5 + 0x30" identifier + number_literal) )))) = identifier) ;) })) })) (labeled_statement "LAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\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 iVar7;\n  }" { (return_statement "return iVar7;" return identifier ;) }))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (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 (pointer_declarator * IDENT) ;) (declaration TYPE 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_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) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) || (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (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 ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT != LIT) , (pointer_expression & IDENT) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (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 ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT != LIT) , (pointer_expression & IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_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 IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT , (binary_expression IDENT != LIT) , (pointer_expression & IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) })))) (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 = (binary_expression (parenthesized_expression ( IDENT )) * (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) && (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) <= (binary_expression (parenthesized_expression ( IDENT )) - (subscript_expression IDENT [ LIT ])))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + IDENT) )))) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_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 IDENT + LIT) ))))) ;) (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 (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) % (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) ))) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + 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 { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) / LIT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) / IDENT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == IDENT)) ))) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (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) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (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))) ;) (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) ))) , LIT , (binary_expression IDENT - IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (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) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * 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) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (call_expression IDENT (argument_list ( IDENT , (call_expression IDENT (argument_list ( IDENT , IDENT ))) )))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) (goto_statement goto statement_identifier ;) })) (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 ( (pointer_expression & IDENT) ))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (pointer_expression & 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 IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "int FUN_000a3060(int param_1)\n\n{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    \n  FUN_00116110();\n}" (primitive_type "int") (function_declarator "FUN_000a3060(int param_1)" (identifier "FUN_000a3060") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  undefined4 *__src;\n  int iVar3;\n  undefined4 uVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  int iVar7;\n  uint uVar8;\n  uint extraout_ECX;\n  uint uVar9;\n  uint uVar10;\n  undefined4 *puVar11;\n  uint uVar12;\n  undefined4 *__dest;\n  void *pvVar13;\n  ushort uVar14;\n  int unaff_EDI;\n  size_t __n;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  uint local_98;\n  size_t local_88;\n  void *local_84;\n  int local_80;\n  uint *local_78;\n  size_t local_60;\n  int local_50;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  short local_38;\n  undefined2 local_36;\n  undefined2 uStack_34;\n  undefined1 local_32;\n  undefined1 uStack_31;\n  ushort local_30;\n  ushort local_2e;\n  int local_28;\n  undefined4 local_24;\n  int local_20;\n  \n  uVar15 = FUN_00036ac5();\n  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);\n  pcVar5 = (char *)uVar15;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_4c = param_1;\n  if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }\n  iVar1 = *(int *)(pcVar5 + 8);\n  iVar2 = *(int *)(iVar1 + 4);\n  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;\n  if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\nLAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);\n  uVar12 = (uint)*(byte *)(iVar1 + 10);\n  __src = *(undefined4 **)(iVar2 + 0x50);\n  puVar6 = (undefined1 *)((int)__src + uVar12);\n  if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }\n  pvVar13 = (void *)((int)__src + iVar7);\n  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }\n  FUN_0009e630(local_60,0,0,&local_50);\n  pcVar5[0x2e] = '\0';\n  pcVar5[0x2f] = '\0';\n  iVar7 = local_50;\n  if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }\nLAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }\n                    \n  FUN_00116110();\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 *__src;" (type_identifier "undefined4") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint extraout_ECX;" (type_identifier "uint") (identifier "extraout_ECX") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "undefined4 *__dest;" (type_identifier "undefined4") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "void *pvVar13;" (primitive_type "void") (pointer_declarator "*pvVar13" (* "*") (identifier "pvVar13")) (; ";")) (declaration "ushort uVar14;" (type_identifier "ushort") (identifier "uVar14") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined8 uVar15;" (type_identifier "undefined8") (identifier "uVar15") (; ";")) (declaration "uint local_98;" (type_identifier "uint") (identifier "local_98") (; ";")) (declaration "size_t local_88;" (primitive_type "size_t") (identifier "local_88") (; ";")) (declaration "void *local_84;" (primitive_type "void") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "int local_80;" (primitive_type "int") (identifier "local_80") (; ";")) (declaration "uint *local_78;" (type_identifier "uint") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "size_t local_60;" (primitive_type "size_t") (identifier "local_60") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "short local_38;" (sized_type_specifier "short" (short "short")) (identifier "local_38") (; ";")) (declaration "undefined2 local_36;" (type_identifier "undefined2") (identifier "local_36") (; ";")) (declaration "undefined2 uStack_34;" (type_identifier "undefined2") (identifier "uStack_34") (; ";")) (declaration "undefined1 local_32;" (type_identifier "undefined1") (identifier "local_32") (; ";")) (declaration "undefined1 uStack_31;" (type_identifier "undefined1") (identifier "uStack_31") (; ";")) (declaration "ushort local_30;" (type_identifier "ushort") (identifier "local_30") (; ";")) (declaration "ushort local_2e;" (type_identifier "ushort") (identifier "local_2e") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "uVar15 = FUN_00036ac5();" (assignment_expression "uVar15 = FUN_00036ac5()" (identifier "uVar15") (= "=") (call_expression "FUN_00036ac5()" (identifier "FUN_00036ac5") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);" (assignment_expression "puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)((ulonglong)uVar15 >> 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "pcVar5 = (char *)uVar15;" (assignment_expression "pcVar5 = (char *)uVar15" (identifier "pcVar5") (= "=") (cast_expression "(char *)uVar15" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar15"))) (; ";")) (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_4c = param_1;" (assignment_expression "local_4c = param_1" (identifier "local_4c") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (*pcVar5 == '\x04') {\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }" (if "if") (parenthesized_expression "(*pcVar5 == '\x04')" (( "(") (binary_expression "*pcVar5 == '\x04'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")")) (compound_statement "{\n    iVar7 = *(int *)(pcVar5 + 4);\n    goto LAB_000a33b0;\n  }" ({ "{") (expression_statement "iVar7 = *(int *)(pcVar5 + 4);" (assignment_expression "iVar7 = *(int *)(pcVar5 + 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(pcVar5 + 4)" (* "*") (cast_expression "(int *)(pcVar5 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 4)" (( "(") (binary_expression "pcVar5 + 4" (identifier "pcVar5") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";")) (} "}"))) (expression_statement "iVar1 = *(int *)(pcVar5 + 8);" (assignment_expression "iVar1 = *(int *)(pcVar5 + 8)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(pcVar5 + 8)" (* "*") (cast_expression "(int *)(pcVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 8)" (( "(") (binary_expression "pcVar5 + 8" (identifier "pcVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar2 = *(int *)(iVar1 + 4);" (assignment_expression "iVar2 = *(int *)(iVar1 + 4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar1 + 4)" (* "*") (cast_expression "(int *)(iVar1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 4)" (( "(") (binary_expression "iVar1 + 4" (identifier "iVar1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))\n  goto LAB_000a33b0;" (if "if") (parenthesized_expression "(((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))" (( "(") (binary_expression "((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0)" (parenthesized_expression "((pcVar5[1] & 0x20U) != 0)" (( "(") (binary_expression "(pcVar5[1] & 0x20U) != 0" (parenthesized_expression "(pcVar5[1] & 0x20U)" (( "(") (binary_expression "pcVar5[1] & 0x20U" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x20U")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0)" (( "(") (comma_expression "local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0" (assignment_expression "local_50 = FUN_000a11a0()" (identifier "local_50") (= "=") (call_expression "FUN_000a11a0()" (identifier "FUN_000a11a0") (argument_list "()" (( "(") () ")")))) (, ",") (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (, ",") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";"))) (if_statement "if (*(int *)(pcVar5 + 0x68) == 0) {\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }\n  else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(pcVar5 + 0x68) == 0)" (( "(") (binary_expression "*(int *)(pcVar5 + 0x68) == 0" (pointer_expression "*(int *)(pcVar5 + 0x68)" (* "*") (cast_expression "(int *)(pcVar5 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x68)" (( "(") (binary_expression "pcVar5 + 0x68" (identifier "pcVar5") (+ "+") (number_literal "0x68")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }\n    if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" ({ "{") (if_statement "if (*(char *)(iVar1 + 0xb) != '\0') {\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 0xb) != '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0xb) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xb)" (* "*") (cast_expression "(char *)(iVar1 + 0xb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xb)" (( "(") (binary_expression "iVar1 + 0xb" (identifier "iVar1") (+ "+") (number_literal "0xb")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00048fb0(puVar11[1],puVar11[2],0);\n    }" ({ "{") (expression_statement "FUN_00048fb0(puVar11[1],puVar11[2],0);" (call_expression "FUN_00048fb0(puVar11[1],puVar11[2],0)" (identifier "FUN_00048fb0") (argument_list "(puVar11[1],puVar11[2],0)" (( "(") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (if_statement "if (((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }\n    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" (if "if") (parenthesized_expression "(((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c)))" (( "(") (binary_expression "((pcVar5[1] & 2U) == 0) ||\n       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))" (parenthesized_expression "((pcVar5[1] & 2U) == 0)" (( "(") (binary_expression "(pcVar5[1] & 2U) == 0" (parenthesized_expression "(pcVar5[1] & 2U)" (( "(") (binary_expression "pcVar5[1] & 2U" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "2U")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))" (( "(") (binary_expression "puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c)" (binary_expression "puVar11[2] != *(int *)(pcVar5 + 0x20)" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (!= "!=") (pointer_expression "*(int *)(pcVar5 + 0x20)" (* "*") (cast_expression "(int *)(pcVar5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x20)" (( "(") (binary_expression "pcVar5 + 0x20" (identifier "pcVar5") (+ "+") (number_literal "0x20")) () ")"))))) (|| "||") (binary_expression "puVar11[1] != *(int *)(pcVar5 + 0x1c)" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (!= "!=") (pointer_expression "*(int *)(pcVar5 + 0x1c)" (* "*") (cast_expression "(int *)(pcVar5 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x1c)" (( "(") (binary_expression "pcVar5 + 0x1c" (identifier "pcVar5") (+ "+") (number_literal "0x1c")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n      if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;\n    }" ({ "{") (if_statement "if ((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;" (if "if") (parenthesized_expression "((local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0))" (( "(") (binary_expression "(local_4c == 0) &&\n         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)" (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0)" (( "(") (comma_expression "local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),\n         iVar7 = local_50, local_50 != 0" (assignment_expression "local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" (identifier "local_50") (= "=") (call_expression "FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" (identifier "FUN_000a2060") (argument_list "(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" (( "(") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "extraout_ECX != 0" (identifier "extraout_ECX") (!= "!=") (number_literal "0")) (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) () ")")))) (, ",") (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (, ",") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";"))) (} "}")) (else_clause "else if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" (else "else") (if_statement "if ((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" (if "if") (parenthesized_expression "((*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6]))" (( "(") (binary_expression "(*(short *)(pcVar5 + 0x2e) != 0) &&\n            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])" (parenthesized_expression "(*(short *)(pcVar5 + 0x2e) != 0)" (( "(") (binary_expression "*(short *)(pcVar5 + 0x2e) != 0" (pointer_expression "*(short *)(pcVar5 + 0x2e)" (* "*") (cast_expression "(short *)(pcVar5 + 0x2e)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x2e)" (( "(") (binary_expression "pcVar5 + 0x2e" (identifier "pcVar5") (+ "+") (number_literal "0x2e")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])" (( "(") (binary_expression "*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6]" (pointer_expression "*(int *)(pcVar5 + 0x28)" (* "*") (cast_expression "(int *)(pcVar5 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x28)" (( "(") (binary_expression "pcVar5 + 0x28" (identifier "pcVar5") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (binary_expression "puVar11[7] + puVar11[6]" (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]")) (+ "+") (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" ({ "{") (expression_statement "iVar7 = FUN_0009de20();" (assignment_expression "iVar7 = FUN_0009de20()" (identifier "iVar7") (= "=") (call_expression "FUN_0009de20()" (identifier "FUN_0009de20") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";")) (} "}"))))) (} "}")) (else_clause "else if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" (else "else") (if_statement "if (local_4c == 0) {\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }\n    FUN_00040b40();\n    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }\n  }" ({ "{") (if_statement "if ((extraout_ECX & 2) == 0) {\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }" (if "if") (parenthesized_expression "((extraout_ECX & 2) == 0)" (( "(") (binary_expression "(extraout_ECX & 2) == 0" (parenthesized_expression "(extraout_ECX & 2)" (( "(") (binary_expression "extraout_ECX & 2" (identifier "extraout_ECX") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }\n      iVar7 = local_50;\n      if (local_50 != 0) goto LAB_000a33b0;\n      if (local_4c != 0) goto LAB_000a3150;\n    }" ({ "{") (if_statement "if (*(short *)(puVar11 + 5) == 0) {\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }\n      else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" (if "if") (parenthesized_expression "(*(short *)(puVar11 + 5) == 0)" (( "(") (binary_expression "*(short *)(puVar11 + 5) == 0" (pointer_expression "*(short *)(puVar11 + 5)" (* "*") (cast_expression "(short *)(puVar11 + 5)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 5)" (( "(") (binary_expression "puVar11 + 5" (identifier "puVar11") (+ "+") (number_literal "5")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);\n      }" ({ "{") (expression_statement "local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);" (assignment_expression "local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" (identifier "local_50") (= "=") (call_expression "FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" (identifier "FUN_000a2630") (argument_list "(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c)" (( "(") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "extraout_ECX != 0" (identifier "extraout_ECX") (!= "!=") (number_literal "0")) (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" (else "else") (compound_statement "{\n        local_3c = puVar11[4];\n        local_36 = 0;\n        uStack_34 = 0;\n        local_32 = 0;\n        local_40 = *(int *)(pcVar5 + 0x68);\n        local_38 = *(short *)(puVar11 + 5);\n        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);\n      }" ({ "{") (expression_statement "local_3c = puVar11[4];" (assignment_expression "local_3c = puVar11[4]" (identifier "local_3c") (= "=") (subscript_expression "puVar11[4]" (identifier "puVar11") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_36 = 0;" (assignment_expression "local_36 = 0" (identifier "local_36") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_34 = 0;" (assignment_expression "uStack_34 = 0" (identifier "uStack_34") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_32 = 0;" (assignment_expression "local_32 = 0" (identifier "local_32") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(int *)(pcVar5 + 0x68);" (assignment_expression "local_40 = *(int *)(pcVar5 + 0x68)" (identifier "local_40") (= "=") (pointer_expression "*(int *)(pcVar5 + 0x68)" (* "*") (cast_expression "(int *)(pcVar5 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x68)" (( "(") (binary_expression "pcVar5 + 0x68" (identifier "pcVar5") (+ "+") (number_literal "0x68")) () ")"))))) (; ";")) (expression_statement "local_38 = *(short *)(puVar11 + 5);" (assignment_expression "local_38 = *(short *)(puVar11 + 5)" (identifier "local_38") (= "=") (pointer_expression "*(short *)(puVar11 + 5)" (* "*") (cast_expression "(short *)(puVar11 + 5)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 5)" (( "(") (binary_expression "puVar11 + 5" (identifier "puVar11") (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);" (assignment_expression "local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c)" (identifier "local_50") (= "=") (call_expression "FUN_000a2060(0,0,extraout_ECX != 0,&local_4c)" (identifier "FUN_000a2060") (argument_list "(0,0,extraout_ECX != 0,&local_4c)" (( "(") (number_literal "0") (, ",") (number_literal "0") (, ",") (binary_expression "extraout_ECX != 0" (identifier "extraout_ECX") (!= "!=") (number_literal "0")) (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) () ")")))) (; ";")) (} "}")))) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (local_50 != 0) goto LAB_000a33b0;" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";"))) (if_statement "if (local_4c != 0) goto LAB_000a3150;" (if "if") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a3150;" (goto "goto") (statement_identifier "LAB_000a3150") (; ";"))) (} "}"))) (expression_statement "FUN_00040b40();" (call_expression "FUN_00040b40()" (identifier "FUN_00040b40") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" (if "if") (parenthesized_expression "(puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1])" (( "(") (binary_expression "puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]" (binary_expression "puVar11[2] == *(int *)(pcVar5 + 0x20)" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (== "==") (pointer_expression "*(int *)(pcVar5 + 0x20)" (* "*") (cast_expression "(int *)(pcVar5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x20)" (( "(") (binary_expression "pcVar5 + 0x20" (identifier "pcVar5") (+ "+") (number_literal "0x20")) () ")"))))) (&& "&&") (binary_expression "*(int *)(pcVar5 + 0x1c) == puVar11[1]" (pointer_expression "*(int *)(pcVar5 + 0x1c)" (* "*") (cast_expression "(int *)(pcVar5 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x1c)" (( "(") (binary_expression "pcVar5 + 0x1c" (identifier "pcVar5") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n      local_24 = 0;\n      uVar4 = *puVar11;\n      uStack_34 = (undefined2)uVar4;\n      local_32 = (undefined1)((uint)uVar4 >> 0x10);\n      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);\n      local_28 = puVar11[1];\n      iVar7 = FUN_0009de20();\n      goto LAB_000a33b0;\n    }" ({ "{") (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = *puVar11;" (assignment_expression "uVar4 = *puVar11" (identifier "uVar4") (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "uStack_34 = (undefined2)uVar4;" (assignment_expression "uStack_34 = (undefined2)uVar4" (identifier "uStack_34") (= "=") (cast_expression "(undefined2)uVar4" (( "(") (type_descriptor "undefined2" (type_identifier "undefined2")) () ")") (identifier "uVar4"))) (; ";")) (expression_statement "local_32 = (undefined1)((uint)uVar4 >> 0x10);" (assignment_expression "local_32 = (undefined1)((uint)uVar4 >> 0x10)" (identifier "local_32") (= "=") (call_expression "(undefined1)((uint)uVar4 >> 0x10)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)uVar4 >> 0x10)" (( "(") (binary_expression "(uint)uVar4 >> 0x10" (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uStack_31 = (undefined1)((uint)uVar4 >> 0x18);" (assignment_expression "uStack_31 = (undefined1)((uint)uVar4 >> 0x18)" (identifier "uStack_31") (= "=") (call_expression "(undefined1)((uint)uVar4 >> 0x18)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (argument_list "((uint)uVar4 >> 0x18)" (( "(") (binary_expression "(uint)uVar4 >> 0x18" (cast_expression "(uint)uVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "local_28 = puVar11[1];" (assignment_expression "local_28 = puVar11[1]" (identifier "local_28") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar7 = FUN_0009de20();" (assignment_expression "iVar7 = FUN_0009de20()" (identifier "iVar7") (= "=") (call_expression "FUN_0009de20()" (identifier "FUN_0009de20") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";")) (} "}"))) (} "}"))))) (labeled_statement "LAB_000a3150:\n  iVar1 = *(int *)(pcVar5 + 0x6c);" (statement_identifier "LAB_000a3150") (: ":") (expression_statement "iVar1 = *(int *)(pcVar5 + 0x6c);" (assignment_expression "iVar1 = *(int *)(pcVar5 + 0x6c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(pcVar5 + 0x6c)" (* "*") (cast_expression "(int *)(pcVar5 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x6c)" (( "(") (binary_expression "pcVar5 + 0x6c" (identifier "pcVar5") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";"))) (expression_statement "uVar12 = (uint)*(byte *)(iVar1 + 10);" (assignment_expression "uVar12 = (uint)*(byte *)(iVar1 + 10)" (identifier "uVar12") (= "=") (binary_expression "(uint)*(byte *)(iVar1 + 10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar1 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 10)" (( "(") (binary_expression "iVar1 + 10" (identifier "iVar1") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "__src = *(undefined4 **)(iVar2 + 0x50);" (assignment_expression "__src = *(undefined4 **)(iVar2 + 0x50)" (identifier "__src") (= "=") (pointer_expression "*(undefined4 **)(iVar2 + 0x50)" (* "*") (cast_expression "(undefined4 **)(iVar2 + 0x50)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar2 + 0x50)" (( "(") (binary_expression "iVar2 + 0x50" (identifier "iVar2") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "puVar6 = (undefined1 *)((int)__src + uVar12);" (assignment_expression "puVar6 = (undefined1 *)((int)__src + uVar12)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)((int)__src + uVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__src + uVar12)" (( "(") (binary_expression "(int)__src + uVar12" (cast_expression "(int)__src" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__src")) (+ "+") (identifier "uVar12")) () ")")))) (; ";")) (if_statement "if (*(char *)(iVar1 + 2) == '\0') {\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }\n  else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 2) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 2) == '\0'" (pointer_expression "*(char *)(iVar1 + 2)" (* "*") (cast_expression "(char *)(iVar1 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 2)" (( "(") (binary_expression "iVar1 + 2" (identifier "iVar1") (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_98 = puVar11[1];\n    local_84 = (void *)*puVar11;\n    if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    iVar7 = uVar9 + uVar12;\n    local_88 = local_98;\n  }" ({ "{") (expression_statement "local_98 = puVar11[1];" (assignment_expression "local_98 = puVar11[1]" (identifier "local_98") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_84 = (void *)*puVar11;" (assignment_expression "local_84 = (void *)*puVar11" (identifier "local_84") (= "=") (cast_expression "(void *)*puVar11" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")))) (; ";")) (if_statement "if (local_98 < 0x80) {\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }\n    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" (if "if") (parenthesized_expression "(local_98 < 0x80)" (( "(") (binary_expression "local_98 < 0x80" (identifier "local_98") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n      uVar9 = 1;\n      *puVar6 = (char)local_98;\n    }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)local_98" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_98"))) (; ";")) (} "}")) (else_clause "else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" (else "else") (if_statement "if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" (if "if") (parenthesized_expression "((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98))" (( "(") (binary_expression "(int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)" (binary_expression "(int)local_98 < 0" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (< "<") (number_literal "0")) (|| "||") (binary_expression "(uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)" (binary_expression "(uint)-((int)local_98 >> 0x1f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (parenthesized_expression "((int)local_98 >> 0x1f)" (( "(") (binary_expression "(int)local_98 >> 0x1f" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (>> ">>") (number_literal "0x1f")) () ")"))) (< "<") (call_expression "(uint)(0x7f < local_98)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7f < local_98)" (( "(") (binary_expression "0x7f < local_98" (number_literal "0x7f") (< "<") (identifier "local_98")) () ")"))))) () ")")) (compound_statement "{\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" ({ "{") (expression_statement "uVar9 = FUN_00046180();" (assignment_expression "uVar9 = FUN_00046180()" (identifier "uVar9") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar9 = uVar9 & 0xff;" (assignment_expression "uVar9 = uVar9 & 0xff" (identifier "uVar9") (= "=") (binary_expression "uVar9 & 0xff" (identifier "uVar9") (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (else_clause "else {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" (else "else") (compound_statement "{\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" ({ "{") (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)local_98" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_98"))) (; ";")) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (} "}")))))) (expression_statement "iVar7 = uVar9 + uVar12;" (assignment_expression "iVar7 = uVar9 + uVar12" (identifier "iVar7") (= "=") (binary_expression "uVar9 + uVar12" (identifier "uVar9") (+ "+") (identifier "uVar12"))) (; ";")) (expression_statement "local_88 = local_98;" (assignment_expression "local_88 = local_98" (identifier "local_88") (= "=") (identifier "local_98")) (; ";")) (} "}")) (else_clause "else {\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" (else "else") (compound_statement "{\n    local_88 = puVar11[6];\n    local_98 = local_88 + puVar11[7];\n    local_84 = (void *)puVar11[3];\n    if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }\n    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }\n    iVar7 = uVar12 + uVar9 + iVar7;\n  }" ({ "{") (expression_statement "local_88 = puVar11[6];" (assignment_expression "local_88 = puVar11[6]" (identifier "local_88") (= "=") (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_98 = local_88 + puVar11[7];" (assignment_expression "local_98 = local_88 + puVar11[7]" (identifier "local_98") (= "=") (binary_expression "local_88 + puVar11[7]" (identifier "local_88") (+ "+") (subscript_expression "puVar11[7]" (identifier "puVar11") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "local_84 = (void *)puVar11[3];" (assignment_expression "local_84 = (void *)puVar11[3]" (identifier "local_84") (= "=") (cast_expression "(void *)puVar11[3]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if (local_98 < 0x80) {\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }\n    else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" (if "if") (parenthesized_expression "(local_98 < 0x80)" (( "(") (binary_expression "local_98 < 0x80" (identifier "local_98") (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n      *puVar6 = (char)local_98;\n      uVar9 = 1;\n    }" ({ "{") (expression_statement "*puVar6 = (char)local_98;" (assignment_expression "*puVar6 = (char)local_98" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (cast_expression "(char)local_98" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_98"))) (; ";")) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" (else "else") (compound_statement "{\n      uVar9 = FUN_00046180();\n      uVar9 = uVar9 & 0xff;\n    }" ({ "{") (expression_statement "uVar9 = FUN_00046180();" (assignment_expression "uVar9 = FUN_00046180()" (identifier "uVar9") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar9 = uVar9 & 0xff;" (assignment_expression "uVar9 = uVar9 & 0xff" (identifier "uVar9") (= "=") (binary_expression "uVar9 & 0xff" (identifier "uVar9") (& "&") (number_literal "0xff"))) (; ";")) (} "}")))) (if_statement "if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }\n    else {\n      iVar7 = FUN_00046180();\n    }" (if "if") (parenthesized_expression "(puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2])" (( "(") (binary_expression "puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]" (binary_expression "puVar11[2] == 0" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) (&& "&&") (binary_expression "(uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]" (call_expression "(uint)(0x7f < (uint)puVar11[1])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7f < (uint)puVar11[1])" (( "(") (binary_expression "0x7f < (uint)puVar11[1]" (number_literal "0x7f") (< "<") (cast_expression "(uint)puVar11[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")))) () ")"))) (<= "<=") (binary_expression "(uint)-puVar11[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]"))))) () ")")) (compound_statement "{\n      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];\n      iVar7 = 1;\n    }" ({ "{") (expression_statement "*(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];" (assignment_expression "*(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1]" (pointer_expression "*(char *)((int)__src + uVar12 + uVar9)" (* "*") (cast_expression "(char *)((int)__src + uVar12 + uVar9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__src + uVar12 + uVar9)" (( "(") (binary_expression "(int)__src + uVar12 + uVar9" (binary_expression "(int)__src + uVar12" (cast_expression "(int)__src" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__src")) (+ "+") (identifier "uVar12")) (+ "+") (identifier "uVar9")) () ")")))) (= "=") (cast_expression "(char)puVar11[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      iVar7 = FUN_00046180();\n    }" (else "else") (compound_statement "{\n      iVar7 = FUN_00046180();\n    }" ({ "{") (expression_statement "iVar7 = FUN_00046180();" (assignment_expression "iVar7 = FUN_00046180()" (identifier "iVar7") (= "=") (call_expression "FUN_00046180()" (identifier "FUN_00046180") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar7 = uVar12 + uVar9 + iVar7;" (assignment_expression "iVar7 = uVar12 + uVar9 + iVar7" (identifier "iVar7") (= "=") (binary_expression "uVar12 + uVar9 + iVar7" (binary_expression "uVar12 + uVar9" (identifier "uVar12") (+ "+") (identifier "uVar9")) (+ "+") (identifier "iVar7"))) (; ";")) (} "}")))) (expression_statement "pvVar13 = (void *)((int)__src + iVar7);" (assignment_expression "pvVar13 = (void *)((int)__src + iVar7)" (identifier "pvVar13") (= "=") (cast_expression "(void *)((int)__src + iVar7)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__src + iVar7)" (( "(") (binary_expression "(int)__src + iVar7" (cast_expression "(int)__src" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__src")) (+ "+") (identifier "iVar7")) () ")")))) (; ";")) (if_statement "if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }\n  else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" (if "if") (parenthesized_expression "((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98)" (( "(") (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98" (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(iVar1 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xe)" (( "(") (binary_expression "iVar1 + 0xe" (identifier "iVar1") (+ "+") (number_literal "0xe")) () ")")))) (< "<") (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98"))) () ")")) (compound_statement "{\n    local_44 = 0;\n    local_80 = 0;\n    iVar3 = *(int *)(iVar1 + 0x34);\n    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);\n    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;\n    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }\n    local_60 = iVar7 + uVar12 + 4;\n    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);\n    while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }\n    if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }\n    FUN_000386c0();\n    local_50 = 0;\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c == 0) goto LAB_000a3433;\nLAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }\n  }" ({ "{") (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = *(int *)(iVar1 + 0x34);" (assignment_expression "iVar3 = *(int *)(iVar1 + 0x34)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar1 + 0x34)" (* "*") (cast_expression "(int *)(iVar1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x34)" (( "(") (binary_expression "iVar1 + 0x34" (identifier "iVar1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar9 = (uint)*(ushort *)(iVar1 + 0x10);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar1 + 0x10)" (identifier "uVar9") (= "=") (binary_expression "(uint)*(ushort *)(iVar1 + 0x10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar1 + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;" (assignment_expression "uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9" (identifier "uVar12") (= "=") (binary_expression "(local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9" (binary_expression "(local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U)" (parenthesized_expression "(local_98 - uVar9)" (( "(") (binary_expression "local_98 - uVar9" (identifier "local_98") (- "-") (identifier "uVar9")) () ")")) (% "%") (parenthesized_expression "(*(int *)(iVar3 + 0x24) - 4U)" (( "(") (binary_expression "*(int *)(iVar3 + 0x24) - 4U" (pointer_expression "*(int *)(iVar3 + 0x24)" (* "*") (cast_expression "(int *)(iVar3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")")))) (- "-") (number_literal "4U")) () ")"))) (+ "+") (identifier "uVar9"))) (; ";")) (if_statement "if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {\n      uVar12 = uVar9;\n    }" (if "if") (parenthesized_expression "((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12)" (( "(") (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12" (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0xe)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(iVar1 + 0xe)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xe)" (( "(") (binary_expression "iVar1 + 0xe" (identifier "iVar1") (+ "+") (number_literal "0xe")) () ")")))) (< "<") (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12"))) () ")")) (compound_statement "{\n      uVar12 = uVar9;\n    }" ({ "{") (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" (identifier "uVar12") (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "local_60 = iVar7 + uVar12 + 4;" (assignment_expression "local_60 = iVar7 + uVar12 + 4" (identifier "local_60") (= "=") (binary_expression "iVar7 + uVar12 + 4" (binary_expression "iVar7 + uVar12" (identifier "iVar7") (+ "+") (identifier "uVar12")) (+ "+") (number_literal "4"))) (; ";")) (expression_statement "local_78 = (uint *)(iVar7 + uVar12 + (int)__src);" (assignment_expression "local_78 = (uint *)(iVar7 + uVar12 + (int)__src)" (identifier "local_78") (= "=") (cast_expression "(uint *)(iVar7 + uVar12 + (int)__src)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + uVar12 + (int)__src)" (( "(") (binary_expression "iVar7 + uVar12 + (int)__src" (binary_expression "iVar7 + uVar12" (identifier "iVar7") (+ "+") (identifier "uVar12")) (+ "+") (cast_expression "(int)__src" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__src"))) () ")")))) (; ";")) (while_statement "while( true ) {\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar9 = local_98;\n      if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }\n      __n = uVar9;\n      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }\n      local_98 = local_98 - __n;\n      local_44 = uVar9;\n      if ((int)local_98 < 1) break;\n      local_84 = (void *)((int)local_84 + __n);\n      local_88 = local_88 - __n;\n      uVar12 = uVar12 - __n;\n      if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }\n    }" ({ "{") (expression_statement "uVar9 = local_98;" (assignment_expression "uVar9 = local_98" (identifier "uVar9") (= "=") (identifier "local_98")) (; ";")) (if_statement "if ((int)uVar12 < (int)local_98) {\n        uVar9 = uVar12;\n      }" (if "if") (parenthesized_expression "((int)uVar12 < (int)local_98)" (( "(") (binary_expression "(int)uVar12 < (int)local_98" (cast_expression "(int)uVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar12")) (< "<") (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98"))) () ")")) (compound_statement "{\n        uVar9 = uVar12;\n      }" ({ "{") (expression_statement "uVar9 = uVar12;" (assignment_expression "uVar9 = uVar12" (identifier "uVar9") (= "=") (identifier "uVar12")) (; ";")) (} "}"))) (expression_statement "__n = uVar9;" (assignment_expression "__n = uVar9" (identifier "__n") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }\n      else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" (if "if") (parenthesized_expression "(((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1))" (( "(") (binary_expression "((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)" (parenthesized_expression "((int)local_88 < (int)uVar9)" (( "(") (binary_expression "(int)local_88 < (int)uVar9" (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88")) (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (&& "&&") (parenthesized_expression "(__n = local_88, (int)local_88 < 1)" (( "(") (comma_expression "__n = local_88, (int)local_88 < 1" (assignment_expression "__n = local_88" (identifier "__n") (= "=") (identifier "local_88")) (, ",") (binary_expression "(int)local_88 < 1" (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88")) (< "<") (number_literal "1"))) () ")"))) () ")")) (compound_statement "{\n        memset(pvVar13,0,uVar9);\n        __n = uVar9;\n        uVar9 = local_44;\n      }" ({ "{") (expression_statement "memset(pvVar13,0,uVar9);" (call_expression "memset(pvVar13,0,uVar9)" (identifier "memset") (argument_list "(pvVar13,0,uVar9)" (( "(") (identifier "pvVar13") (, ",") (number_literal "0") (, ",") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "__n = uVar9;" (assignment_expression "__n = uVar9" (identifier "__n") (= "=") (identifier "uVar9")) (; ";")) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" (identifier "uVar9") (= "=") (identifier "local_44")) (; ";")) (} "}")) (else_clause "else {\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" (else "else") (compound_statement "{\n        memcpy(pvVar13,local_84,__n);\n        uVar9 = local_44;\n      }" ({ "{") (expression_statement "memcpy(pvVar13,local_84,__n);" (call_expression "memcpy(pvVar13,local_84,__n)" (identifier "memcpy") (argument_list "(pvVar13,local_84,__n)" (( "(") (identifier "pvVar13") (, ",") (identifier "local_84") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" (identifier "uVar9") (= "=") (identifier "local_44")) (; ";")) (} "}")))) (expression_statement "local_98 = local_98 - __n;" (assignment_expression "local_98 = local_98 - __n" (identifier "local_98") (= "=") (binary_expression "local_98 - __n" (identifier "local_98") (- "-") (identifier "__n"))) (; ";")) (expression_statement "local_44 = uVar9;" (assignment_expression "local_44 = uVar9" (identifier "local_44") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((int)local_98 < 1) break;" (if "if") (parenthesized_expression "((int)local_98 < 1)" (( "(") (binary_expression "(int)local_98 < 1" (cast_expression "(int)local_98" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_98")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_84 = (void *)((int)local_84 + __n);" (assignment_expression "local_84 = (void *)((int)local_84 + __n)" (identifier "local_84") (= "=") (cast_expression "(void *)((int)local_84 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_84 + __n)" (( "(") (binary_expression "(int)local_84 + __n" (cast_expression "(int)local_84" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_84")) (+ "+") (identifier "__n")) () ")")))) (; ";")) (expression_statement "local_88 = local_88 - __n;" (assignment_expression "local_88 = local_88 - __n" (identifier "local_88") (= "=") (binary_expression "local_88 - __n" (identifier "local_88") (- "-") (identifier "__n"))) (; ";")) (expression_statement "uVar12 = uVar12 - __n;" (assignment_expression "uVar12 = uVar12 - __n" (identifier "uVar12") (= "=") (binary_expression "uVar12 - __n" (identifier "uVar12") (- "-") (identifier "__n"))) (; ";")) (if_statement "if (uVar12 == 0) {\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }\n      else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_40 = 0;\n        if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }\n        local_48 = FUN_0009c6f0(local_44,0);\n        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }\n        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;\n        if (local_80 != 0) {\n          FUN_000386c0();\n        }\n        local_80 = local_40;\n        local_78 = *(uint **)(local_40 + 0x38);\n        *local_78 = 0;\n        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);\n        uVar12 = *(int *)(iVar3 + 0x24) - 4;\n      }" ({ "{") (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(iVar3 + 0x11) != '\0') {\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 0x11) != '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 0x11) != '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" (* "*") (cast_expression "(char *)(iVar3 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x11)" (( "(") (binary_expression "iVar3 + 0x11" (identifier "iVar3") (+ "+") (number_literal "0x11")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);\n          uVar12 = uVar9;\n          do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));\n        }" ({ "{") (expression_statement "uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);" (assignment_expression "uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20)" (identifier "uVar8") (= "=") (binary_expression "*(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20)" (pointer_expression "*(uint *)(&DAT_000d935d + unaff_EDI)" (* "*") (cast_expression "(uint *)(&DAT_000d935d + unaff_EDI)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_000d935d + unaff_EDI)" (( "(") (binary_expression "&DAT_000d935d + unaff_EDI" (pointer_expression "&DAT_000d935d" (& "&") (identifier "DAT_000d935d")) (+ "+") (identifier "unaff_EDI")) () ")")))) (/ "/") (pointer_expression "*(uint *)(iVar3 + 0x20)" (* "*") (cast_expression "(uint *)(iVar3 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")")))))) (; ";")) (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" (identifier "uVar12") (= "=") (identifier "uVar9")) (; ";")) (do_statement "do {\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));" (do "do") (compound_statement "{\n            uVar10 = uVar12;\n            local_44 = uVar10 + 1;\n            uVar12 = 0;\n            if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }\n          }" ({ "{") (expression_statement "uVar10 = uVar12;" (assignment_expression "uVar10 = uVar12" (identifier "uVar10") (= "=") (identifier "uVar12")) (; ";")) (expression_statement "local_44 = uVar10 + 1;" (assignment_expression "local_44 = uVar10 + 1" (identifier "local_44") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (1 < local_44) {\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }" (if "if") (parenthesized_expression "(1 < local_44)" (( "(") (binary_expression "1 < local_44" (number_literal "1") (< "<") (identifier "local_44")) () ")")) (compound_statement "{\n              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;\n              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;\n              uVar12 = iVar7 + 2;\n              if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }\n            }" ({ "{") (expression_statement "uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;" (assignment_expression "uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1" (identifier "uVar12") (= "=") (binary_expression "*(uint *)(iVar3 + 0x24) / 5 + 1" (binary_expression "*(uint *)(iVar3 + 0x24) / 5" (pointer_expression "*(uint *)(iVar3 + 0x24)" (* "*") (cast_expression "(uint *)(iVar3 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")")))) (/ "/") (number_literal "5")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar7 = ((uVar10 - 1) / uVar12) * uVar12;" (assignment_expression "iVar7 = ((uVar10 - 1) / uVar12) * uVar12" (identifier "iVar7") (= "=") (binary_expression "((uVar10 - 1) / uVar12) * uVar12" (parenthesized_expression "((uVar10 - 1) / uVar12)" (( "(") (binary_expression "(uVar10 - 1) / uVar12" (parenthesized_expression "(uVar10 - 1)" (( "(") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1")) () ")")) (/ "/") (identifier "uVar12")) () ")")) (* "*") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = iVar7 + 2;" (assignment_expression "uVar12 = iVar7 + 2" (identifier "uVar12") (= "=") (binary_expression "iVar7 + 2" (identifier "iVar7") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (uVar12 == uVar8 + 1) {\n                uVar12 = iVar7 + 3;\n              }" (if "if") (parenthesized_expression "(uVar12 == uVar8 + 1)" (( "(") (binary_expression "uVar12 == uVar8 + 1" (identifier "uVar12") (== "==") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n                uVar12 = iVar7 + 3;\n              }" ({ "{") (expression_statement "uVar12 = iVar7 + 3;" (assignment_expression "uVar12 = iVar7 + 3" (identifier "uVar12") (= "=") (binary_expression "iVar7 + 3" (identifier "iVar7") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8))" (( "(") (binary_expression "(local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8)" (parenthesized_expression "(local_44 == uVar12)" (( "(") (binary_expression "local_44 == uVar12" (identifier "local_44") (== "==") (identifier "uVar12")) () ")")) (|| "||") (parenthesized_expression "(uVar12 = local_44, uVar10 == uVar8)" (( "(") (comma_expression "uVar12 = local_44, uVar10 == uVar8" (assignment_expression "uVar12 = local_44" (identifier "uVar12") (= "=") (identifier "local_44")) (, ",") (binary_expression "uVar10 == uVar8" (identifier "uVar10") (== "==") (identifier "uVar8"))) () ")"))) () ")")) (; ";")) (} "}"))) (expression_statement "local_48 = FUN_0009c6f0(local_44,0);" (assignment_expression "local_48 = FUN_0009c6f0(local_44,0)" (identifier "local_48") (= "=") (call_expression "FUN_0009c6f0(local_44,0)" (identifier "FUN_0009c6f0") (argument_list "(local_44,0)" (( "(") (identifier "local_44") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }\n        else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" (if "if") (parenthesized_expression "((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0))" (( "(") (binary_expression "(*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)" (parenthesized_expression "(*(char *)(iVar3 + 0x11) == '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x11)" (* "*") (cast_expression "(char *)(iVar3 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x11)" (( "(") (binary_expression "iVar3 + 0x11" (identifier "iVar3") (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }\n        }" ({ "{") (labeled_statement "LAB_000a32d2:\n          if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" (statement_identifier "LAB_000a32d2") (: ":") (if_statement "if (local_48 != 0) {\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000a3710:\n            iVar7 = local_48;\n            if (local_80 == 0) goto LAB_000a33b0;\n            FUN_000386c0();\n            local_50 = local_48;\n            iVar7 = local_48;\n            if (local_48 == 0) goto LAB_000a36ac;\n            goto LAB_000a33b0;\n          }" ({ "{") (labeled_statement "LAB_000a3710:\n            iVar7 = local_48;" (statement_identifier "LAB_000a3710") (: ":") (expression_statement "iVar7 = local_48;" (assignment_expression "iVar7 = local_48" (identifier "iVar7") (= "=") (identifier "local_48")) (; ";"))) (if_statement "if (local_80 == 0) goto LAB_000a33b0;" (if "if") (parenthesized_expression "(local_80 == 0)" (( "(") (binary_expression "local_80 == 0" (identifier "local_80") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";"))) (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" (identifier "FUN_000386c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_50 = local_48;" (assignment_expression "local_50 = local_48" (identifier "local_50") (= "=") (identifier "local_48")) (; ";")) (expression_statement "iVar7 = local_48;" (assignment_expression "iVar7 = local_48" (identifier "iVar7") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (local_48 == 0) goto LAB_000a36ac;" (if "if") (parenthesized_expression "(local_48 == 0)" (( "(") (binary_expression "local_48 == 0" (identifier "local_48") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a36ac;" (goto "goto") (statement_identifier "LAB_000a36ac") (; ";"))) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" (else "else") (compound_statement "{\n          FUN_0009d070(uVar9,&local_48);\n          if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }\n        }" ({ "{") (expression_statement "FUN_0009d070(uVar9,&local_48);" (call_expression "FUN_0009d070(uVar9,&local_48)" (identifier "FUN_0009d070") (argument_list "(uVar9,&local_48)" (( "(") (identifier "uVar9") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))) (; ";")) (if_statement "if (local_48 != 0) {\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }\n            goto LAB_000a3710;\n          }" ({ "{") (if_statement "if (local_40 != 0) {\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_000386c0();\n              goto LAB_000a32d2;\n            }" ({ "{") (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" (identifier "FUN_000386c0") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_000a32d2;" (goto "goto") (statement_identifier "LAB_000a32d2") (; ";")) (} "}"))) (goto_statement "goto LAB_000a3710;" (goto "goto") (statement_identifier "LAB_000a3710") (; ";")) (} "}"))) (} "}")))) (expression_statement "*local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18;" (assignment_expression "*local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (= "=") (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |\n                    local_44 << 0x18" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8" (binary_expression "local_44 >> 0x18 | (local_44 & 0xff0000) >> 8" (binary_expression "local_44 >> 0x18" (identifier "local_44") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_44 & 0xff0000) >> 8" (parenthesized_expression "(local_44 & 0xff0000)" (( "(") (binary_expression "local_44 & 0xff0000" (identifier "local_44") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_44 & 0xff00) << 8" (parenthesized_expression "(local_44 & 0xff00)" (( "(") (binary_expression "local_44 & 0xff00" (identifier "local_44") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_44 << 0x18" (identifier "local_44") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (local_80 != 0) {\n          FUN_000386c0();\n        }" (if "if") (parenthesized_expression "(local_80 != 0)" (( "(") (binary_expression "local_80 != 0" (identifier "local_80") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_000386c0();\n        }" ({ "{") (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" (identifier "FUN_000386c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_80 = local_40;" (assignment_expression "local_80 = local_40" (identifier "local_80") (= "=") (identifier "local_40")) (; ";")) (expression_statement "local_78 = *(uint **)(local_40 + 0x38);" (assignment_expression "local_78 = *(uint **)(local_40 + 0x38)" (identifier "local_78") (= "=") (pointer_expression "*(uint **)(local_40 + 0x38)" (* "*") (cast_expression "(uint **)(local_40 + 0x38)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_40 + 0x38)" (( "(") (binary_expression "local_40 + 0x38" (identifier "local_40") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "*local_78 = 0;" (assignment_expression "*local_78 = 0" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);" (assignment_expression "pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4)" (identifier "pvVar13") (= "=") (cast_expression "(void *)(*(int *)(local_40 + 0x38) + 4)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(local_40 + 0x38) + 4)" (( "(") (binary_expression "*(int *)(local_40 + 0x38) + 4" (pointer_expression "*(int *)(local_40 + 0x38)" (* "*") (cast_expression "(int *)(local_40 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x38)" (( "(") (binary_expression "local_40 + 0x38" (identifier "local_40") (+ "+") (number_literal "0x38")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (; ";")) (expression_statement "uVar12 = *(int *)(iVar3 + 0x24) - 4;" (assignment_expression "uVar12 = *(int *)(iVar3 + 0x24) - 4" (identifier "uVar12") (= "=") (binary_expression "*(int *)(iVar3 + 0x24) - 4" (pointer_expression "*(int *)(iVar3 + 0x24)" (* "*") (cast_expression "(int *)(iVar3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")")))) (- "-") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" (else "else") (compound_statement "{\n        pvVar13 = (void *)((int)pvVar13 + __n);\n      }" ({ "{") (expression_statement "pvVar13 = (void *)((int)pvVar13 + __n);" (assignment_expression "pvVar13 = (void *)((int)pvVar13 + __n)" (identifier "pvVar13") (= "=") (cast_expression "(void *)((int)pvVar13 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar13 + __n)" (( "(") (binary_expression "(int)pvVar13 + __n" (cast_expression "(int)pvVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar13")) (+ "+") (identifier "__n")) () ")")))) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_80 == 0) {\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }" (if "if") (parenthesized_expression "(local_80 == 0)" (( "(") (binary_expression "local_80 == 0" (identifier "local_80") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_50 = 0;\n      goto LAB_000a36ac;\n    }" ({ "{") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000a36ac;" (goto "goto") (statement_identifier "LAB_000a36ac") (; ";")) (} "}"))) (expression_statement "FUN_000386c0();" (call_expression "FUN_000386c0()" (identifier "FUN_000386c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = *(ushort *)(pcVar5 + 0x3e);" (assignment_expression "uVar14 = *(ushort *)(pcVar5 + 0x3e)" (identifier "uVar14") (= "=") (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" (* "*") (cast_expression "(ushort *)(pcVar5 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x3e)" (( "(") (binary_expression "pcVar5 + 0x3e" (identifier "pcVar5") (+ "+") (number_literal "0x3e")) () ")"))))) (; ";")) (if_statement "if (local_4c == 0) goto LAB_000a3433;" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a3433;" (goto "goto") (statement_identifier "LAB_000a3433") (; ";"))) (labeled_statement "LAB_000a36c0:\n    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" (statement_identifier "LAB_000a36c0") (: ":") (if_statement "if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" (if "if") (parenthesized_expression "((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0))" (( "(") (binary_expression "(local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)" (parenthesized_expression "(local_4c < 0)" (( "(") (binary_expression "local_4c < 0" (identifier "local_4c") (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(short *)(iVar1 + 0x16) != 0)" (( "(") (binary_expression "*(short *)(iVar1 + 0x16) != 0" (pointer_expression "*(short *)(iVar1 + 0x16)" (* "*") (cast_expression "(short *)(iVar1 + 0x16)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x16)" (( "(") (binary_expression "iVar1 + 0x16" (identifier "iVar1") (+ "+") (number_literal "0x16")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;\n      pcVar5[1] = pcVar5[1] & 0xfd;\n    }" ({ "{") (expression_statement "*(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;" (assignment_expression "*(ushort *)(pcVar5 + 0x3e) = uVar14 + 1" (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" (* "*") (cast_expression "(ushort *)(pcVar5 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x3e)" (( "(") (binary_expression "pcVar5 + 0x3e" (identifier "pcVar5") (+ "+") (number_literal "0x3e")) () ")")))) (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5[1] = pcVar5[1] & 0xfd;" (assignment_expression "pcVar5[1] = pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xfd"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" (else "else") (compound_statement "{\n    local_60 = 4;\n    if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }\n    memcpy(pvVar13,local_84,local_88);\n    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);\n    local_50 = 0;\nLAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);\n    if (local_4c != 0) goto LAB_000a36c0;\nLAB_000a3433:\n    iVar7 = FUN_00098750();\n    local_50 = iVar7;\n    if (iVar7 != 0) goto LAB_000a33b0;\n    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);\n    __dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));\n    if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }\n    local_50 = FUN_0009e3e0();\n    if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }\n    iVar7 = local_50;\n    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;\n  }" ({ "{") (expression_statement "local_60 = 4;" (assignment_expression "local_60 = 4" (identifier "local_60") (= "=") (number_literal "4")) (; ";")) (if_statement "if (3 < (int)(iVar7 + local_98)) {\n      local_60 = iVar7 + local_98;\n    }" (if "if") (parenthesized_expression "(3 < (int)(iVar7 + local_98))" (( "(") (binary_expression "3 < (int)(iVar7 + local_98)" (number_literal "3") (< "<") (cast_expression "(int)(iVar7 + local_98)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar7 + local_98)" (( "(") (binary_expression "iVar7 + local_98" (identifier "iVar7") (+ "+") (identifier "local_98")) () ")")))) () ")")) (compound_statement "{\n      local_60 = iVar7 + local_98;\n    }" ({ "{") (expression_statement "local_60 = iVar7 + local_98;" (assignment_expression "local_60 = iVar7 + local_98" (identifier "local_60") (= "=") (binary_expression "iVar7 + local_98" (identifier "iVar7") (+ "+") (identifier "local_98"))) (; ";")) (} "}"))) (expression_statement "memcpy(pvVar13,local_84,local_88);" (call_expression "memcpy(pvVar13,local_84,local_88)" (identifier "memcpy") (argument_list "(pvVar13,local_84,local_88)" (( "(") (identifier "pvVar13") (, ",") (identifier "local_84") (, ",") (identifier "local_88") () ")"))) (; ";")) (expression_statement "memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);" (call_expression "memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88)" (identifier "memset") (argument_list "((void *)((int)pvVar13 + local_88),0,local_98 - local_88)" (( "(") (cast_expression "(void *)((int)pvVar13 + local_88)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pvVar13 + local_88)" (( "(") (binary_expression "(int)pvVar13 + local_88" (cast_expression "(int)pvVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar13")) (+ "+") (identifier "local_88")) () ")"))) (, ",") (number_literal "0") (, ",") (binary_expression "local_98 - local_88" (identifier "local_98") (- "-") (identifier "local_88")) () ")"))) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000a36ac:\n    uVar14 = *(ushort *)(pcVar5 + 0x3e);" (statement_identifier "LAB_000a36ac") (: ":") (expression_statement "uVar14 = *(ushort *)(pcVar5 + 0x3e);" (assignment_expression "uVar14 = *(ushort *)(pcVar5 + 0x3e)" (identifier "uVar14") (= "=") (pointer_expression "*(ushort *)(pcVar5 + 0x3e)" (* "*") (cast_expression "(ushort *)(pcVar5 + 0x3e)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x3e)" (( "(") (binary_expression "pcVar5 + 0x3e" (identifier "pcVar5") (+ "+") (number_literal "0x3e")) () ")"))))) (; ";"))) (if_statement "if (local_4c != 0) goto LAB_000a36c0;" (if "if") (parenthesized_expression "(local_4c != 0)" (( "(") (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a36c0;" (goto "goto") (statement_identifier "LAB_000a36c0") (; ";"))) (labeled_statement "LAB_000a3433:\n    iVar7 = FUN_00098750();" (statement_identifier "LAB_000a3433") (: ":") (expression_statement "iVar7 = FUN_00098750();" (assignment_expression "iVar7 = FUN_00098750()" (identifier "iVar7") (= "=") (call_expression "FUN_00098750()" (identifier "FUN_00098750") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "local_50 = iVar7;" (assignment_expression "local_50 = iVar7" (identifier "local_50") (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar7 != 0) goto LAB_000a33b0;" (if "if") (parenthesized_expression "(iVar7 != 0)" (( "(") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";"))) (expression_statement "uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);" (assignment_expression "uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" (identifier "uVar14") (= "=") (pointer_expression "*(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" (* "*") (cast_expression "(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2)" (( "(") (binary_expression "*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2" (pointer_expression "*(int *)(iVar1 + 0x40)" (* "*") (cast_expression "(int *)(iVar1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x40)" (( "(") (binary_expression "iVar1 + 0x40" (identifier "iVar1") (+ "+") (number_literal "0x40")) () ")")))) (+ "+") (binary_expression "(uint)uVar14 * 2" (cast_expression "(uint)uVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar14")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "__dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38));" (assignment_expression "__dest = (undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" (identifier "__dest") (= "=") (cast_expression "(undefined4 *)\n             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38))" (( "(") (binary_expression "(uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +\n             *(int *)(iVar1 + 0x38)" (call_expression "(uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18))" (( "(") (binary_expression "(uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)" (parenthesized_expression "(uVar14 << 8 | uVar14 >> 8)" (( "(") (binary_expression "uVar14 << 8 | uVar14 >> 8" (binary_expression "uVar14 << 8" (identifier "uVar14") (<< "<<") (number_literal "8")) (| "|") (binary_expression "uVar14 >> 8" (identifier "uVar14") (>> ">>") (number_literal "8"))) () ")")) (& "&") (pointer_expression "*(ushort *)(iVar1 + 0x18)" (* "*") (cast_expression "(ushort *)(iVar1 + 0x18)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x18)" (( "(") (binary_expression "iVar1 + 0x18" (identifier "iVar1") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) (+ "+") (pointer_expression "*(int *)(iVar1 + 0x38)" (* "*") (cast_expression "(int *)(iVar1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x38)" (( "(") (binary_expression "iVar1 + 0x38" (identifier "iVar1") (+ "+") (number_literal "0x38")) () ")"))))) () ")")))) (; ";")) (if_statement "if (*(char *)(iVar1 + 8) == '\0') {\n      *__src = *__dest;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 8) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 8) == '\0'" (pointer_expression "*(char *)(iVar1 + 8)" (* "*") (cast_expression "(char *)(iVar1 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *__src = *__dest;\n    }" ({ "{") (expression_statement "*__src = *__dest;" (assignment_expression "*__src = *__dest" (pointer_expression "*__src" (* "*") (identifier "__src")) (= "=") (pointer_expression "*__dest" (* "*") (identifier "__dest"))) (; ";")) (} "}"))) (expression_statement "local_50 = FUN_0009e3e0();" (assignment_expression "local_50 = FUN_0009e3e0()" (identifier "local_50") (= "=") (call_expression "FUN_0009e3e0()" (identifier "FUN_0009e3e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       ) {\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }" (if "if") (parenthesized_expression "(((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))\n       )" (( "(") (binary_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&\n       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))" (parenthesized_expression "((local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))))" (( "(") (binary_expression "(local_2e == local_60) &&\n        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))" (parenthesized_expression "(local_2e == local_60)" (( "(") (binary_expression "local_2e == local_60" (identifier "local_2e") (== "==") (identifier "local_60")) () ")")) (&& "&&") (parenthesized_expression "((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))" (( "(") (binary_expression "(uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))" (cast_expression "(uint)local_30" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_30")) (== "==") (call_expression "CONCAT13(uStack_31,CONCAT12(local_32,uStack_34))" (identifier "CONCAT13") (argument_list "(uStack_31,CONCAT12(local_32,uStack_34))" (( "(") (identifier "uStack_31") (, ",") (call_expression "CONCAT12(local_32,uStack_34)" (identifier "CONCAT12") (argument_list "(local_32,uStack_34)" (( "(") (identifier "local_32") (, ",") (identifier "uStack_34") () ")"))) () ")")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))" (( "(") (parenthesized_expression "(*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10)))" (( "(") (binary_expression "*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))" (binary_expression "*(char *)(iVar2 + 0x11) == '\0'" (pointer_expression "*(char *)(iVar2 + 0x11)" (* "*") (cast_expression "(char *)(iVar2 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x11)" (( "(") (binary_expression "iVar2 + 0x11" (identifier "iVar2") (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))" (( "(") (binary_expression "(int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10)" (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60")) (< "<") (binary_expression "(int)(uint)*(ushort *)(iVar1 + 0x10)" (cast_expression "(int)(uint)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(ushort *)(iVar1 + 0x10)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }\n      goto LAB_000a33b0;\n    }" ({ "{") (if_statement "if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }\n      else {\n        memcpy(__dest,__src,local_60);\n      }" (if "if") (parenthesized_expression "(*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest)" (( "(") (binary_expression "*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest" (pointer_expression "*(uint *)(iVar1 + 0x3c)" (* "*") (cast_expression "(uint *)(iVar1 + 0x3c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x3c)" (( "(") (binary_expression "iVar1 + 0x3c" (identifier "iVar1") (+ "+") (number_literal "0x3c")) () ")")))) (< "<") (binary_expression "local_60 + (int)__dest" (identifier "local_60") (+ "+") (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")))) () ")")) (compound_statement "{\n        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);\n        iVar7 = 0xb;\n      }" ({ "{") (expression_statement "FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);" (call_expression "FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5)" (identifier "FUN_0006e260") (argument_list "(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5)" (( "(") (number_literal "0xb") (, ",") (binary_expression "unaff_EDI + 0x7c78b" (identifier "unaff_EDI") (+ "+") (number_literal "0x7c78b")) (, ",") (binary_expression "unaff_EDI + 0x7c9c6" (identifier "unaff_EDI") (+ "+") (number_literal "0x7c9c6")) (, ",") (number_literal "0x11825") (, ",") (binary_expression "unaff_EDI + 0x796f5" (identifier "unaff_EDI") (+ "+") (number_literal "0x796f5")) () ")"))) (; ";")) (expression_statement "iVar7 = 0xb;" (assignment_expression "iVar7 = 0xb" (identifier "iVar7") (= "=") (number_literal "0xb")) (; ";")) (} "}")) (else_clause "else {\n        memcpy(__dest,__src,local_60);\n      }" (else "else") (compound_statement "{\n        memcpy(__dest,__src,local_60);\n      }" ({ "{") (expression_statement "memcpy(__dest,__src,local_60);" (call_expression "memcpy(__dest,__src,local_60)" (identifier "memcpy") (argument_list "(__dest,__src,local_60)" (( "(") (identifier "__dest") (, ",") (identifier "__src") (, ",") (identifier "local_60") () ")"))) (; ";")) (} "}")))) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";")) (} "}"))) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (; ";")) (if_statement "if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))\n    goto LAB_000a33b0;" (if "if") (parenthesized_expression "((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))" (( "(") (binary_expression "(local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0)" (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0)" (( "(") (comma_expression "FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0" (call_expression "FUN_0006ff70(&local_50)" (identifier "FUN_0006ff70") (argument_list "(&local_50)" (( "(") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")"))) (, ",") (comma_expression "iVar7 = local_50, local_50 != 0" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (, ",") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_000a33b0;" (goto "goto") (statement_identifier "LAB_000a33b0") (; ";"))) (} "}")))) (expression_statement "FUN_0009e630(local_60,0,0,&local_50);" (call_expression "FUN_0009e630(local_60,0,0,&local_50)" (identifier "FUN_0009e630") (argument_list "(local_60,0,0,&local_50)" (( "(") (identifier "local_60") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_50" (& "&") (identifier "local_50")) () ")"))) (; ";")) (expression_statement "pcVar5[0x2e] = '\0';" (assignment_expression "pcVar5[0x2e] = '\0'" (subscript_expression "pcVar5[0x2e]" (identifier "pcVar5") ([ "[") (number_literal "0x2e") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "pcVar5[0x2f] = '\0';" (assignment_expression "pcVar5[0x2f] = '\0'" (subscript_expression "pcVar5[0x2f]" (identifier "pcVar5") ([ "[") (number_literal "0x2f") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (*(char *)(iVar1 + 0xc) != '\0') {\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar1 + 0xc) != '\0')" (( "(") (binary_expression "*(char *)(iVar1 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar1 + 0xc)" (* "*") (cast_expression "(char *)(iVar1 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0xc)" (( "(") (binary_expression "iVar1 + 0xc" (identifier "iVar1") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pcVar5[1] = pcVar5[1] & 0xfd;\n    local_50 = FUN_000a0160();\n    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;\n    *pcVar5 = '\x01';\n    iVar7 = local_50;\n    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }\n  }" ({ "{") (expression_statement "pcVar5[1] = pcVar5[1] & 0xfd;" (assignment_expression "pcVar5[1] = pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "pcVar5[1] & 0xfd" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xfd"))) (; ";")) (expression_statement "local_50 = FUN_000a0160();" (assignment_expression "local_50 = FUN_000a0160()" (identifier "local_50") (= "=") (call_expression "FUN_000a0160()" (identifier "FUN_000a0160") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;" (assignment_expression "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0" (pointer_expression "*(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc)" (* "*") (cast_expression "(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar5 + 0x6c) + 0xc)" (( "(") (binary_expression "*(int *)(pcVar5 + 0x6c) + 0xc" (pointer_expression "*(int *)(pcVar5 + 0x6c)" (* "*") (cast_expression "(int *)(pcVar5 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x6c)" (( "(") (binary_expression "pcVar5 + 0x6c" (identifier "pcVar5") (+ "+") (number_literal "0x6c")) () ")")))) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*pcVar5 = '\x01';" (assignment_expression "*pcVar5 = '\x01'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }" (if "if") (parenthesized_expression "(((extraout_ECX & 2) != 0) && (local_50 == 0))" (( "(") (binary_expression "((extraout_ECX & 2) != 0) && (local_50 == 0)" (parenthesized_expression "((extraout_ECX & 2) != 0)" (( "(") (binary_expression "(extraout_ECX & 2) != 0" (parenthesized_expression "(extraout_ECX & 2)" (( "(") (binary_expression "extraout_ECX & 2" (identifier "extraout_ECX") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_50 == 0)" (( "(") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      FUN_00049010();\n      iVar7 = local_50;\n      if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }\n      *pcVar5 = '\x03';\n      uVar4 = puVar11[1];\n      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];\n      *(undefined4 *)(pcVar5 + 0x30) = uVar4;\n    }" ({ "{") (expression_statement "FUN_00049010();" (call_expression "FUN_00049010()" (identifier "FUN_00049010") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (; ";")) (if_statement "if (*(int *)(pcVar5 + 0x68) != 0) {\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(pcVar5 + 0x68) != 0)" (( "(") (binary_expression "*(int *)(pcVar5 + 0x68) != 0" (pointer_expression "*(int *)(pcVar5 + 0x68)" (* "*") (cast_expression "(int *)(pcVar5 + 0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x68)" (( "(") (binary_expression "pcVar5 + 0x68" (identifier "pcVar5") (+ "+") (number_literal "0x68")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pvVar13 = (void *)FUN_000421f0();\n        *(void **)(pcVar5 + 0x10) = pvVar13;\n        iVar7 = 7;\n        if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }\n      }" ({ "{") (expression_statement "pvVar13 = (void *)FUN_000421f0();" (assignment_expression "pvVar13 = (void *)FUN_000421f0()" (identifier "pvVar13") (= "=") (cast_expression "(void *)FUN_000421f0()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000421f0()" (identifier "FUN_000421f0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*(void **)(pcVar5 + 0x10) = pvVar13;" (assignment_expression "*(void **)(pcVar5 + 0x10) = pvVar13" (pointer_expression "*(void **)(pcVar5 + 0x10)" (* "*") (cast_expression "(void **)(pcVar5 + 0x10)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar5 + 0x10)" (( "(") (binary_expression "pcVar5 + 0x10" (identifier "pcVar5") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "pvVar13")) (; ";")) (expression_statement "iVar7 = 7;" (assignment_expression "iVar7 = 7" (identifier "iVar7") (= "=") (number_literal "7")) (; ";")) (if_statement "if (pvVar13 != (void *)0x0) {\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }" (if "if") (parenthesized_expression "(pvVar13 != (void *)0x0)" (( "(") (binary_expression "pvVar13 != (void *)0x0" (identifier "pvVar13") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);\n          iVar7 = local_50;\n        }" ({ "{") (expression_statement "memcpy(pvVar13,(void *)*puVar11,puVar11[1]);" (call_expression "memcpy(pvVar13,(void *)*puVar11,puVar11[1])" (identifier "memcpy") (argument_list "(pvVar13,(void *)*puVar11,puVar11[1])" (( "(") (identifier "pvVar13") (, ",") (cast_expression "(void *)*puVar11" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (, ",") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "iVar7 = local_50;" (assignment_expression "iVar7 = local_50" (identifier "iVar7") (= "=") (identifier "local_50")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*pcVar5 = '\x03';" (assignment_expression "*pcVar5 = '\x03'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (= "=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) (; ";")) (expression_statement "uVar4 = puVar11[1];" (assignment_expression "uVar4 = puVar11[1]" (identifier "uVar4") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(pcVar5 + 0x34) = puVar11[2];" (assignment_expression "*(undefined4 *)(pcVar5 + 0x34) = puVar11[2]" (pointer_expression "*(undefined4 *)(pcVar5 + 0x34)" (* "*") (cast_expression "(undefined4 *)(pcVar5 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x34)" (( "(") (binary_expression "pcVar5 + 0x34" (identifier "pcVar5") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(pcVar5 + 0x30) = uVar4;" (assignment_expression "*(undefined4 *)(pcVar5 + 0x30) = uVar4" (pointer_expression "*(undefined4 *)(pcVar5 + 0x30)" (* "*") (cast_expression "(undefined4 *)(pcVar5 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar5 + 0x30)" (( "(") (binary_expression "pcVar5 + 0x30" (identifier "pcVar5") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000a33b0:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\n  }" (statement_identifier "LAB_000a33b0") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar7;\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 iVar7;\n  }" ({ "{") (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}")))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" (identifier "FUN_00116110") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

int function_1(type_1 *pCur,type_2 *pX,int flags,int seekResult)

{
  int var_47;
  type_3 *pBVar2;
  type_4 *pBVar3;
  type_5 *pPage;
  type_6 *var_14;
  type_4 *pBt;
  type_7 uVar4;
  type_8 var_31;
  type_1 *pExcept;
  type_9 *var_39;
  int var_19;
  void *var_46;
  type_10 var_10;
  type_8 *var_16;
  type_10 var_18;
  type_10 var_24;
  type_7 *var_6;
  type_10 var_15;
  type_8 *var_22;
  type_6 *var_32;
  int var_23;
  type_8 *pPVar13;
  type_8 *__n;
  int var_2;
  type_11 uVar14;
  type_8 *pPgno;
  int *in_stack_ffffff60;
  type_1 *in_stack_ffffff64;
  type_2 *in_stack_ffffff68;
  type_8 *local_88;
  void *local_84;
  type_12 *var_28;
  type_10 *local_78;
  size_t var_36;
  int var_4;
  int var_7;
  int var_27;
  type_8 var_25;
  type_13 r;
  type_14 local_30;
  type_14 var_35;
  
  uVar14 = var_1();
  var_6 = (type_7 *)((type_15)uVar14 >> 0x20);
  pExcept = (type_1 *)uVar14;
  var_47 = *(int *)(var_2 + 0x14);
  var_7 = (int)pCur;
  if (pExcept->eState == '\x04') {
    var_19 = pExcept->skipNext;
    goto LAB_000a33b0;
  }
  pBVar2 = pExcept->pBtree;
  pBVar3 = pBVar2->pBt;
  if ((pExcept->curFlags & 0x20) != 0) {
    in_stack_ffffff60 = (int *)0xa3643;
    var_4 = var_3((type_4 *)pBVar3->pCursor,pExcept->pgnoRoot,pExcept);
    var_19 = var_4;
    if (var_4 != 0) goto LAB_000a33b0;
  }
  if (pExcept->pKeyInfo == (type_12 *)0x0) {
    if (pBVar2->hasIncrblobCur != '\0') {
      var_5
                ((type_3 *)pBVar2->pBt,(type_8)&pBVar2->hasIncrblobCur,*(type_16 *)(var_6 + 1),
                 pExcept->pgnoRoot,(type_3 *)0x0);
    }
    if (((pExcept->curFlags & 2) == 0) ||
       (var_6[2] != *(int *)((int)&(pExcept->info).nKey + 4) ||
        var_6[1] != (int)(pExcept->info).nKey)) {
      if (var_7 == 0) {
        in_stack_ffffff60 = &var_7;
        var_4 = var_8
                             ((type_1 *)var_6[1],(type_13 *)var_6[2],
                              var_9(in_stack_ffffff60,(type_10)(var_10 != 0)),
                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);
        var_19 = var_4;
        if (var_4 != 0) goto LAB_000a33b0;
      }
    }
    else if (((pExcept->info).nSize != 0) && ((pExcept->info).nPayload == var_6[7] + var_6[6]))
    {
      var_19 = var_11(in_stack_ffffff64,in_stack_ffffff68);
      goto LAB_000a33b0;
    }
  }
  else if (var_7 == 0) {
    if ((var_10 & 2) == 0) {
      if (*(type_17 *)(var_6 + 5) == 0) {
        in_stack_ffffff60 = &var_7;
        var_4 = var_12(pExcept,(void *)*var_6,*(type_16 *)(var_6 + 1),
                               (type_10)(var_10 != 0),in_stack_ffffff60);
      }
      else {
        r.aMem = (type_18 *)var_6[4];
        in_stack_ffffff60 = &var_7;
        r.default_rc = '\0';
        r.errCode = '\0';
        r.r1 = '\0';
        r.r2 = '\0';
        r.eqSeen = '\0';
        r.pKeyInfo = pExcept->pKeyInfo;
        r.nField = *(type_17 *)(var_6 + 5);
        var_4 = var_8
                             ((type_1 *)0x0,(type_13 *)0x0,
                              var_9(in_stack_ffffff60,(type_10)(var_10 != 0)),
                              (int)in_stack_ffffff64,(int *)in_stack_ffffff68);
      }
      var_19 = var_4;
      if (var_4 != 0) goto LAB_000a33b0;
      if (var_7 != 0) goto LAB_000a3150;
    }
    in_stack_ffffff60 = (int *)0xa375b;
    var_13(pExcept);
    if (var_6[2] == *(int *)((int)&(pExcept->info).nKey + 4) &&
        (int)(pExcept->info).nKey == var_6[1]) {
      uVar4 = *var_6;
      r._12_2_ = (type_19)uVar4;
      r.eqSeen = (type_6)((type_10)uVar4 >> 0x10);
      r._15_1_ = (undefined1)((type_10)uVar4 >> 0x18);
      var_19 = var_11(in_stack_ffffff64,in_stack_ffffff68);
      goto LAB_000a33b0;
    }
  }
LAB_000a3150:
  pPage = pExcept->pPage;
  var_15 = (type_10)pPage->childPtrSize;
  var_14 = pBVar3->pTmpSpace;
  var_39 = var_14 + var_15;
  if (pPage->intKey == '\0') {
    var_16 = (type_8 *)var_6[1];
    local_84 = (void *)*var_6;
    if (var_16 < (type_8 *)0x80) {
      var_18 = 1;
      *var_39 = (type_9)var_16;
    }
    else if ((int)var_16 < 0 || (type_10)-((int)var_16 >> 0x1f) < (type_10)((type_8 *)0x7f < var_16)) {
      in_stack_ffffff60 = (int *)0xa361e;
      var_18 = var_17(var_39,var_9(var_16,in_stack_ffffff64));
      var_18 = var_18 & 0xff;
    }
    else {
      *var_39 = (type_9)var_16;
      var_18 = 1;
    }
    var_19 = var_18 + var_15;
    local_88 = var_16;
  }
  else {
    local_88 = (type_8 *)var_6[6];
    var_16 = (type_8 *)((int)local_88 + var_6[7]);
    local_84 = (void *)var_6[3];
    if (var_16 < (type_8 *)0x80) {
      *var_39 = (type_9)var_16;
      var_18 = 1;
    }
    else {
      in_stack_ffffff60 = (int *)0xa38a6;
      var_18 = var_17(var_39,var_9(var_16,in_stack_ffffff64));
      var_18 = var_18 & 0xff;
    }
    if (var_6[2] == 0 && (type_10)(0x7f < (type_10)var_6[1]) <= (type_10)-var_6[2]) {
      var_14[var_15 + var_18] = (type_9)var_6[1];
      var_19 = 1;
    }
    else {
      in_stack_ffffff60 = (int *)0xa31ca;
      var_19 = var_17(var_14 + var_15 + var_18,var_9(var_16,in_stack_ffffff64));
    }
    var_19 = var_15 + var_18 + var_19;
  }
  var_32 = var_14 + var_19;
  if ((int)(type_10)pPage->maxLocal < (int)var_16) {
    var_25 = 0;
    var_28 = (type_12 *)0x0;
    pBt = pPage->pBt;
    pPVar13 = (type_8 *)(type_10)pPage->minLocal;
    var_22 = (type_8 *)((type_10)((int)var_16 - (int)pPVar13) % (pBt->usableSize - 4) + (int)pPVar13);
    if ((int)(type_10)pPage->maxLocal < (int)var_22) {
      var_22 = pPVar13;
    }
    var_36 = var_19 + (int)var_22 + 4;
    local_78 = (type_10 *)(var_14 + var_19 + (int)var_22);
    while( true ) {
      pPVar13 = var_16;
      if ((int)var_22 < (int)var_16) {
        pPVar13 = var_22;
      }
      __n = pPVar13;
      if (((int)local_88 < (int)pPVar13) && (__n = local_88, (int)local_88 < 1)) {
        pPgno = pPVar13;
        var_20(var_32,0,(size_t)pPVar13);
        var_16 = (type_8 *)((int)var_16 - (int)pPVar13);
        __n = pPVar13;
        var_31 = var_25;
      }
      else {
        pPgno = __n;
        var_21(var_32,local_84,(size_t)__n);
        var_16 = (type_8 *)((int)var_16 - (int)__n);
        var_31 = var_25;
      }
      var_25 = var_31;
      if ((int)var_16 < 1) break;
      local_84 = (void *)((int)local_84 + (int)__n);
      local_88 = (type_8 *)((int)local_88 - (int)__n);
      var_22 = (type_8 *)((int)var_22 - (int)__n);
      if (var_22 == (type_8 *)0x0) {
        r.pKeyInfo = (type_12 *)0x0;
        if (pBt->autoVacuum != '\0') {
          var_18 = *(type_10 *)(var_23 + 0xd935d) / pBt->pageSize;
          var_15 = var_31;
          do {
            var_24 = var_15;
            var_25 = var_24 + 1;
            var_15 = 0;
            if (1 < var_25) {
              var_15 = pBt->usableSize / 5 + 1;
              var_19 = ((var_24 - 1) / var_15) * var_15;
              var_15 = var_19 + 2;
              if (var_15 == var_18 + 1) {
                var_15 = var_19 + 3;
              }
            }
          } while ((var_25 == var_15) || (var_15 = var_25, var_24 == var_18));
        }
        var_27 = var_26((type_4 *)var_25,(type_5 **)0x0,pPgno,(type_8)in_stack_ffffff60,
                               (type_6)in_stack_ffffff64);
        if ((pBt->autoVacuum == '\0') || (var_27 != 0)) {
LAB_000a32d2:
          var_22 = var_16;
          if (var_27 != 0) {
LAB_000a3710:
            var_19 = var_27;
            if (var_28 == (type_12 *)0x0) goto LAB_000a33b0;
            var_29((type_20 *)var_28[3].nRef);
            var_4 = var_27;
            var_19 = var_27;
            if (var_27 == 0) goto LAB_000a36ac;
            goto LAB_000a33b0;
          }
        }
        else {
          var_30(pBt,var_25,(var_31 != 0) + '\x03',var_31,&var_27);
          if (var_27 != 0) {
            var_22 = var_16;
            if (r.pKeyInfo != (type_12 *)0x0) {
              in_stack_ffffff60 = (int *)0xa35d1;
              var_29((type_20 *)r.pKeyInfo[3].nRef);
              goto LAB_000a32d2;
            }
            goto LAB_000a3710;
          }
        }
        *local_78 = var_25 >> 0x18 | (var_25 & 0xff0000) >> 8 | (var_25 & 0xff00) << 8 |
                    var_25 << 0x18;
        if (var_28 != (type_12 *)0x0) {
          in_stack_ffffff60 = (int *)0xa32f6;
          var_29((type_20 *)var_28[3].nRef);
        }
        var_28 = r.pKeyInfo;
        local_78 = *(type_10 **)&r.pKeyInfo[2].nAllField;
        *local_78 = 0;
        var_32 = (type_6 *)(*(int *)&r.pKeyInfo[2].nAllField + 4);
        var_22 = (type_8 *)(pBt->usableSize - 4);
      }
      else {
        var_32 = var_32 + (int)__n;
      }
    }
    if (var_28 == (type_12 *)0x0) {
      var_4 = 0;
      var_22 = var_16;
      goto LAB_000a36ac;
    }
    var_29((type_20 *)var_28[3].nRef);
    var_4 = 0;
    var_15 = (type_10)pExcept->ix;
    if (var_7 == 0) goto LAB_000a3433;
LAB_000a36c0:
    if ((var_7 < 0) && (pPage->nCell != 0)) {
      pExcept->ix = (type_17)(var_15 + 1);
      var_15 = var_15 + 1 & 0xffff;
      pExcept->curFlags = pExcept->curFlags & 0xfd;
    }
  }
  else {
    var_36 = 4;
    if (3 < var_19 + (int)var_16) {
      var_36 = var_19 + (int)var_16;
    }
    var_22 = var_16;
    var_21(var_32,local_84,(size_t)local_88);
    var_20(var_32 + (int)local_88,0,(int)var_16 - (int)local_88);
    var_4 = 0;
LAB_000a36ac:
    var_15 = (type_10)pExcept->ix;
    var_16 = var_22;
    if (var_7 != 0) goto LAB_000a36c0;
LAB_000a3433:
    var_19 = var_33(pPage->pDbPage);
    var_4 = var_19;
    if (var_19 != 0) goto LAB_000a33b0;
    var_39 = pPage->aData +
             ((*(type_14 *)(pPage->aCellIdx + var_15 * 2) << 8 |
              *(type_14 *)(pPage->aCellIdx + var_15 * 2) >> 8) & pPage->maskPage);
    if (pPage->leaf == '\0') {
      *(type_7 *)var_14 = *(type_7 *)var_39;
    }
    var_4 = var_34(pPage,var_39,(type_21 *)&r);
    if (((var_35 == var_36) &&
        ((type_10)local_30 == var_37(r._15_1_,var_38(r.eqSeen,r._12_2_)))) &&
       ((pBVar3->autoVacuum == '\0' || ((int)var_36 < (int)(type_10)pPage->minLocal)))) {
      if (pPage->aDataEnd < var_39 + var_36) {
        var_40(0xb,(char *)(var_23 + 0x7c78b),var_23 + 0x7c9c6,0x11825,
                    var_23 + 0x796f5);
        var_19 = 0xb;
      }
      else {
        var_21(var_39,var_14,var_36);
      }
      goto LAB_000a33b0;
    }
    var_19 = var_4;
    if ((var_4 != 0) ||
       (var_41(pPage,var_15,(type_10)var_35,&var_4), var_19 = var_4, var_4 != 0))
    goto LAB_000a33b0;
  }
  var_42(pPage,var_15,var_14,var_36,(type_6 *)0x0,0,&var_4);
  (pExcept->info).nSize = 0;
  var_19 = var_4;
  if (pPage->nOverflow != '\0') {
    pExcept->curFlags = pExcept->curFlags & 0xfd;
    var_4 = var_43(pExcept);
    pExcept->pPage->nOverflow = '\0';
    pExcept->eState = '\x01';
    var_19 = var_4;
    if (((var_10 & 2) != 0) && (var_4 == 0)) {
      var_44(pExcept);
      var_19 = var_4;
      if (pExcept->pKeyInfo != (type_12 *)0x0) {
        var_46 = var_45(var_9(var_16,in_stack_ffffff64));
        pExcept->pKey = var_46;
        var_19 = 7;
        if (var_46 != (void *)0x0) {
          var_21(var_46,(void *)*var_6,var_6[1]);
          var_19 = var_4;
        }
      }
      pExcept->eState = '\x03';
      uVar4 = var_6[1];
      *(type_7 *)((int)&pExcept->nKey + 4) = var_6[2];
      *(type_7 *)&pExcept->nKey = uVar4;
    }
  }
LAB_000a33b0:
  if (var_47 == *(int *)(var_2 + 0x14)) {
    return var_19;
  }
                    /* WARNING: Subroutine does not return */
  var_48();
}


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

int MASKED(int param_1)

{
  int iVar1;
  int iVar2;
  undefined4 *__src;
  int iVar3;
  undefined4 uVar4;
  char *pcVar5;
  undefined1 *puVar6;
  int iVar7;
  uint uVar8;
  uint extraout_ECX;
  uint uVar9;
  uint uVar10;
  undefined4 *puVar11;
  uint uVar12;
  undefined4 *__dest;
  void *pvVar13;
  ushort uVar14;
  int unaff_EDI;
  size_t __n;
  int in_GS_OFFSET;
  undefined8 uVar15;
  uint local_98;
  size_t local_88;
  void *local_84;
  int local_80;
  uint *local_78;
  size_t local_60;
  int local_50;
  int local_4c;
  int local_48;
  uint local_44;
  int local_40;
  undefined4 local_3c;
  short local_38;
  undefined2 local_36;
  undefined2 uStack_34;
  undefined1 local_32;
  undefined1 uStack_31;
  ushort local_30;
  ushort local_2e;
  int local_28;
  undefined4 local_24;
  int local_20;
  
  uVar15 = FUN_00036ac5();
  puVar11 = (undefined4 *)((ulonglong)uVar15 >> 0x20);
  pcVar5 = (char *)uVar15;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_4c = param_1;
  if (*pcVar5 == '\x04') {
    iVar7 = *(int *)(pcVar5 + 4);
    goto LAB_000a33b0;
  }
  iVar1 = *(int *)(pcVar5 + 8);
  iVar2 = *(int *)(iVar1 + 4);
  if (((pcVar5[1] & 0x20U) != 0) && (local_50 = FUN_000a11a0(), iVar7 = local_50, local_50 != 0))
  goto LAB_000a33b0;
  if (*(int *)(pcVar5 + 0x68) == 0) {
    if (*(char *)(iVar1 + 0xb) != '\0') {
      FUN_00048fb0(puVar11[1],puVar11[2],0);
    }
    if (((pcVar5[1] & 2U) == 0) ||
       (puVar11[2] != *(int *)(pcVar5 + 0x20) || puVar11[1] != *(int *)(pcVar5 + 0x1c))) {
      if ((local_4c == 0) &&
         (local_50 = FUN_000a2060(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c),
         iVar7 = local_50, local_50 != 0)) goto LAB_000a33b0;
    }
    else if ((*(short *)(pcVar5 + 0x2e) != 0) &&
            (*(int *)(pcVar5 + 0x28) == puVar11[7] + puVar11[6])) {
      iVar7 = FUN_0009de20();
      goto LAB_000a33b0;
    }
  }
  else if (local_4c == 0) {
    if ((extraout_ECX & 2) == 0) {
      if (*(short *)(puVar11 + 5) == 0) {
        local_50 = FUN_000a2630(puVar11[1],puVar11[2],extraout_ECX != 0,&local_4c);
      }
      else {
        local_3c = puVar11[4];
        local_36 = 0;
        uStack_34 = 0;
        local_32 = 0;
        local_40 = *(int *)(pcVar5 + 0x68);
        local_38 = *(short *)(puVar11 + 5);
        local_50 = FUN_000a2060(0,0,extraout_ECX != 0,&local_4c);
      }
      iVar7 = local_50;
      if (local_50 != 0) goto LAB_000a33b0;
      if (local_4c != 0) goto LAB_000a3150;
    }
    FUN_00040b40();
    if (puVar11[2] == *(int *)(pcVar5 + 0x20) && *(int *)(pcVar5 + 0x1c) == puVar11[1]) {
      local_24 = 0;
      uVar4 = *puVar11;
      uStack_34 = (undefined2)uVar4;
      local_32 = (undefined1)((uint)uVar4 >> 0x10);
      uStack_31 = (undefined1)((uint)uVar4 >> 0x18);
      local_28 = puVar11[1];
      iVar7 = FUN_0009de20();
      goto LAB_000a33b0;
    }
  }
LAB_000a3150:
  iVar1 = *(int *)(pcVar5 + 0x6c);
  uVar12 = (uint)*(byte *)(iVar1 + 10);
  __src = *(undefined4 **)(iVar2 + 0x50);
  puVar6 = (undefined1 *)((int)__src + uVar12);
  if (*(char *)(iVar1 + 2) == '\0') {
    local_98 = puVar11[1];
    local_84 = (void *)*puVar11;
    if (local_98 < 0x80) {
      uVar9 = 1;
      *puVar6 = (char)local_98;
    }
    else if ((int)local_98 < 0 || (uint)-((int)local_98 >> 0x1f) < (uint)(0x7f < local_98)) {
      uVar9 = FUN_00046180();
      uVar9 = uVar9 & 0xff;
    }
    else {
      *puVar6 = (char)local_98;
      uVar9 = 1;
    }
    iVar7 = uVar9 + uVar12;
    local_88 = local_98;
  }
  else {
    local_88 = puVar11[6];
    local_98 = local_88 + puVar11[7];
    local_84 = (void *)puVar11[3];
    if (local_98 < 0x80) {
      *puVar6 = (char)local_98;
      uVar9 = 1;
    }
    else {
      uVar9 = FUN_00046180();
      uVar9 = uVar9 & 0xff;
    }
    if (puVar11[2] == 0 && (uint)(0x7f < (uint)puVar11[1]) <= (uint)-puVar11[2]) {
      *(char *)((int)__src + uVar12 + uVar9) = (char)puVar11[1];
      iVar7 = 1;
    }
    else {
      iVar7 = FUN_00046180();
    }
    iVar7 = uVar12 + uVar9 + iVar7;
  }
  pvVar13 = (void *)((int)__src + iVar7);
  if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)local_98) {
    local_44 = 0;
    local_80 = 0;
    iVar3 = *(int *)(iVar1 + 0x34);
    uVar9 = (uint)*(ushort *)(iVar1 + 0x10);
    uVar12 = (local_98 - uVar9) % (*(int *)(iVar3 + 0x24) - 4U) + uVar9;
    if ((int)(uint)*(ushort *)(iVar1 + 0xe) < (int)uVar12) {
      uVar12 = uVar9;
    }
    local_60 = iVar7 + uVar12 + 4;
    local_78 = (uint *)(iVar7 + uVar12 + (int)__src);
    while( true ) {
      uVar9 = local_98;
      if ((int)uVar12 < (int)local_98) {
        uVar9 = uVar12;
      }
      __n = uVar9;
      if (((int)local_88 < (int)uVar9) && (__n = local_88, (int)local_88 < 1)) {
        memset(pvVar13,0,uVar9);
        __n = uVar9;
        uVar9 = local_44;
      }
      else {
        memcpy(pvVar13,local_84,__n);
        uVar9 = local_44;
      }
      local_98 = local_98 - __n;
      local_44 = uVar9;
      if ((int)local_98 < 1) break;
      local_84 = (void *)((int)local_84 + __n);
      local_88 = local_88 - __n;
      uVar12 = uVar12 - __n;
      if (uVar12 == 0) {
        local_40 = 0;
        if (*(char *)(iVar3 + 0x11) != '\0') {
          uVar8 = *(uint *)(&DAT_000d935d + unaff_EDI) / *(uint *)(iVar3 + 0x20);
          uVar12 = uVar9;
          do {
            uVar10 = uVar12;
            local_44 = uVar10 + 1;
            uVar12 = 0;
            if (1 < local_44) {
              uVar12 = *(uint *)(iVar3 + 0x24) / 5 + 1;
              iVar7 = ((uVar10 - 1) / uVar12) * uVar12;
              uVar12 = iVar7 + 2;
              if (uVar12 == uVar8 + 1) {
                uVar12 = iVar7 + 3;
              }
            }
          } while ((local_44 == uVar12) || (uVar12 = local_44, uVar10 == uVar8));
        }
        local_48 = FUN_0009c6f0(local_44,0);
        if ((*(char *)(iVar3 + 0x11) == '\0') || (local_48 != 0)) {
LAB_000a32d2:
          if (local_48 != 0) {
LAB_000a3710:
            iVar7 = local_48;
            if (local_80 == 0) goto LAB_000a33b0;
            FUN_000386c0();
            local_50 = local_48;
            iVar7 = local_48;
            if (local_48 == 0) goto LAB_000a36ac;
            goto LAB_000a33b0;
          }
        }
        else {
          FUN_0009d070(uVar9,&local_48);
          if (local_48 != 0) {
            if (local_40 != 0) {
              FUN_000386c0();
              goto LAB_000a32d2;
            }
            goto LAB_000a3710;
          }
        }
        *local_78 = local_44 >> 0x18 | (local_44 & 0xff0000) >> 8 | (local_44 & 0xff00) << 8 |
                    local_44 << 0x18;
        if (local_80 != 0) {
          FUN_000386c0();
        }
        local_80 = local_40;
        local_78 = *(uint **)(local_40 + 0x38);
        *local_78 = 0;
        pvVar13 = (void *)(*(int *)(local_40 + 0x38) + 4);
        uVar12 = *(int *)(iVar3 + 0x24) - 4;
      }
      else {
        pvVar13 = (void *)((int)pvVar13 + __n);
      }
    }
    if (local_80 == 0) {
      local_50 = 0;
      goto LAB_000a36ac;
    }
    FUN_000386c0();
    local_50 = 0;
    uVar14 = *(ushort *)(pcVar5 + 0x3e);
    if (local_4c == 0) goto LAB_000a3433;
LAB_000a36c0:
    if ((local_4c < 0) && (*(short *)(iVar1 + 0x16) != 0)) {
      *(ushort *)(pcVar5 + 0x3e) = uVar14 + 1;
      pcVar5[1] = pcVar5[1] & 0xfd;
    }
  }
  else {
    local_60 = 4;
    if (3 < (int)(iVar7 + local_98)) {
      local_60 = iVar7 + local_98;
    }
    memcpy(pvVar13,local_84,local_88);
    memset((void *)((int)pvVar13 + local_88),0,local_98 - local_88);
    local_50 = 0;
LAB_000a36ac:
    uVar14 = *(ushort *)(pcVar5 + 0x3e);
    if (local_4c != 0) goto LAB_000a36c0;
LAB_000a3433:
    iVar7 = FUN_00098750();
    local_50 = iVar7;
    if (iVar7 != 0) goto LAB_000a33b0;
    uVar14 = *(ushort *)(*(int *)(iVar1 + 0x40) + (uint)uVar14 * 2);
    __dest = (undefined4 *)
             ((uint)((uVar14 << 8 | uVar14 >> 8) & *(ushort *)(iVar1 + 0x18)) +
             *(int *)(iVar1 + 0x38));
    if (*(char *)(iVar1 + 8) == '\0') {
      *__src = *__dest;
    }
    local_50 = FUN_0009e3e0();
    if (((local_2e == local_60) &&
        ((uint)local_30 == CONCAT13(uStack_31,CONCAT12(local_32,uStack_34)))) &&
       ((*(char *)(iVar2 + 0x11) == '\0' || ((int)local_60 < (int)(uint)*(ushort *)(iVar1 + 0x10))))
       ) {
      if (*(uint *)(iVar1 + 0x3c) < local_60 + (int)__dest) {
        FUN_0006e260(0xb,unaff_EDI + 0x7c78b,unaff_EDI + 0x7c9c6,0x11825,unaff_EDI + 0x796f5);
        iVar7 = 0xb;
      }
      else {
        memcpy(__dest,__src,local_60);
      }
      goto LAB_000a33b0;
    }
    iVar7 = local_50;
    if ((local_50 != 0) || (FUN_0006ff70(&local_50), iVar7 = local_50, local_50 != 0))
    goto LAB_000a33b0;
  }
  FUN_0009e630(local_60,0,0,&local_50);
  pcVar5[0x2e] = '\0';
  pcVar5[0x2f] = '\0';
  iVar7 = local_50;
  if (*(char *)(iVar1 + 0xc) != '\0') {
    pcVar5[1] = pcVar5[1] & 0xfd;
    local_50 = FUN_000a0160();
    *(undefined1 *)(*(int *)(pcVar5 + 0x6c) + 0xc) = 0;
    *pcVar5 = '\x01';
    iVar7 = local_50;
    if (((extraout_ECX & 2) != 0) && (local_50 == 0)) {
      FUN_00049010();
      iVar7 = local_50;
      if (*(int *)(pcVar5 + 0x68) != 0) {
        pvVar13 = (void *)FUN_000421f0();
        *(void **)(pcVar5 + 0x10) = pvVar13;
        iVar7 = 7;
        if (pvVar13 != (void *)0x0) {
          memcpy(pvVar13,(void *)*puVar11,puVar11[1]);
          iVar7 = local_50;
        }
      }
      *pcVar5 = '\x03';
      uVar4 = puVar11[1];
      *(undefined4 *)(pcVar5 + 0x34) = puVar11[2];
      *(undefined4 *)(pcVar5 + 0x30) = uVar4;
    }
  }
LAB_000a33b0:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar7;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}

