
int freePage2(BtShared *pBt,MemPage *pMemPage,Pgno iPage)

{
  i16 *piVar1;
  int *piVar2;
  MemPage *pMVar3;
  DbPage *pDVar4;
  int iVar5;
  Bitvec *pBVar6;
  uint uVar7;
  u32 pgno;
  uint uVar8;
  long in_FS_OFFSET;
  int rc;
  MemPage *pTrunk;
  MemPage *pPage;
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  pTrunk = (MemPage *)0x0;
  if ((iPage < 2) || (pBt->nPage < iPage)) {
    iVar5 = sqlite3CorruptError(0x1144a);
    goto LAB_0014b10c;
  }
  pMVar3 = pBt->pPage1;
  if (pMemPage == (MemPage *)0x0) {
    pPage = btreePageLookup(pBt,iPage);
  }
  else {
    pDVar4 = pMemPage->pDbPage;
    piVar1 = &pDVar4->nRef;
    *piVar1 = *piVar1 + 1;
    piVar2 = &pDVar4->pCache->nRefSum;
    *piVar2 = *piVar2 + 1;
    pPage = pMemPage;
  }
  rc = sqlite3PagerWrite(pMVar3->pDbPage);
  iVar5 = rc;
  if (rc == 0) {
    uVar7 = *(uint *)(pMVar3->aData + 0x24);
    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
    sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);
    if ((pBt->btsFlags & 4) != 0) {
      if (pPage == (MemPage *)0x0) {
        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);
        if (iVar5 != 0) goto LAB_0014b0db;
        rc = 0;
      }
      rc = sqlite3PagerWrite(pPage->pDbPage);
      iVar5 = rc;
      if (rc != 0) goto LAB_0014b0db;
      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);
    }
    if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {
      if (uVar7 == 0) {
        pgno = 0;
        iVar5 = rc;
LAB_0014b33a:
        rc = iVar5;
        if (pPage == (MemPage *)0x0) {
          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);
          if (iVar5 != 0) goto LAB_0014b0db;
          rc = 0;
        }
        rc = sqlite3PagerWrite(pPage->pDbPage);
        iVar5 = rc;
        if (rc == 0) {
          sqlite3Put4byte(pPage->aData,pgno);
          sqlite3Put4byte(pPage->aData + 4,0);
          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);
          iVar5 = rc;
        }
      }
      else {
        uVar7 = *(uint *)(pMVar3->aData + 0x20);
        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
        if (pBt->nPage < pgno) {
          iVar5 = sqlite3CorruptError(0x11479);
        }
        else {
          rc = btreeGetPage(pBt,pgno,&pTrunk,0);
          iVar5 = rc;
          if (rc == 0) {
            uVar7 = *(uint *)(pTrunk->aData + 4);
            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;
            uVar7 = pBt->usableSize >> 2;
            if (uVar7 - 2 < uVar8) {
              iVar5 = sqlite3CorruptError(0x11484);
            }
            else {
              iVar5 = 0;
              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;
              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);
              if (iVar5 == 0) {
                rc = iVar5;
                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);
                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);
                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {
                  pDVar4 = pPage->pDbPage;
                  if ((pDVar4->pPager->tempFile == '\0') &&
                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {
                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;
                  }
                }
                if (pBt->pHasContent == (Bitvec *)0x0) {
                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);
                  pBt->pHasContent = pBVar6;
                  if (pBVar6 == (Bitvec *)0x0) {
                    iVar5 = 7;
                    goto LAB_0014b0db;
                  }
                }
                if (iPage <= pBt->pHasContent->iSize) {
                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);
                }
              }
            }
          }
        }
      }
    }
  }
LAB_0014b0db:
  rc = iVar5;
  if (pPage != (MemPage *)0x0) {
    pPage->isInit = '\0';
  }
  releasePage(pPage);
  releasePage(pTrunk);
  iVar5 = rc;
LAB_0014b10c:
  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return iVar5;
}



ulong FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)

{
  short *psVar1;
  int *piVar2;
  long lVar3;
  uint uVar4;
  uint uVar5;
  ulong uVar6;
  long lVar7;
  uint uVar8;
  uint uVar9;
  long in_FS_OFFSET;
  uint local_44;
  long local_40;
  undefined1 *local_38;
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  local_40 = 0;
  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {
    uVar6 = FUN_00129d5f(0x1144a);
    goto LAB_0014b10c;
  }
  lVar7 = *(long *)(param_1 + 0x18);
  if (param_2 == (undefined1 *)0x0) {
    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);
  }
  else {
    lVar3 = *(long *)(param_2 + 0x70);
    psVar1 = (short *)(lVar3 + 0x36);
    *psVar1 = *psVar1 + 1;
    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);
    *piVar2 = *piVar2 + 1;
    local_38 = param_2;
  }
  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));
  uVar4 = local_44;
  if (local_44 == 0) {
    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);
    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);
    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {
      if (local_38 == (undefined1 *)0x0) {
        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);
        if (uVar4 != 0) goto LAB_0014b0db;
        local_44 = 0;
      }
      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));
      uVar4 = local_44;
      if (local_44 != 0) goto LAB_0014b0db;
      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));
    }
    if ((*(char *)(param_1 + 0x21) == '\0') ||
       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {
      if (uVar8 == 0) {
        uVar8 = 0;
        uVar4 = local_44;
LAB_0014b33a:
        local_44 = uVar4;
        if (local_38 == (undefined1 *)0x0) {
          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);
          if (uVar4 != 0) goto LAB_0014b0db;
          local_44 = 0;
        }
        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));
        uVar4 = local_44;
        if (local_44 == 0) {
          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);
          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);
          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);
          uVar4 = local_44;
        }
      }
      else {
        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);
        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
        if (*(uint *)(param_1 + 0x40) < uVar8) {
          uVar4 = FUN_00129d5f(0x11479);
        }
        else {
          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);
          uVar4 = local_44;
          if (local_44 == 0) {
            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);
            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
            uVar5 = *(uint *)(param_1 + 0x38) >> 2;
            if (uVar5 - 2 < uVar9) {
              uVar4 = FUN_00129d5f(0x11484);
            }
            else {
              uVar4 = 0;
              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;
              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));
              if (uVar4 == 0) {
                local_44 = uVar4;
                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);
                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);
                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {
                  lVar7 = *(long *)(local_38 + 0x70);
                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&
                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&
                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {
                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;
                  }
                }
                if (*(long *)(param_1 + 0x60) == 0) {
                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));
                  *(long *)(param_1 + 0x60) = lVar7;
                  if (lVar7 == 0) {
                    uVar4 = 7;
                    goto LAB_0014b0db;
                  }
                }
                if (param_3 <= **(uint **)(param_1 + 0x60)) {
                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);
                }
              }
            }
          }
        }
      }
    }
  }
LAB_0014b0db:
  local_44 = uVar4;
  if (local_38 != (undefined1 *)0x0) {
    *local_38 = 0;
  }
  FUN_0010f151(local_38);
  FUN_0010f151(local_40);
  uVar6 = (ulong)local_44;
LAB_0014b10c:
  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar6;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x20
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
MOV qword ptr [RSP + 0x8],0x0
CMP EDX,0x1
JBE 0x0014b102
MOV RBP,RDI
MOV EBX,EDX
CMP dword ptr [RDI + 0x40],EDX
JC 0x0014b102
MOV R12,qword ptr [RDI + 0x18]
TEST RSI,RSI
JZ 0x0014b12d
MOV qword ptr [RSP + 0x10],RSI
MOV RAX,qword ptr [RSI + 0x70]
ADD word ptr [RAX + 0x36],0x1
MOV RAX,qword ptr [RAX + 0x18]
ADD dword ptr [RAX + 0x18],0x1
MOV RDI,qword ptr [R12 + 0x70]
CALL 0x00146893
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JZ 0x0014b13b
MOV RAX,qword ptr [RSP + 0x10]
TEST RAX,RAX
JZ 0x0014b0e8
MOV byte ptr [RAX],0x0
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x0010f151
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0010f151
MOV EAX,dword ptr [RSP + 0x4]
JMP 0x0014b10c
MOV EDI,0x1144a
CALL 0x00129d5f
MOV RCX,qword ptr [RSP + 0x18]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x0014b3bb
ADD RSP,0x20
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV ESI,EDX
CALL 0x001143ea
MOV qword ptr [RSP + 0x10],RAX
JMP 0x0014b0c9
MOV RDI,qword ptr [R12 + 0x50]
MOV R13D,dword ptr [RDI + 0x24]
BSWAP R13D
LEA ESI,[R13 + 0x1]
ADD RDI,0x24
CALL 0x0011657b
TEST byte ptr [RBP + 0x28],0x4
JZ 0x0014b196
CMP qword ptr [RSP + 0x10],0x0
JZ 0x0014b1ca
MOV RAX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RAX + 0x70]
CALL 0x00146893
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JNZ 0x0014b0db
MOV RAX,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RAX + 0x48]
MOV EDX,dword ptr [RDX + 0x34]
MOV RDI,qword ptr [RAX + 0x50]
MOV ESI,0x0
CALL 0x0010c180
CMP byte ptr [RBP + 0x21],0x0
JNZ 0x0014b1ef
TEST R13D,R13D
JZ 0x0014b334
MOV RAX,qword ptr [R12 + 0x50]
MOV R13D,dword ptr [RAX + 0x20]
BSWAP R13D
CMP dword ptr [RBP + 0x40],R13D
JNC 0x0014b215
MOV EDI,0x11479
CALL 0x00129d5f
MOV dword ptr [RSP + 0x4],EAX
JMP 0x0014b0db
LEA RDX,[RSP + 0x10]
MOV ECX,0x0
MOV ESI,EBX
MOV RDI,RBP
CALL 0x0010f088
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JNZ 0x0014b0db
JMP 0x0014b162
LEA R8,[RSP + 0x4]
MOV ECX,0x0
MOV EDX,0x2
MOV ESI,EBX
MOV RDI,RBP
CALL 0x0014a35d
CMP dword ptr [RSP + 0x4],0x0
JNZ 0x0014b0db
JMP 0x0014b19c
LEA RDX,[RSP + 0x8]
MOV ECX,0x0
MOV ESI,R13D
MOV RDI,RBP
CALL 0x0010f088
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JNZ 0x0014b0db
MOV RDX,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [RDX + 0x50]
MOV R14D,dword ptr [RAX + 0x4]
BSWAP R14D
MOV EAX,dword ptr [RBP + 0x38]
SHR EAX,0x2
LEA ECX,[RAX + -0x2]
CMP ECX,R14D
JC 0x0014b2d1
SUB EAX,0x8
CMP EAX,R14D
JBE 0x0014b33a
MOV RDI,qword ptr [RDX + 0x70]
CALL 0x00146893
MOV R12D,EAX
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JNZ 0x0014b0db
LEA ESI,[R14 + 0x1]
MOV RAX,qword ptr [RSP + 0x8]
MOV RDI,qword ptr [RAX + 0x50]
ADD RDI,0x4
CALL 0x0011657b
LEA EDI,[0x8 + R14*0x4]
MOV EDI,EDI
MOV RAX,qword ptr [RSP + 0x8]
ADD RDI,qword ptr [RAX + 0x50]
MOV ESI,EBX
CALL 0x0011657b
MOV RAX,qword ptr [RSP + 0x10]
TEST RAX,RAX
JZ 0x0014b2b8
TEST byte ptr [RBP + 0x28],0x4
JZ 0x0014b2e4
CMP qword ptr [RBP + 0x60],0x0
JZ 0x0014b30f
MOV RDI,qword ptr [RBP + 0x60]
CMP EBX,dword ptr [RDI]
JBE 0x0014b328
MOV dword ptr [RSP + 0x4],R12D
JMP 0x0014b0db
MOV EDI,0x11484
CALL 0x00129d5f
MOV dword ptr [RSP + 0x4],EAX
JMP 0x0014b0db
MOV RDX,qword ptr [RAX + 0x70]
MOV RCX,qword ptr [RDX + 0x28]
CMP byte ptr [RCX + 0x10],0x0
JNZ 0x0014b2b8
MOVZX EAX,word ptr [RDX + 0x34]
TEST AL,0x2
JZ 0x0014b2b8
CMP dword ptr [RCX + 0x80],0x0
JNZ 0x0014b2b8
AND EAX,0xfffffffb
OR EAX,0x10
MOV word ptr [RDX + 0x34],AX
JMP 0x0014b2b8
MOV EDI,dword ptr [RBP + 0x40]
CALL 0x0011d296
MOV qword ptr [RBP + 0x60],RAX
TEST RAX,RAX
JNZ 0x0014b2bf
MOV R12D,0x7
JMP 0x0014b2c7
MOV ESI,EBX
CALL 0x00123346
MOV R12D,EAX
JMP 0x0014b2c7
MOV R13D,0x0
CMP qword ptr [RSP + 0x10],0x0
JZ 0x0014b399
MOV RAX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RAX + 0x70]
CALL 0x00146893
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JNZ 0x0014b0db
MOV RAX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RAX + 0x50]
MOV ESI,R13D
CALL 0x0011657b
MOV RAX,qword ptr [RSP + 0x10]
MOV RDI,qword ptr [RAX + 0x50]
ADD RDI,0x4
MOV ESI,0x0
CALL 0x0011657b
MOV RDI,qword ptr [R12 + 0x50]
ADD RDI,0x20
MOV ESI,EBX
CALL 0x0011657b
JMP 0x0014b0db
LEA RDX,[RSP + 0x10]
MOV ECX,0x0
MOV ESI,EBX
MOV RDI,RBP
CALL 0x0010f088
MOV dword ptr [RSP + 0x4],EAX
TEST EAX,EAX
JNZ 0x0014b0db
JMP 0x0014b342
CALL 0x0010c0d0
(translation_unit "ulong FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)\n\n{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar6;\n}\n\n" (function_definition "ulong FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)\n\n{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar6;\n}" type_identifier (function_declarator "FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)" identifier (parameter_list "(long param_1,undefined1 *param_2,uint param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar6;\n}" { (declaration "short *psVar1;" (sized_type_specifier "short" short) (pointer_declarator "*psVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }" if (parenthesized_expression "((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3))" ( (binary_expression "(param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)" (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) || (parenthesized_expression "(*(uint *)(param_1 + 0x40) < param_3)" ( (binary_expression "*(uint *)(param_1 + 0x40) < param_3" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) < identifier) ))) )) (compound_statement "{\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }" { (expression_statement "uVar6 = FUN_00129d5f(0x1144a);" (assignment_expression "uVar6 = FUN_00129d5f(0x1144a)" identifier = (call_expression "FUN_00129d5f(0x1144a)" identifier (argument_list "(0x1144a)" ( number_literal )))) ;) (goto_statement "goto LAB_0014b10c;" goto statement_identifier ;) })) (expression_statement "lVar7 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar7 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" if (parenthesized_expression "(param_2 == (undefined1 *)0x0)" ( (binary_expression "param_2 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }" { (expression_statement "local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);" (assignment_expression "local_38 = (undefined1 *)FUN_001143ea(param_1,param_3)" identifier = (cast_expression "(undefined1 *)FUN_001143ea(param_1,param_3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001143ea(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" else (compound_statement "{\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" { (expression_statement "lVar3 = *(long *)(param_2 + 0x70);" (assignment_expression "lVar3 = *(long *)(param_2 + 0x70)" identifier = (pointer_expression "*(long *)(param_2 + 0x70)" * (cast_expression "(long *)(param_2 + 0x70)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "psVar1 = (short *)(lVar3 + 0x36);" (assignment_expression "psVar1 = (short *)(lVar3 + 0x36)" identifier = (cast_expression "(short *)(lVar3 + 0x36)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x36)" ( (binary_expression "lVar3 + 0x36" identifier + number_literal) )))) ;) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" * identifier) = (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" * identifier) + number_literal)) ;) (expression_statement "piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);" (assignment_expression "piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18)" identifier = (cast_expression "(int *)(*(long *)(lVar3 + 0x18) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar3 + 0x18) + 0x18)" ( (binary_expression "*(long *)(lVar3 + 0x18) + 0x18" (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + 1;" (assignment_expression "*piVar2 = *piVar2 + 1" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + 1" (pointer_expression "*piVar2" * identifier) + number_literal)) ;) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" identifier = identifier) ;) }))) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(lVar7 + 0x70))" identifier (argument_list "(*(undefined8 *)(lVar7 + 0x70))" ( (pointer_expression "*(undefined8 *)(lVar7 + 0x70)" * (cast_expression "(undefined8 *)(lVar7 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x70)" ( (binary_expression "lVar7 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(local_44 == 0)" ( (binary_expression "local_44 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);" (assignment_expression "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" identifier = (pointer_expression "*(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" * (cast_expression "(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x50) + 0x24)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x24" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (expression_statement "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);" (call_expression "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1)" identifier (argument_list "(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x24" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) , (binary_expression "uVar8 + 1" identifier + number_literal) ))) ;) (if_statement "if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x28) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x28) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x28) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x28) & 4" (pointer_expression "*(byte *)(param_1 + 0x28)" * (cast_expression "(byte *)(param_1 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }" { (if_statement "if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }" if (parenthesized_expression "(local_38 == (undefined1 *)0x0)" ( (binary_expression "local_38 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }" { (expression_statement "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);" (assignment_expression "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0)" identifier = (call_expression "FUN_0010f088(param_1,param_3,&local_38,0)" identifier (argument_list "(param_1,param_3,&local_38,0)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , number_literal )))) ;) (if_statement "if (uVar4 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) })) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier (argument_list "(*(undefined8 *)(local_38 + 0x70))" ( (pointer_expression "*(undefined8 *)(local_38 + 0x70)" * (cast_expression "(undefined8 *)(local_38 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x70)" ( (binary_expression "local_38 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));" (call_expression "memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34))" identifier (argument_list "(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34))" ( (pointer_expression "*(void **)(local_38 + 0x50)" * (cast_expression "(void **)(local_38 + 0x50)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_38 + 0x50)" ( (binary_expression "local_38 + 0x50" identifier + number_literal) )))) , number_literal , (binary_expression "(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(*(long *)(local_38 + 0x48) + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_38 + 0x48) + 0x34)" ( (binary_expression "*(long *)(local_38 + 0x48) + 0x34" (pointer_expression "*(long *)(local_38 + 0x48)" * (cast_expression "(long *)(local_38 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x48)" ( (binary_expression "local_38 + 0x48" identifier + number_literal) )))) + number_literal) )))) ))) ;) })) (if_statement "if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0))" ( (binary_expression "(*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x21) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x21) == '\0'" (pointer_expression "*(char *)(param_1 + 0x21)" * (cast_expression "(char *)(param_1 + 0x21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)" ( (comma_expression "FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0" (call_expression "FUN_0014a35d(param_1,param_3,2,0,&local_44)" identifier (argument_list "(param_1,param_3,2,0,&local_44)" ( identifier , identifier , number_literal , number_literal , (pointer_expression "&local_44" & identifier) ))) , (comma_expression "uVar4 = local_44, local_44 == 0" (assignment_expression "uVar4 = local_44" identifier = identifier) , (binary_expression "local_44 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" { (if_statement "if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (labeled_statement "LAB_0014b33a:\n        local_44 = uVar4;" statement_identifier : (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" identifier = identifier) ;)) (if_statement "if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }" if (parenthesized_expression "(local_38 == (undefined1 *)0x0)" ( (binary_expression "local_38 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }" { (expression_statement "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);" (assignment_expression "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0)" identifier = (call_expression "FUN_0010f088(param_1,param_3,&local_38,0)" identifier (argument_list "(param_1,param_3,&local_38,0)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , number_literal )))) ;) (if_statement "if (uVar4 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) })) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier (argument_list "(*(undefined8 *)(local_38 + 0x70))" ( (pointer_expression "*(undefined8 *)(local_38 + 0x70)" * (cast_expression "(undefined8 *)(local_38 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x70)" ( (binary_expression "local_38 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }" if (parenthesized_expression "(local_44 == 0)" ( (binary_expression "local_44 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }" { (expression_statement "FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);" (call_expression "FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8)" identifier (argument_list "(*(undefined8 *)(local_38 + 0x50),uVar8)" ( (pointer_expression "*(undefined8 *)(local_38 + 0x50)" * (cast_expression "(undefined8 *)(local_38 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x50)" ( (binary_expression "local_38 + 0x50" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);" (call_expression "FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0)" identifier (argument_list "(*(long *)(local_38 + 0x50) + 4,0)" ( (binary_expression "*(long *)(local_38 + 0x50) + 4" (pointer_expression "*(long *)(local_38 + 0x50)" * (cast_expression "(long *)(local_38 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x50)" ( (binary_expression "local_38 + 0x50" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);" (call_expression "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3)" identifier (argument_list "(*(long *)(lVar7 + 0x50) + 0x20,param_3)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x20" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) })) }) (else_clause "else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);" (assignment_expression "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" identifier = (pointer_expression "*(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" * (cast_expression "(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x50) + 0x20)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x20" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (if_statement "if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(*(uint *)(param_1 + 0x40) < uVar8)" ( (binary_expression "*(uint *)(param_1 + 0x40) < uVar8" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n          uVar4 = FUN_00129d5f(0x11479);\n        }" { (expression_statement "uVar4 = FUN_00129d5f(0x11479);" (assignment_expression "uVar4 = FUN_00129d5f(0x11479)" identifier = (call_expression "FUN_00129d5f(0x11479)" identifier (argument_list "(0x11479)" ( number_literal )))) ;) }) (else_clause "else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" else (compound_statement "{\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" { (expression_statement "local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);" (assignment_expression "local_44 = FUN_0010f088(param_1,uVar8,&local_40,0)" identifier = (call_expression "FUN_0010f088(param_1,uVar8,&local_40,0)" identifier (argument_list "(param_1,uVar8,&local_40,0)" ( identifier , identifier , (pointer_expression "&local_40" & identifier) , number_literal )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }" if (parenthesized_expression "(local_44 == 0)" ( (binary_expression "local_44 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }" { (expression_statement "uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);" (assignment_expression "uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4)" identifier = (pointer_expression "*(uint *)(*(long *)(local_40 + 0x50) + 4)" * (cast_expression "(uint *)(*(long *)(local_40 + 0x50) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_40 + 0x50) + 4)" ( (binary_expression "*(long *)(local_40 + 0x50) + 4" (pointer_expression "*(long *)(local_40 + 0x50)" * (cast_expression "(long *)(local_40 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x50)" ( (binary_expression "local_40 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar5 = *(uint *)(param_1 + 0x38) >> 2;" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x38) >> 2" identifier = (binary_expression "*(uint *)(param_1 + 0x38) >> 2" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) >> number_literal)) ;) (if_statement "if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" if (parenthesized_expression "(uVar5 - 2 < uVar9)" ( (binary_expression "uVar5 - 2 < uVar9" (binary_expression "uVar5 - 2" identifier - number_literal) < identifier) )) (compound_statement "{\n              uVar4 = FUN_00129d5f(0x11484);\n            }" { (expression_statement "uVar4 = FUN_00129d5f(0x11484);" (assignment_expression "uVar4 = FUN_00129d5f(0x11484)" identifier = (call_expression "FUN_00129d5f(0x11484)" identifier (argument_list "(0x11484)" ( number_literal )))) ;) }) (else_clause "else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" else (compound_statement "{\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;" if (parenthesized_expression "(uVar5 - 8 <= uVar9)" ( (binary_expression "uVar5 - 8 <= uVar9" (binary_expression "uVar5 - 8" identifier - number_literal) <= identifier) )) (goto_statement "goto LAB_0014b33a;" goto statement_identifier ;)) (expression_statement "uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));" (assignment_expression "uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(local_40 + 0x70))" identifier (argument_list "(*(undefined8 *)(local_40 + 0x70))" ( (pointer_expression "*(undefined8 *)(local_40 + 0x70)" * (cast_expression "(undefined8 *)(local_40 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x70)" ( (binary_expression "local_40 + 0x70" identifier + number_literal) )))) )))) ;) (if_statement "if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }" { (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" identifier = identifier) ;) (expression_statement "FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);" (call_expression "FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1)" identifier (argument_list "(*(long *)(local_40 + 0x50) + 4,uVar9 + 1)" ( (binary_expression "*(long *)(local_40 + 0x50) + 4" (pointer_expression "*(long *)(local_40 + 0x50)" * (cast_expression "(long *)(local_40 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x50)" ( (binary_expression "local_40 + 0x50" identifier + number_literal) )))) + number_literal) , (binary_expression "uVar9 + 1" identifier + number_literal) ))) ;) (expression_statement "FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);" (call_expression "FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3)" identifier (argument_list "((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3)" ( (binary_expression "(ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50)" (call_expression "(ulong)(uVar9 * 4 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar9 * 4 + 8)" ( (binary_expression "uVar9 * 4 + 8" (binary_expression "uVar9 * 4" identifier * number_literal) + number_literal) ))) + (pointer_expression "*(long *)(local_40 + 0x50)" * (cast_expression "(long *)(local_40 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x50)" ( (binary_expression "local_40 + 0x50" identifier + number_literal) ))))) , identifier ))) ;) (if_statement "if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }" if (parenthesized_expression "((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0))" ( (binary_expression "(local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)" (parenthesized_expression "(local_38 != (undefined1 *)0x0)" ( (binary_expression "local_38 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(param_1 + 0x28) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x28) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x28) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x28) & 4" (pointer_expression "*(byte *)(param_1 + 0x28)" * (cast_expression "(byte *)(param_1 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }" { (expression_statement "lVar7 = *(long *)(local_38 + 0x70);" (assignment_expression "lVar7 = *(long *)(local_38 + 0x70)" identifier = (pointer_expression "*(long *)(local_38 + 0x70)" * (cast_expression "(long *)(local_38 + 0x70)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x70)" ( (binary_expression "local_38 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }" if (parenthesized_expression "((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0))))" ( (binary_expression "(*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))" (parenthesized_expression "(*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0')" ( (binary_expression "*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0'" (pointer_expression "*(char *)(*(long *)(lVar7 + 0x28) + 0x10)" * (cast_expression "(char *)(*(long *)(lVar7 + 0x28) + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x28) + 0x10)" ( (binary_expression "*(long *)(lVar7 + 0x28) + 0x10" (pointer_expression "*(long *)(lVar7 + 0x28)" * (cast_expression "(long *)(lVar7 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x28)" ( (binary_expression "lVar7 + 0x28" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))" ( (parenthesized_expression "((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0))" ( (binary_expression "(*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)" (binary_expression "(*(ushort *)(lVar7 + 0x34) & 2) != 0" (parenthesized_expression "(*(ushort *)(lVar7 + 0x34) & 2)" ( (binary_expression "*(ushort *)(lVar7 + 0x34) & 2" (pointer_expression "*(ushort *)(lVar7 + 0x34)" * (cast_expression "(ushort *)(lVar7 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x34)" ( (binary_expression "lVar7 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "(*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)" ( (binary_expression "*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0" (pointer_expression "*(int *)(*(long *)(lVar7 + 0x28) + 0x80)" * (cast_expression "(int *)(*(long *)(lVar7 + 0x28) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x28) + 0x80)" ( (binary_expression "*(long *)(lVar7 + 0x28) + 0x80" (pointer_expression "*(long *)(lVar7 + 0x28)" * (cast_expression "(long *)(lVar7 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x28)" ( (binary_expression "lVar7 + 0x28" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }" { (expression_statement "*(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;" (assignment_expression "*(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10" (pointer_expression "*(ushort *)(lVar7 + 0x34)" * (cast_expression "(ushort *)(lVar7 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x34)" ( (binary_expression "lVar7 + 0x34" identifier + number_literal) )))) = (binary_expression "*(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10" (binary_expression "*(ushort *)(lVar7 + 0x34) & 0xfffb" (pointer_expression "*(ushort *)(lVar7 + 0x34)" * (cast_expression "(ushort *)(lVar7 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x34)" ( (binary_expression "lVar7 + 0x34" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) })) (if_statement "if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" if (parenthesized_expression "(*(long *)(param_1 + 0x60) == 0)" ( (binary_expression "*(long *)(param_1 + 0x60) == 0" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" { (expression_statement "lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));" (assignment_expression "lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40))" identifier = (call_expression "FUN_0011d296(*(undefined4 *)(param_1 + 0x40))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x40))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) )))) ;) (expression_statement "*(long *)(param_1 + 0x60) = lVar7;" (assignment_expression "*(long *)(param_1 + 0x60) = lVar7" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }" { (expression_statement "uVar4 = 7;" (assignment_expression "uVar4 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;) })) })) (if_statement "if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }" if (parenthesized_expression "(param_3 <= **(uint **)(param_1 + 0x60))" ( (binary_expression "param_3 <= **(uint **)(param_1 + 0x60)" identifier <= (pointer_expression "**(uint **)(param_1 + 0x60)" * (pointer_expression "*(uint **)(param_1 + 0x60)" * (cast_expression "(uint **)(param_1 + 0x60)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))))) )) (compound_statement "{\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }" { (expression_statement "uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);" (assignment_expression "uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3)" identifier = (call_expression "FUN_00123346(*(uint **)(param_1 + 0x60),param_3)" identifier (argument_list "(*(uint **)(param_1 + 0x60),param_3)" ( (pointer_expression "*(uint **)(param_1 + 0x60)" * (cast_expression "(uint **)(param_1 + 0x60)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) , identifier )))) ;) })) })) }))) })) }))) }))) })) })) (labeled_statement "LAB_0014b0db:\n  local_44 = uVar4;" statement_identifier : (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" identifier = identifier) ;)) (if_statement "if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }" if (parenthesized_expression "(local_38 != (undefined1 *)0x0)" ( (binary_expression "local_38 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *local_38 = 0;\n  }" { (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" * identifier) = number_literal) ;) })) (expression_statement "FUN_0010f151(local_38);" (call_expression "FUN_0010f151(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) (expression_statement "FUN_0010f151(local_40);" (call_expression "FUN_0010f151(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (expression_statement "uVar6 = (ulong)local_44;" (assignment_expression "uVar6 = (ulong)local_44" identifier = (cast_expression "(ulong)local_44" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (labeled_statement "LAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit "int freePage2(BtShared *pBt,MemPage *pMemPage,Pgno iPage)\n\n{\n  i16 *piVar1;\n  int *piVar2;\n  MemPage *pMVar3;\n  DbPage *pDVar4;\n  int iVar5;\n  Bitvec *pBVar6;\n  uint uVar7;\n  u32 pgno;\n  uint uVar8;\n  long in_FS_OFFSET;\n  int rc;\n  MemPage *pTrunk;\n  MemPage *pPage;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  pTrunk = (MemPage *)0x0;\n  if ((iPage < 2) || (pBt->nPage < iPage)) {\n    iVar5 = sqlite3CorruptError(0x1144a);\n    goto LAB_0014b10c;\n  }\n  pMVar3 = pBt->pPage1;\n  if (pMemPage == (MemPage *)0x0) {\n    pPage = btreePageLookup(pBt,iPage);\n  }\n  else {\n    pDVar4 = pMemPage->pDbPage;\n    piVar1 = &pDVar4->nRef;\n    *piVar1 = *piVar1 + 1;\n    piVar2 = &pDVar4->pCache->nRefSum;\n    *piVar2 = *piVar2 + 1;\n    pPage = pMemPage;\n  }\n  rc = sqlite3PagerWrite(pMVar3->pDbPage);\n  iVar5 = rc;\n  if (rc == 0) {\n    uVar7 = *(uint *)(pMVar3->aData + 0x24);\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);\n    if ((pBt->btsFlags & 4) != 0) {\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }\n    if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  rc = iVar5;\n  if (pPage != (MemPage *)0x0) {\n    pPage->isInit = '\0';\n  }\n  releasePage(pPage);\n  releasePage(pTrunk);\n  iVar5 = rc;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar5;\n}\n\n" (function_definition "int freePage2(BtShared *pBt,MemPage *pMemPage,Pgno iPage)\n\n{\n  i16 *piVar1;\n  int *piVar2;\n  MemPage *pMVar3;\n  DbPage *pDVar4;\n  int iVar5;\n  Bitvec *pBVar6;\n  uint uVar7;\n  u32 pgno;\n  uint uVar8;\n  long in_FS_OFFSET;\n  int rc;\n  MemPage *pTrunk;\n  MemPage *pPage;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  pTrunk = (MemPage *)0x0;\n  if ((iPage < 2) || (pBt->nPage < iPage)) {\n    iVar5 = sqlite3CorruptError(0x1144a);\n    goto LAB_0014b10c;\n  }\n  pMVar3 = pBt->pPage1;\n  if (pMemPage == (MemPage *)0x0) {\n    pPage = btreePageLookup(pBt,iPage);\n  }\n  else {\n    pDVar4 = pMemPage->pDbPage;\n    piVar1 = &pDVar4->nRef;\n    *piVar1 = *piVar1 + 1;\n    piVar2 = &pDVar4->pCache->nRefSum;\n    *piVar2 = *piVar2 + 1;\n    pPage = pMemPage;\n  }\n  rc = sqlite3PagerWrite(pMVar3->pDbPage);\n  iVar5 = rc;\n  if (rc == 0) {\n    uVar7 = *(uint *)(pMVar3->aData + 0x24);\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);\n    if ((pBt->btsFlags & 4) != 0) {\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }\n    if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  rc = iVar5;\n  if (pPage != (MemPage *)0x0) {\n    pPage->isInit = '\0';\n  }\n  releasePage(pPage);\n  releasePage(pTrunk);\n  iVar5 = rc;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar5;\n}" primitive_type (function_declarator "freePage2(BtShared *pBt,MemPage *pMemPage,Pgno iPage)" identifier (parameter_list "(BtShared *pBt,MemPage *pMemPage,Pgno iPage)" ( (parameter_declaration "BtShared *pBt" type_identifier (pointer_declarator "*pBt" * identifier)) , (parameter_declaration "MemPage *pMemPage" type_identifier (pointer_declarator "*pMemPage" * identifier)) , (parameter_declaration "Pgno iPage" type_identifier identifier) ))) (compound_statement "{\n  i16 *piVar1;\n  int *piVar2;\n  MemPage *pMVar3;\n  DbPage *pDVar4;\n  int iVar5;\n  Bitvec *pBVar6;\n  uint uVar7;\n  u32 pgno;\n  uint uVar8;\n  long in_FS_OFFSET;\n  int rc;\n  MemPage *pTrunk;\n  MemPage *pPage;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  pTrunk = (MemPage *)0x0;\n  if ((iPage < 2) || (pBt->nPage < iPage)) {\n    iVar5 = sqlite3CorruptError(0x1144a);\n    goto LAB_0014b10c;\n  }\n  pMVar3 = pBt->pPage1;\n  if (pMemPage == (MemPage *)0x0) {\n    pPage = btreePageLookup(pBt,iPage);\n  }\n  else {\n    pDVar4 = pMemPage->pDbPage;\n    piVar1 = &pDVar4->nRef;\n    *piVar1 = *piVar1 + 1;\n    piVar2 = &pDVar4->pCache->nRefSum;\n    *piVar2 = *piVar2 + 1;\n    pPage = pMemPage;\n  }\n  rc = sqlite3PagerWrite(pMVar3->pDbPage);\n  iVar5 = rc;\n  if (rc == 0) {\n    uVar7 = *(uint *)(pMVar3->aData + 0x24);\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);\n    if ((pBt->btsFlags & 4) != 0) {\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }\n    if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  rc = iVar5;\n  if (pPage != (MemPage *)0x0) {\n    pPage->isInit = '\0';\n  }\n  releasePage(pPage);\n  releasePage(pTrunk);\n  iVar5 = rc;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar5;\n}" { (declaration "i16 *piVar1;" type_identifier (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "MemPage *pMVar3;" type_identifier (pointer_declarator "*pMVar3" * identifier) ;) (declaration "DbPage *pDVar4;" type_identifier (pointer_declarator "*pDVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Bitvec *pBVar6;" type_identifier (pointer_declarator "*pBVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "u32 pgno;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "int rc;" primitive_type identifier ;) (declaration "MemPage *pTrunk;" type_identifier (pointer_declarator "*pTrunk" * identifier) ;) (declaration "MemPage *pPage;" type_identifier (pointer_declarator "*pPage" * identifier) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "pTrunk = (MemPage *)0x0;" (assignment_expression "pTrunk = (MemPage *)0x0" identifier = (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((iPage < 2) || (pBt->nPage < iPage)) {\n    iVar5 = sqlite3CorruptError(0x1144a);\n    goto LAB_0014b10c;\n  }" if (parenthesized_expression "((iPage < 2) || (pBt->nPage < iPage))" ( (binary_expression "(iPage < 2) || (pBt->nPage < iPage)" (parenthesized_expression "(iPage < 2)" ( (binary_expression "iPage < 2" identifier < number_literal) )) || (parenthesized_expression "(pBt->nPage < iPage)" ( (binary_expression "pBt->nPage < iPage" (field_expression "pBt->nPage" identifier -> field_identifier) < identifier) ))) )) (compound_statement "{\n    iVar5 = sqlite3CorruptError(0x1144a);\n    goto LAB_0014b10c;\n  }" { (expression_statement "iVar5 = sqlite3CorruptError(0x1144a);" (assignment_expression "iVar5 = sqlite3CorruptError(0x1144a)" identifier = (call_expression "sqlite3CorruptError(0x1144a)" identifier (argument_list "(0x1144a)" ( number_literal )))) ;) (goto_statement "goto LAB_0014b10c;" goto statement_identifier ;) })) (expression_statement "pMVar3 = pBt->pPage1;" (assignment_expression "pMVar3 = pBt->pPage1" identifier = (field_expression "pBt->pPage1" identifier -> field_identifier)) ;) (if_statement "if (pMemPage == (MemPage *)0x0) {\n    pPage = btreePageLookup(pBt,iPage);\n  }\n  else {\n    pDVar4 = pMemPage->pDbPage;\n    piVar1 = &pDVar4->nRef;\n    *piVar1 = *piVar1 + 1;\n    piVar2 = &pDVar4->pCache->nRefSum;\n    *piVar2 = *piVar2 + 1;\n    pPage = pMemPage;\n  }" if (parenthesized_expression "(pMemPage == (MemPage *)0x0)" ( (binary_expression "pMemPage == (MemPage *)0x0" identifier == (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pPage = btreePageLookup(pBt,iPage);\n  }" { (expression_statement "pPage = btreePageLookup(pBt,iPage);" (assignment_expression "pPage = btreePageLookup(pBt,iPage)" identifier = (call_expression "btreePageLookup(pBt,iPage)" identifier (argument_list "(pBt,iPage)" ( identifier , identifier )))) ;) }) (else_clause "else {\n    pDVar4 = pMemPage->pDbPage;\n    piVar1 = &pDVar4->nRef;\n    *piVar1 = *piVar1 + 1;\n    piVar2 = &pDVar4->pCache->nRefSum;\n    *piVar2 = *piVar2 + 1;\n    pPage = pMemPage;\n  }" else (compound_statement "{\n    pDVar4 = pMemPage->pDbPage;\n    piVar1 = &pDVar4->nRef;\n    *piVar1 = *piVar1 + 1;\n    piVar2 = &pDVar4->pCache->nRefSum;\n    *piVar2 = *piVar2 + 1;\n    pPage = pMemPage;\n  }" { (expression_statement "pDVar4 = pMemPage->pDbPage;" (assignment_expression "pDVar4 = pMemPage->pDbPage" identifier = (field_expression "pMemPage->pDbPage" identifier -> field_identifier)) ;) (expression_statement "piVar1 = &pDVar4->nRef;" (assignment_expression "piVar1 = &pDVar4->nRef" identifier = (pointer_expression "&pDVar4->nRef" & (field_expression "pDVar4->nRef" identifier -> field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "piVar2 = &pDVar4->pCache->nRefSum;" (assignment_expression "piVar2 = &pDVar4->pCache->nRefSum" identifier = (pointer_expression "&pDVar4->pCache->nRefSum" & (field_expression "pDVar4->pCache->nRefSum" (field_expression "pDVar4->pCache" identifier -> field_identifier) -> field_identifier))) ;) (expression_statement "*piVar2 = *piVar2 + 1;" (assignment_expression "*piVar2 = *piVar2 + 1" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + 1" (pointer_expression "*piVar2" * identifier) + number_literal)) ;) (expression_statement "pPage = pMemPage;" (assignment_expression "pPage = pMemPage" identifier = identifier) ;) }))) (expression_statement "rc = sqlite3PagerWrite(pMVar3->pDbPage);" (assignment_expression "rc = sqlite3PagerWrite(pMVar3->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pMVar3->pDbPage)" identifier (argument_list "(pMVar3->pDbPage)" ( (field_expression "pMVar3->pDbPage" identifier -> field_identifier) )))) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) (if_statement "if (rc == 0) {\n    uVar7 = *(uint *)(pMVar3->aData + 0x24);\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);\n    if ((pBt->btsFlags & 4) != 0) {\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }\n    if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n    uVar7 = *(uint *)(pMVar3->aData + 0x24);\n    uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n    sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);\n    if ((pBt->btsFlags & 4) != 0) {\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }\n    if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar7 = *(uint *)(pMVar3->aData + 0x24);" (assignment_expression "uVar7 = *(uint *)(pMVar3->aData + 0x24)" identifier = (pointer_expression "*(uint *)(pMVar3->aData + 0x24)" * (cast_expression "(uint *)(pMVar3->aData + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pMVar3->aData + 0x24)" ( (binary_expression "pMVar3->aData + 0x24" (field_expression "pMVar3->aData" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar7 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (expression_statement "sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1);" (call_expression "sqlite3Put4byte(pMVar3->aData + 0x24,uVar7 + 1)" identifier (argument_list "(pMVar3->aData + 0x24,uVar7 + 1)" ( (binary_expression "pMVar3->aData + 0x24" (field_expression "pMVar3->aData" identifier -> field_identifier) + number_literal) , (binary_expression "uVar7 + 1" identifier + number_literal) ))) ;) (if_statement "if ((pBt->btsFlags & 4) != 0) {\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }" if (parenthesized_expression "((pBt->btsFlags & 4) != 0)" ( (binary_expression "(pBt->btsFlags & 4) != 0" (parenthesized_expression "(pBt->btsFlags & 4)" ( (binary_expression "pBt->btsFlags & 4" (field_expression "pBt->btsFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }\n      rc = sqlite3PagerWrite(pPage->pDbPage);\n      iVar5 = rc;\n      if (rc != 0) goto LAB_0014b0db;\n      memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);\n    }" { (if_statement "if (pPage == (MemPage *)0x0) {\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }" if (parenthesized_expression "(pPage == (MemPage *)0x0)" ( (binary_expression "pPage == (MemPage *)0x0" identifier == (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n        if (iVar5 != 0) goto LAB_0014b0db;\n        rc = 0;\n      }" { (expression_statement "iVar5 = btreeGetPage(pBt,iPage,&pPage,0);" (assignment_expression "iVar5 = btreeGetPage(pBt,iPage,&pPage,0)" identifier = (call_expression "btreeGetPage(pBt,iPage,&pPage,0)" identifier (argument_list "(pBt,iPage,&pPage,0)" ( identifier , identifier , (pointer_expression "&pPage" & identifier) , number_literal )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "rc = 0;" (assignment_expression "rc = 0" identifier = number_literal) ;) })) (expression_statement "rc = sqlite3PagerWrite(pPage->pDbPage);" (assignment_expression "rc = sqlite3PagerWrite(pPage->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pPage->pDbPage)" identifier (argument_list "(pPage->pDbPage)" ( (field_expression "pPage->pDbPage" identifier -> field_identifier) )))) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) (if_statement "if (rc != 0) goto LAB_0014b0db;" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "memset(pPage->aData,0,(ulong)pPage->pBt->pageSize);" (call_expression "memset(pPage->aData,0,(ulong)pPage->pBt->pageSize)" identifier (argument_list "(pPage->aData,0,(ulong)pPage->pBt->pageSize)" ( (field_expression "pPage->aData" identifier -> field_identifier) , number_literal , (cast_expression "(ulong)pPage->pBt->pageSize" ( (type_descriptor "ulong" type_identifier) ) (field_expression "pPage->pBt->pageSize" (field_expression "pPage->pBt" identifier -> field_identifier) -> field_identifier)) ))) ;) })) (if_statement "if ((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)) {\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0))" ( (binary_expression "(pBt->autoVacuum == '\0') || (ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, 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 "(ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0)" ( (comma_expression "ptrmapPut(pBt,iPage,'\x02',0,&rc), iVar5 = rc, rc == 0" (call_expression "ptrmapPut(pBt,iPage,'\x02',0,&rc)" identifier (argument_list "(pBt,iPage,'\x02',0,&rc)" ( identifier , identifier , (char_literal "'\x02'" ' escape_sequence ') , number_literal , (pointer_expression "&rc" & identifier) ))) , (comma_expression "iVar5 = rc, rc == 0" (assignment_expression "iVar5 = rc" identifier = identifier) , (binary_expression "rc == 0" identifier == number_literal))) ))) )) (compound_statement "{\n      if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" { (if_statement "if (uVar7 == 0) {\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }\n      else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n        pgno = 0;\n        iVar5 = rc;\nLAB_0014b33a:\n        rc = iVar5;\n        if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }\n        rc = sqlite3PagerWrite(pPage->pDbPage);\n        iVar5 = rc;\n        if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }\n      }" { (expression_statement "pgno = 0;" (assignment_expression "pgno = 0" identifier = number_literal) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) (labeled_statement "LAB_0014b33a:\n        rc = iVar5;" statement_identifier : (expression_statement "rc = iVar5;" (assignment_expression "rc = iVar5" identifier = identifier) ;)) (if_statement "if (pPage == (MemPage *)0x0) {\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }" if (parenthesized_expression "(pPage == (MemPage *)0x0)" ( (binary_expression "pPage == (MemPage *)0x0" identifier == (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar5 = btreeGetPage(pBt,iPage,&pPage,0);\n          if (iVar5 != 0) goto LAB_0014b0db;\n          rc = 0;\n        }" { (expression_statement "iVar5 = btreeGetPage(pBt,iPage,&pPage,0);" (assignment_expression "iVar5 = btreeGetPage(pBt,iPage,&pPage,0)" identifier = (call_expression "btreeGetPage(pBt,iPage,&pPage,0)" identifier (argument_list "(pBt,iPage,&pPage,0)" ( identifier , identifier , (pointer_expression "&pPage" & identifier) , number_literal )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "rc = 0;" (assignment_expression "rc = 0" identifier = number_literal) ;) })) (expression_statement "rc = sqlite3PagerWrite(pPage->pDbPage);" (assignment_expression "rc = sqlite3PagerWrite(pPage->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pPage->pDbPage)" identifier (argument_list "(pPage->pDbPage)" ( (field_expression "pPage->pDbPage" identifier -> field_identifier) )))) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) (if_statement "if (rc == 0) {\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n          sqlite3Put4byte(pPage->aData,pgno);\n          sqlite3Put4byte(pPage->aData + 4,0);\n          sqlite3Put4byte(pMVar3->aData + 0x20,iPage);\n          iVar5 = rc;\n        }" { (expression_statement "sqlite3Put4byte(pPage->aData,pgno);" (call_expression "sqlite3Put4byte(pPage->aData,pgno)" identifier (argument_list "(pPage->aData,pgno)" ( (field_expression "pPage->aData" identifier -> field_identifier) , identifier ))) ;) (expression_statement "sqlite3Put4byte(pPage->aData + 4,0);" (call_expression "sqlite3Put4byte(pPage->aData + 4,0)" identifier (argument_list "(pPage->aData + 4,0)" ( (binary_expression "pPage->aData + 4" (field_expression "pPage->aData" identifier -> field_identifier) + number_literal) , number_literal ))) ;) (expression_statement "sqlite3Put4byte(pMVar3->aData + 0x20,iPage);" (call_expression "sqlite3Put4byte(pMVar3->aData + 0x20,iPage)" identifier (argument_list "(pMVar3->aData + 0x20,iPage)" ( (binary_expression "pMVar3->aData + 0x20" (field_expression "pMVar3->aData" identifier -> field_identifier) + number_literal) , identifier ))) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) })) }) (else_clause "else {\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar7 = *(uint *)(pMVar3->aData + 0x20);\n        pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n        if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "uVar7 = *(uint *)(pMVar3->aData + 0x20);" (assignment_expression "uVar7 = *(uint *)(pMVar3->aData + 0x20)" identifier = (pointer_expression "*(uint *)(pMVar3->aData + 0x20)" * (cast_expression "(uint *)(pMVar3->aData + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pMVar3->aData + 0x20)" ( (binary_expression "pMVar3->aData + 0x20" (field_expression "pMVar3->aData" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "pgno = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (if_statement "if (pBt->nPage < pgno) {\n          iVar5 = sqlite3CorruptError(0x11479);\n        }\n        else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(pBt->nPage < pgno)" ( (binary_expression "pBt->nPage < pgno" (field_expression "pBt->nPage" identifier -> field_identifier) < identifier) )) (compound_statement "{\n          iVar5 = sqlite3CorruptError(0x11479);\n        }" { (expression_statement "iVar5 = sqlite3CorruptError(0x11479);" (assignment_expression "iVar5 = sqlite3CorruptError(0x11479)" identifier = (call_expression "sqlite3CorruptError(0x11479)" identifier (argument_list "(0x11479)" ( number_literal )))) ;) }) (else_clause "else {\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }" else (compound_statement "{\n          rc = btreeGetPage(pBt,pgno,&pTrunk,0);\n          iVar5 = rc;\n          if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }\n        }" { (expression_statement "rc = btreeGetPage(pBt,pgno,&pTrunk,0);" (assignment_expression "rc = btreeGetPage(pBt,pgno,&pTrunk,0)" identifier = (call_expression "btreeGetPage(pBt,pgno,&pTrunk,0)" identifier (argument_list "(pBt,pgno,&pTrunk,0)" ( identifier , identifier , (pointer_expression "&pTrunk" & identifier) , number_literal )))) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) (if_statement "if (rc == 0) {\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n            uVar7 = *(uint *)(pTrunk->aData + 4);\n            uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;\n            uVar7 = pBt->usableSize >> 2;\n            if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }\n          }" { (expression_statement "uVar7 = *(uint *)(pTrunk->aData + 4);" (assignment_expression "uVar7 = *(uint *)(pTrunk->aData + 4)" identifier = (pointer_expression "*(uint *)(pTrunk->aData + 4)" * (cast_expression "(uint *)(pTrunk->aData + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pTrunk->aData + 4)" ( (binary_expression "pTrunk->aData + 4" (field_expression "pTrunk->aData" identifier -> field_identifier) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18;" (assignment_expression "uVar8 = uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" identifier = (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8 | uVar7 << 0x18" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8 | (uVar7 & 0xff00) << 8" (binary_expression "uVar7 >> 0x18 | (uVar7 & 0xff0000) >> 8" (binary_expression "uVar7 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar7 & 0xff0000) >> 8" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar7 & 0xff00) << 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar7 = pBt->usableSize >> 2;" (assignment_expression "uVar7 = pBt->usableSize >> 2" identifier = (binary_expression "pBt->usableSize >> 2" (field_expression "pBt->usableSize" identifier -> field_identifier) >> number_literal)) ;) (if_statement "if (uVar7 - 2 < uVar8) {\n              iVar5 = sqlite3CorruptError(0x11484);\n            }\n            else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }" if (parenthesized_expression "(uVar7 - 2 < uVar8)" ( (binary_expression "uVar7 - 2 < uVar8" (binary_expression "uVar7 - 2" identifier - number_literal) < identifier) )) (compound_statement "{\n              iVar5 = sqlite3CorruptError(0x11484);\n            }" { (expression_statement "iVar5 = sqlite3CorruptError(0x11484);" (assignment_expression "iVar5 = sqlite3CorruptError(0x11484)" identifier = (call_expression "sqlite3CorruptError(0x11484)" identifier (argument_list "(0x11484)" ( number_literal )))) ;) }) (else_clause "else {\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }" else (compound_statement "{\n              iVar5 = 0;\n              if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;\n              iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);\n              if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }\n            }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (uVar7 - 8 <= uVar8) goto LAB_0014b33a;" if (parenthesized_expression "(uVar7 - 8 <= uVar8)" ( (binary_expression "uVar7 - 8 <= uVar8" (binary_expression "uVar7 - 8" identifier - number_literal) <= identifier) )) (goto_statement "goto LAB_0014b33a;" goto statement_identifier ;)) (expression_statement "iVar5 = sqlite3PagerWrite(pTrunk->pDbPage);" (assignment_expression "iVar5 = sqlite3PagerWrite(pTrunk->pDbPage)" identifier = (call_expression "sqlite3PagerWrite(pTrunk->pDbPage)" identifier (argument_list "(pTrunk->pDbPage)" ( (field_expression "pTrunk->pDbPage" identifier -> field_identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                rc = iVar5;\n                sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);\n                sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);\n                if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }\n                if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }\n              }" { (expression_statement "rc = iVar5;" (assignment_expression "rc = iVar5" identifier = identifier) ;) (expression_statement "sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1);" (call_expression "sqlite3Put4byte(pTrunk->aData + 4,uVar8 + 1)" identifier (argument_list "(pTrunk->aData + 4,uVar8 + 1)" ( (binary_expression "pTrunk->aData + 4" (field_expression "pTrunk->aData" identifier -> field_identifier) + number_literal) , (binary_expression "uVar8 + 1" identifier + number_literal) ))) ;) (expression_statement "sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage);" (call_expression "sqlite3Put4byte(pTrunk->aData + (uVar8 * 4 + 8),iPage)" identifier (argument_list "(pTrunk->aData + (uVar8 * 4 + 8),iPage)" ( (binary_expression "pTrunk->aData + (uVar8 * 4 + 8)" (field_expression "pTrunk->aData" identifier -> field_identifier) + (parenthesized_expression "(uVar8 * 4 + 8)" ( (binary_expression "uVar8 * 4 + 8" (binary_expression "uVar8 * 4" identifier * number_literal) + number_literal) ))) , identifier ))) ;) (if_statement "if ((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)) {\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }" if (parenthesized_expression "((pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0))" ( (binary_expression "(pPage != (MemPage *)0x0) && ((pBt->btsFlags & 4) == 0)" (parenthesized_expression "(pPage != (MemPage *)0x0)" ( (binary_expression "pPage != (MemPage *)0x0" identifier != (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pBt->btsFlags & 4) == 0)" ( (binary_expression "(pBt->btsFlags & 4) == 0" (parenthesized_expression "(pBt->btsFlags & 4)" ( (binary_expression "pBt->btsFlags & 4" (field_expression "pBt->btsFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                  pDVar4 = pPage->pDbPage;\n                  if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }\n                }" { (expression_statement "pDVar4 = pPage->pDbPage;" (assignment_expression "pDVar4 = pPage->pDbPage" identifier = (field_expression "pPage->pDbPage" identifier -> field_identifier)) ;) (if_statement "if ((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }" if (parenthesized_expression "((pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0))))" ( (binary_expression "(pDVar4->pPager->tempFile == '\0') &&\n                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))" (parenthesized_expression "(pDVar4->pPager->tempFile == '\0')" ( (binary_expression "pDVar4->pPager->tempFile == '\0'" (field_expression "pDVar4->pPager->tempFile" (field_expression "pDVar4->pPager" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))" ( (parenthesized_expression "((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0))" ( (binary_expression "(pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)" (binary_expression "(pDVar4->flags & 2) != 0" (parenthesized_expression "(pDVar4->flags & 2)" ( (binary_expression "pDVar4->flags & 2" (field_expression "pDVar4->flags" identifier -> field_identifier) & number_literal) )) != number_literal) && (parenthesized_expression "(pDVar4->pPager->nSavepoint == 0)" ( (binary_expression "pDVar4->pPager->nSavepoint == 0" (field_expression "pDVar4->pPager->nSavepoint" (field_expression "pDVar4->pPager" identifier -> field_identifier) -> field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;\n                  }" { (expression_statement "pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;" (assignment_expression "pDVar4->flags = pDVar4->flags & 0xfffb | 0x10" (field_expression "pDVar4->flags" identifier -> field_identifier) = (binary_expression "pDVar4->flags & 0xfffb | 0x10" (binary_expression "pDVar4->flags & 0xfffb" (field_expression "pDVar4->flags" identifier -> field_identifier) & number_literal) | number_literal)) ;) })) })) (if_statement "if (pBt->pHasContent == (Bitvec *)0x0) {\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" if (parenthesized_expression "(pBt->pHasContent == (Bitvec *)0x0)" ( (binary_expression "pBt->pHasContent == (Bitvec *)0x0" (field_expression "pBt->pHasContent" identifier -> field_identifier) == (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pBVar6 = sqlite3BitvecCreate(pBt->nPage);\n                  pBt->pHasContent = pBVar6;\n                  if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" { (expression_statement "pBVar6 = sqlite3BitvecCreate(pBt->nPage);" (assignment_expression "pBVar6 = sqlite3BitvecCreate(pBt->nPage)" identifier = (call_expression "sqlite3BitvecCreate(pBt->nPage)" identifier (argument_list "(pBt->nPage)" ( (field_expression "pBt->nPage" identifier -> field_identifier) )))) ;) (expression_statement "pBt->pHasContent = pBVar6;" (assignment_expression "pBt->pHasContent = pBVar6" (field_expression "pBt->pHasContent" identifier -> field_identifier) = identifier) ;) (if_statement "if (pBVar6 == (Bitvec *)0x0) {\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }" if (parenthesized_expression "(pBVar6 == (Bitvec *)0x0)" ( (binary_expression "pBVar6 == (Bitvec *)0x0" identifier == (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    iVar5 = 7;\n                    goto LAB_0014b0db;\n                  }" { (expression_statement "iVar5 = 7;" (assignment_expression "iVar5 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;) })) })) (if_statement "if (iPage <= pBt->pHasContent->iSize) {\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }" if (parenthesized_expression "(iPage <= pBt->pHasContent->iSize)" ( (binary_expression "iPage <= pBt->pHasContent->iSize" identifier <= (field_expression "pBt->pHasContent->iSize" (field_expression "pBt->pHasContent" identifier -> field_identifier) -> field_identifier)) )) (compound_statement "{\n                  iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);\n                }" { (expression_statement "iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage);" (assignment_expression "iVar5 = sqlite3BitvecSet(pBt->pHasContent,iPage)" identifier = (call_expression "sqlite3BitvecSet(pBt->pHasContent,iPage)" identifier (argument_list "(pBt->pHasContent,iPage)" ( (field_expression "pBt->pHasContent" identifier -> field_identifier) , identifier )))) ;) })) })) }))) })) }))) }))) })) })) (labeled_statement "LAB_0014b0db:\n  rc = iVar5;" statement_identifier : (expression_statement "rc = iVar5;" (assignment_expression "rc = iVar5" identifier = identifier) ;)) (if_statement "if (pPage != (MemPage *)0x0) {\n    pPage->isInit = '\0';\n  }" if (parenthesized_expression "(pPage != (MemPage *)0x0)" ( (binary_expression "pPage != (MemPage *)0x0" identifier != (cast_expression "(MemPage *)0x0" ( (type_descriptor "MemPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pPage->isInit = '\0';\n  }" { (expression_statement "pPage->isInit = '\0';" (assignment_expression "pPage->isInit = '\0'" (field_expression "pPage->isInit" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "releasePage(pPage);" (call_expression "releasePage(pPage)" identifier (argument_list "(pPage)" ( identifier ))) ;) (expression_statement "releasePage(pTrunk);" (call_expression "releasePage(pTrunk)" identifier (argument_list "(pTrunk)" ( identifier ))) ;) (expression_statement "iVar5 = rc;" (assignment_expression "iVar5 = rc" identifier = identifier) ;) (labeled_statement "LAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar5;" return identifier ;) })))
(translation_unit "ulong FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)\n\n{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar6;\n}\n\n" (function_definition "ulong FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)\n\n{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar6;\n}" type_identifier (function_declarator "FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)" identifier (parameter_list "(long param_1,undefined1 *param_2,uint param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar6;\n}" { (declaration "short *psVar1;" (sized_type_specifier "short" short) (pointer_declarator "*psVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (if_statement "if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }" if (parenthesized_expression "((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3))" ( (binary_expression "(param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)" (parenthesized_expression "(param_3 < 2)" ( (binary_expression "param_3 < 2" identifier < number_literal) )) || (parenthesized_expression "(*(uint *)(param_1 + 0x40) < param_3)" ( (binary_expression "*(uint *)(param_1 + 0x40) < param_3" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) < identifier) ))) )) (compound_statement "{\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }" { (expression_statement "uVar6 = FUN_00129d5f(0x1144a);" (assignment_expression "uVar6 = FUN_00129d5f(0x1144a)" identifier = (call_expression "FUN_00129d5f(0x1144a)" identifier (argument_list "(0x1144a)" ( number_literal )))) ;) (goto_statement "goto LAB_0014b10c;" goto statement_identifier ;) })) (expression_statement "lVar7 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar7 = *(long *)(param_1 + 0x18)" identifier = (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" if (parenthesized_expression "(param_2 == (undefined1 *)0x0)" ( (binary_expression "param_2 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }" { (expression_statement "local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);" (assignment_expression "local_38 = (undefined1 *)FUN_001143ea(param_1,param_3)" identifier = (cast_expression "(undefined1 *)FUN_001143ea(param_1,param_3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001143ea(param_1,param_3)" identifier (argument_list "(param_1,param_3)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" else (compound_statement "{\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" { (expression_statement "lVar3 = *(long *)(param_2 + 0x70);" (assignment_expression "lVar3 = *(long *)(param_2 + 0x70)" identifier = (pointer_expression "*(long *)(param_2 + 0x70)" * (cast_expression "(long *)(param_2 + 0x70)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x70)" ( (binary_expression "param_2 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "psVar1 = (short *)(lVar3 + 0x36);" (assignment_expression "psVar1 = (short *)(lVar3 + 0x36)" identifier = (cast_expression "(short *)(lVar3 + 0x36)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x36)" ( (binary_expression "lVar3 + 0x36" identifier + number_literal) )))) ;) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" * identifier) = (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" * identifier) + number_literal)) ;) (expression_statement "piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);" (assignment_expression "piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18)" identifier = (cast_expression "(int *)(*(long *)(lVar3 + 0x18) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar3 + 0x18) + 0x18)" ( (binary_expression "*(long *)(lVar3 + 0x18) + 0x18" (pointer_expression "*(long *)(lVar3 + 0x18)" * (cast_expression "(long *)(lVar3 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x18)" ( (binary_expression "lVar3 + 0x18" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + 1;" (assignment_expression "*piVar2 = *piVar2 + 1" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + 1" (pointer_expression "*piVar2" * identifier) + number_literal)) ;) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" identifier = identifier) ;) }))) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(lVar7 + 0x70))" identifier (argument_list "(*(undefined8 *)(lVar7 + 0x70))" ( (pointer_expression "*(undefined8 *)(lVar7 + 0x70)" * (cast_expression "(undefined8 *)(lVar7 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x70)" ( (binary_expression "lVar7 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(local_44 == 0)" ( (binary_expression "local_44 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);" (assignment_expression "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" identifier = (pointer_expression "*(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" * (cast_expression "(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x50) + 0x24)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x24" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (expression_statement "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);" (call_expression "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1)" identifier (argument_list "(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x24" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) , (binary_expression "uVar8 + 1" identifier + number_literal) ))) ;) (if_statement "if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }" if (parenthesized_expression "((*(byte *)(param_1 + 0x28) & 4) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x28) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x28) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x28) & 4" (pointer_expression "*(byte *)(param_1 + 0x28)" * (cast_expression "(byte *)(param_1 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }" { (if_statement "if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }" if (parenthesized_expression "(local_38 == (undefined1 *)0x0)" ( (binary_expression "local_38 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }" { (expression_statement "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);" (assignment_expression "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0)" identifier = (call_expression "FUN_0010f088(param_1,param_3,&local_38,0)" identifier (argument_list "(param_1,param_3,&local_38,0)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , number_literal )))) ;) (if_statement "if (uVar4 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) })) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier (argument_list "(*(undefined8 *)(local_38 + 0x70))" ( (pointer_expression "*(undefined8 *)(local_38 + 0x70)" * (cast_expression "(undefined8 *)(local_38 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x70)" ( (binary_expression "local_38 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));" (call_expression "memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34))" identifier (argument_list "(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34))" ( (pointer_expression "*(void **)(local_38 + 0x50)" * (cast_expression "(void **)(local_38 + 0x50)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_38 + 0x50)" ( (binary_expression "local_38 + 0x50" identifier + number_literal) )))) , number_literal , (binary_expression "(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(*(long *)(local_38 + 0x48) + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_38 + 0x48) + 0x34)" ( (binary_expression "*(long *)(local_38 + 0x48) + 0x34" (pointer_expression "*(long *)(local_38 + 0x48)" * (cast_expression "(long *)(local_38 + 0x48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x48)" ( (binary_expression "local_38 + 0x48" identifier + number_literal) )))) + number_literal) )))) ))) ;) })) (if_statement "if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0))" ( (binary_expression "(*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x21) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x21) == '\0'" (pointer_expression "*(char *)(param_1 + 0x21)" * (cast_expression "(char *)(param_1 + 0x21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)" ( (comma_expression "FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0" (call_expression "FUN_0014a35d(param_1,param_3,2,0,&local_44)" identifier (argument_list "(param_1,param_3,2,0,&local_44)" ( identifier , identifier , number_literal , number_literal , (pointer_expression "&local_44" & identifier) ))) , (comma_expression "uVar4 = local_44, local_44 == 0" (assignment_expression "uVar4 = local_44" identifier = identifier) , (binary_expression "local_44 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" { (if_statement "if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (labeled_statement "LAB_0014b33a:\n        local_44 = uVar4;" statement_identifier : (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" identifier = identifier) ;)) (if_statement "if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }" if (parenthesized_expression "(local_38 == (undefined1 *)0x0)" ( (binary_expression "local_38 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }" { (expression_statement "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);" (assignment_expression "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0)" identifier = (call_expression "FUN_0010f088(param_1,param_3,&local_38,0)" identifier (argument_list "(param_1,param_3,&local_38,0)" ( identifier , identifier , (pointer_expression "&local_38" & identifier) , number_literal )))) ;) (if_statement "if (uVar4 != 0) goto LAB_0014b0db;" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;)) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) })) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(local_38 + 0x70))" identifier (argument_list "(*(undefined8 *)(local_38 + 0x70))" ( (pointer_expression "*(undefined8 *)(local_38 + 0x70)" * (cast_expression "(undefined8 *)(local_38 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x70)" ( (binary_expression "local_38 + 0x70" identifier + number_literal) )))) )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }" if (parenthesized_expression "(local_44 == 0)" ( (binary_expression "local_44 == 0" identifier == number_literal) )) (compound_statement "{\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }" { (expression_statement "FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);" (call_expression "FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8)" identifier (argument_list "(*(undefined8 *)(local_38 + 0x50),uVar8)" ( (pointer_expression "*(undefined8 *)(local_38 + 0x50)" * (cast_expression "(undefined8 *)(local_38 + 0x50)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x50)" ( (binary_expression "local_38 + 0x50" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);" (call_expression "FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0)" identifier (argument_list "(*(long *)(local_38 + 0x50) + 4,0)" ( (binary_expression "*(long *)(local_38 + 0x50) + 4" (pointer_expression "*(long *)(local_38 + 0x50)" * (cast_expression "(long *)(local_38 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x50)" ( (binary_expression "local_38 + 0x50" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);" (call_expression "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3)" identifier (argument_list "(*(long *)(lVar7 + 0x50) + 0x20,param_3)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x20" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) })) }) (else_clause "else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" else (compound_statement "{\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);" (assignment_expression "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" identifier = (pointer_expression "*(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" * (cast_expression "(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x50) + 0x20)" ( (binary_expression "*(long *)(lVar7 + 0x50) + 0x20" (pointer_expression "*(long *)(lVar7 + 0x50)" * (cast_expression "(long *)(lVar7 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x50)" ( (binary_expression "lVar7 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (if_statement "if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(*(uint *)(param_1 + 0x40) < uVar8)" ( (binary_expression "*(uint *)(param_1 + 0x40) < uVar8" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n          uVar4 = FUN_00129d5f(0x11479);\n        }" { (expression_statement "uVar4 = FUN_00129d5f(0x11479);" (assignment_expression "uVar4 = FUN_00129d5f(0x11479)" identifier = (call_expression "FUN_00129d5f(0x11479)" identifier (argument_list "(0x11479)" ( number_literal )))) ;) }) (else_clause "else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" else (compound_statement "{\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" { (expression_statement "local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);" (assignment_expression "local_44 = FUN_0010f088(param_1,uVar8,&local_40,0)" identifier = (call_expression "FUN_0010f088(param_1,uVar8,&local_40,0)" identifier (argument_list "(param_1,uVar8,&local_40,0)" ( identifier , identifier , (pointer_expression "&local_40" & identifier) , number_literal )))) ;) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" identifier = identifier) ;) (if_statement "if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }" if (parenthesized_expression "(local_44 == 0)" ( (binary_expression "local_44 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }" { (expression_statement "uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);" (assignment_expression "uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4)" identifier = (pointer_expression "*(uint *)(*(long *)(local_40 + 0x50) + 4)" * (cast_expression "(uint *)(*(long *)(local_40 + 0x50) + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(local_40 + 0x50) + 4)" ( (binary_expression "*(long *)(local_40 + 0x50) + 4" (pointer_expression "*(long *)(local_40 + 0x50)" * (cast_expression "(long *)(local_40 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x50)" ( (binary_expression "local_40 + 0x50" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" identifier = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar5 = *(uint *)(param_1 + 0x38) >> 2;" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x38) >> 2" identifier = (binary_expression "*(uint *)(param_1 + 0x38) >> 2" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) >> number_literal)) ;) (if_statement "if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" if (parenthesized_expression "(uVar5 - 2 < uVar9)" ( (binary_expression "uVar5 - 2 < uVar9" (binary_expression "uVar5 - 2" identifier - number_literal) < identifier) )) (compound_statement "{\n              uVar4 = FUN_00129d5f(0x11484);\n            }" { (expression_statement "uVar4 = FUN_00129d5f(0x11484);" (assignment_expression "uVar4 = FUN_00129d5f(0x11484)" identifier = (call_expression "FUN_00129d5f(0x11484)" identifier (argument_list "(0x11484)" ( number_literal )))) ;) }) (else_clause "else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" else (compound_statement "{\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;" if (parenthesized_expression "(uVar5 - 8 <= uVar9)" ( (binary_expression "uVar5 - 8 <= uVar9" (binary_expression "uVar5 - 8" identifier - number_literal) <= identifier) )) (goto_statement "goto LAB_0014b33a;" goto statement_identifier ;)) (expression_statement "uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));" (assignment_expression "uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70))" identifier = (call_expression "FUN_00146893(*(undefined8 *)(local_40 + 0x70))" identifier (argument_list "(*(undefined8 *)(local_40 + 0x70))" ( (pointer_expression "*(undefined8 *)(local_40 + 0x70)" * (cast_expression "(undefined8 *)(local_40 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x70)" ( (binary_expression "local_40 + 0x70" identifier + number_literal) )))) )))) ;) (if_statement "if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }" { (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" identifier = identifier) ;) (expression_statement "FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);" (call_expression "FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1)" identifier (argument_list "(*(long *)(local_40 + 0x50) + 4,uVar9 + 1)" ( (binary_expression "*(long *)(local_40 + 0x50) + 4" (pointer_expression "*(long *)(local_40 + 0x50)" * (cast_expression "(long *)(local_40 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x50)" ( (binary_expression "local_40 + 0x50" identifier + number_literal) )))) + number_literal) , (binary_expression "uVar9 + 1" identifier + number_literal) ))) ;) (expression_statement "FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);" (call_expression "FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3)" identifier (argument_list "((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3)" ( (binary_expression "(ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50)" (call_expression "(ulong)(uVar9 * 4 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar9 * 4 + 8)" ( (binary_expression "uVar9 * 4 + 8" (binary_expression "uVar9 * 4" identifier * number_literal) + number_literal) ))) + (pointer_expression "*(long *)(local_40 + 0x50)" * (cast_expression "(long *)(local_40 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 0x50)" ( (binary_expression "local_40 + 0x50" identifier + number_literal) ))))) , identifier ))) ;) (if_statement "if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }" if (parenthesized_expression "((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0))" ( (binary_expression "(local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)" (parenthesized_expression "(local_38 != (undefined1 *)0x0)" ( (binary_expression "local_38 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((*(byte *)(param_1 + 0x28) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1 + 0x28) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x28) & 4)" ( (binary_expression "*(byte *)(param_1 + 0x28) & 4" (pointer_expression "*(byte *)(param_1 + 0x28)" * (cast_expression "(byte *)(param_1 + 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }" { (expression_statement "lVar7 = *(long *)(local_38 + 0x70);" (assignment_expression "lVar7 = *(long *)(local_38 + 0x70)" identifier = (pointer_expression "*(long *)(local_38 + 0x70)" * (cast_expression "(long *)(local_38 + 0x70)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_38 + 0x70)" ( (binary_expression "local_38 + 0x70" identifier + number_literal) ))))) ;) (if_statement "if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }" if (parenthesized_expression "((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0))))" ( (binary_expression "(*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))" (parenthesized_expression "(*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0')" ( (binary_expression "*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0'" (pointer_expression "*(char *)(*(long *)(lVar7 + 0x28) + 0x10)" * (cast_expression "(char *)(*(long *)(lVar7 + 0x28) + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x28) + 0x10)" ( (binary_expression "*(long *)(lVar7 + 0x28) + 0x10" (pointer_expression "*(long *)(lVar7 + 0x28)" * (cast_expression "(long *)(lVar7 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x28)" ( (binary_expression "lVar7 + 0x28" identifier + number_literal) )))) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))" ( (parenthesized_expression "((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0))" ( (binary_expression "(*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)" (binary_expression "(*(ushort *)(lVar7 + 0x34) & 2) != 0" (parenthesized_expression "(*(ushort *)(lVar7 + 0x34) & 2)" ( (binary_expression "*(ushort *)(lVar7 + 0x34) & 2" (pointer_expression "*(ushort *)(lVar7 + 0x34)" * (cast_expression "(ushort *)(lVar7 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x34)" ( (binary_expression "lVar7 + 0x34" identifier + number_literal) )))) & number_literal) )) != number_literal) && (parenthesized_expression "(*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)" ( (binary_expression "*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0" (pointer_expression "*(int *)(*(long *)(lVar7 + 0x28) + 0x80)" * (cast_expression "(int *)(*(long *)(lVar7 + 0x28) + 0x80)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar7 + 0x28) + 0x80)" ( (binary_expression "*(long *)(lVar7 + 0x28) + 0x80" (pointer_expression "*(long *)(lVar7 + 0x28)" * (cast_expression "(long *)(lVar7 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x28)" ( (binary_expression "lVar7 + 0x28" identifier + number_literal) )))) + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }" { (expression_statement "*(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;" (assignment_expression "*(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10" (pointer_expression "*(ushort *)(lVar7 + 0x34)" * (cast_expression "(ushort *)(lVar7 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x34)" ( (binary_expression "lVar7 + 0x34" identifier + number_literal) )))) = (binary_expression "*(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10" (binary_expression "*(ushort *)(lVar7 + 0x34) & 0xfffb" (pointer_expression "*(ushort *)(lVar7 + 0x34)" * (cast_expression "(ushort *)(lVar7 + 0x34)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x34)" ( (binary_expression "lVar7 + 0x34" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) })) (if_statement "if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" if (parenthesized_expression "(*(long *)(param_1 + 0x60) == 0)" ( (binary_expression "*(long *)(param_1 + 0x60) == 0" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" { (expression_statement "lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));" (assignment_expression "lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40))" identifier = (call_expression "FUN_0011d296(*(undefined4 *)(param_1 + 0x40))" identifier (argument_list "(*(undefined4 *)(param_1 + 0x40))" ( (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) )))) ;) (expression_statement "*(long *)(param_1 + 0x60) = lVar7;" (assignment_expression "*(long *)(param_1 + 0x60) = lVar7" (pointer_expression "*(long *)(param_1 + 0x60)" * (cast_expression "(long *)(param_1 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }" { (expression_statement "uVar4 = 7;" (assignment_expression "uVar4 = 7" identifier = number_literal) ;) (goto_statement "goto LAB_0014b0db;" goto statement_identifier ;) })) })) (if_statement "if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }" if (parenthesized_expression "(param_3 <= **(uint **)(param_1 + 0x60))" ( (binary_expression "param_3 <= **(uint **)(param_1 + 0x60)" identifier <= (pointer_expression "**(uint **)(param_1 + 0x60)" * (pointer_expression "*(uint **)(param_1 + 0x60)" * (cast_expression "(uint **)(param_1 + 0x60)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))))) )) (compound_statement "{\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }" { (expression_statement "uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);" (assignment_expression "uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3)" identifier = (call_expression "FUN_00123346(*(uint **)(param_1 + 0x60),param_3)" identifier (argument_list "(*(uint **)(param_1 + 0x60),param_3)" ( (pointer_expression "*(uint **)(param_1 + 0x60)" * (cast_expression "(uint **)(param_1 + 0x60)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) , identifier )))) ;) })) })) }))) })) }))) }))) })) })) (labeled_statement "LAB_0014b0db:\n  local_44 = uVar4;" statement_identifier : (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" identifier = identifier) ;)) (if_statement "if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }" if (parenthesized_expression "(local_38 != (undefined1 *)0x0)" ( (binary_expression "local_38 != (undefined1 *)0x0" identifier != (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *local_38 = 0;\n  }" { (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" * identifier) = number_literal) ;) })) (expression_statement "FUN_0010f151(local_38);" (call_expression "FUN_0010f151(local_38)" identifier (argument_list "(local_38)" ( identifier ))) ;) (expression_statement "FUN_0010f151(local_40);" (call_expression "FUN_0010f151(local_40)" identifier (argument_list "(local_40)" ( identifier ))) ;) (expression_statement "uVar6 = (ulong)local_44;" (assignment_expression "uVar6 = (ulong)local_44" identifier = (cast_expression "(ulong)local_44" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (labeled_statement "LAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_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))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression 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) )))) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 ( (comma_expression (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , (pointer_expression & IDENT) ))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_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))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * LIT) + LIT) ))) + (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) })) })) }))) })) }))) }))) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "ulong FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)\n\n{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar6;\n}" (type_identifier "ulong") (function_declarator "FUN_0014b076(long param_1,undefined1 *param_2,uint param_3)" (identifier "FUN_0014b076") (parameter_list "(long param_1,undefined1 *param_2,uint param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  short *psVar1;\n  int *piVar2;\n  long lVar3;\n  uint uVar4;\n  uint uVar5;\n  ulong uVar6;\n  long lVar7;\n  uint uVar8;\n  uint uVar9;\n  long in_FS_OFFSET;\n  uint local_44;\n  long local_40;\n  undefined1 *local_38;\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  local_40 = 0;\n  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }\n  lVar7 = *(long *)(param_1 + 0x18);\n  if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }\n  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));\n  uVar4 = local_44;\n  if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\nLAB_0014b0db:\n  local_44 = uVar4;\n  if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }\n  FUN_0010f151(local_38);\n  FUN_0010f151(local_40);\n  uVar6 = (ulong)local_44;\nLAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar6;\n}" ({ "{") (declaration "short *psVar1;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar1" (* "*") (identifier "psVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (declaration "undefined1 *local_38;" (type_identifier "undefined1") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "long local_30;" (sized_type_specifier "long" (long "long")) (identifier "local_30") (; ";")) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }" (if "if") (parenthesized_expression "((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3))" (( "(") (binary_expression "(param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)" (parenthesized_expression "(param_3 < 2)" (( "(") (binary_expression "param_3 < 2" (identifier "param_3") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(param_1 + 0x40) < param_3)" (( "(") (binary_expression "*(uint *)(param_1 + 0x40) < param_3" (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (< "<") (identifier "param_3")) () ")"))) () ")")) (compound_statement "{\n    uVar6 = FUN_00129d5f(0x1144a);\n    goto LAB_0014b10c;\n  }" ({ "{") (expression_statement "uVar6 = FUN_00129d5f(0x1144a);" (assignment_expression "uVar6 = FUN_00129d5f(0x1144a)" (identifier "uVar6") (= "=") (call_expression "FUN_00129d5f(0x1144a)" (identifier "FUN_00129d5f") (argument_list "(0x1144a)" (( "(") (number_literal "0x1144a") () ")")))) (; ";")) (goto_statement "goto LAB_0014b10c;" (goto "goto") (statement_identifier "LAB_0014b10c") (; ";")) (} "}"))) (expression_statement "lVar7 = *(long *)(param_1 + 0x18);" (assignment_expression "lVar7 = *(long *)(param_1 + 0x18)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (param_2 == (undefined1 *)0x0) {\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }\n  else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" (if "if") (parenthesized_expression "(param_2 == (undefined1 *)0x0)" (( "(") (binary_expression "param_2 == (undefined1 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);\n  }" ({ "{") (expression_statement "local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);" (assignment_expression "local_38 = (undefined1 *)FUN_001143ea(param_1,param_3)" (identifier "local_38") (= "=") (cast_expression "(undefined1 *)FUN_001143ea(param_1,param_3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001143ea(param_1,param_3)" (identifier "FUN_001143ea") (argument_list "(param_1,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" (else "else") (compound_statement "{\n    lVar3 = *(long *)(param_2 + 0x70);\n    psVar1 = (short *)(lVar3 + 0x36);\n    *psVar1 = *psVar1 + 1;\n    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);\n    *piVar2 = *piVar2 + 1;\n    local_38 = param_2;\n  }" ({ "{") (expression_statement "lVar3 = *(long *)(param_2 + 0x70);" (assignment_expression "lVar3 = *(long *)(param_2 + 0x70)" (identifier "lVar3") (= "=") (pointer_expression "*(long *)(param_2 + 0x70)" (* "*") (cast_expression "(long *)(param_2 + 0x70)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x70)" (( "(") (binary_expression "param_2 + 0x70" (identifier "param_2") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "psVar1 = (short *)(lVar3 + 0x36);" (assignment_expression "psVar1 = (short *)(lVar3 + 0x36)" (identifier "psVar1") (= "=") (cast_expression "(short *)(lVar3 + 0x36)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x36)" (( "(") (binary_expression "lVar3 + 0x36" (identifier "lVar3") (+ "+") (number_literal "0x36")) () ")")))) (; ";")) (expression_statement "*psVar1 = *psVar1 + 1;" (assignment_expression "*psVar1 = *psVar1 + 1" (pointer_expression "*psVar1" (* "*") (identifier "psVar1")) (= "=") (binary_expression "*psVar1 + 1" (pointer_expression "*psVar1" (* "*") (identifier "psVar1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);" (assignment_expression "piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18)" (identifier "piVar2") (= "=") (cast_expression "(int *)(*(long *)(lVar3 + 0x18) + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar3 + 0x18) + 0x18)" (( "(") (binary_expression "*(long *)(lVar3 + 0x18) + 0x18" (pointer_expression "*(long *)(lVar3 + 0x18)" (* "*") (cast_expression "(long *)(lVar3 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x18)" (( "(") (binary_expression "lVar3 + 0x18" (identifier "lVar3") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*piVar2 = *piVar2 + 1;" (assignment_expression "*piVar2 = *piVar2 + 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (binary_expression "*piVar2 + 1" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_38 = param_2;" (assignment_expression "local_38 = param_2" (identifier "local_38") (= "=") (identifier "param_2")) (; ";")) (} "}")))) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70))" (identifier "local_44") (= "=") (call_expression "FUN_00146893(*(undefined8 *)(lVar7 + 0x70))" (identifier "FUN_00146893") (argument_list "(*(undefined8 *)(lVar7 + 0x70))" (( "(") (pointer_expression "*(undefined8 *)(lVar7 + 0x70)" (* "*") (cast_expression "(undefined8 *)(lVar7 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x70)" (( "(") (binary_expression "lVar7 + 0x70" (identifier "lVar7") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (local_44 == 0) {\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "(local_44 == 0)" (( "(") (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);\n    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);\n    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }\n    if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);" (assignment_expression "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" (* "*") (cast_expression "(uint *)(*(long *)(lVar7 + 0x50) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar7 + 0x50) + 0x24)" (( "(") (binary_expression "*(long *)(lVar7 + 0x50) + 0x24" (pointer_expression "*(long *)(lVar7 + 0x50)" (* "*") (cast_expression "(long *)(lVar7 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x50)" (( "(") (binary_expression "lVar7 + 0x50" (identifier "lVar7") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (identifier "uVar8") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);" (call_expression "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1)" (identifier "FUN_0011657b") (argument_list "(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1)" (( "(") (binary_expression "*(long *)(lVar7 + 0x50) + 0x24" (pointer_expression "*(long *)(lVar7 + 0x50)" (* "*") (cast_expression "(long *)(lVar7 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x50)" (( "(") (binary_expression "lVar7 + 0x50" (identifier "lVar7") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0x24")) (, ",") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1")) () ")"))) (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x28) & 4) != 0) {\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x28) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x28) & 4) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x28) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x28) & 4" (pointer_expression "*(byte *)(param_1 + 0x28)" (* "*") (cast_expression "(byte *)(param_1 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }\n      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n      uVar4 = local_44;\n      if (local_44 != 0) goto LAB_0014b0db;\n      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));\n    }" ({ "{") (if_statement "if (local_38 == (undefined1 *)0x0) {\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }" (if "if") (parenthesized_expression "(local_38 == (undefined1 *)0x0)" (( "(") (binary_expression "local_38 == (undefined1 *)0x0" (identifier "local_38") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n        if (uVar4 != 0) goto LAB_0014b0db;\n        local_44 = 0;\n      }" ({ "{") (expression_statement "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);" (assignment_expression "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0)" (identifier "uVar4") (= "=") (call_expression "FUN_0010f088(param_1,param_3,&local_38,0)" (identifier "FUN_0010f088") (argument_list "(param_1,param_3,&local_38,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (uVar4 != 0) goto LAB_0014b0db;" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0014b0db;" (goto "goto") (statement_identifier "LAB_0014b0db") (; ";"))) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70))" (identifier "local_44") (= "=") (call_expression "FUN_00146893(*(undefined8 *)(local_38 + 0x70))" (identifier "FUN_00146893") (argument_list "(*(undefined8 *)(local_38 + 0x70))" (( "(") (pointer_expression "*(undefined8 *)(local_38 + 0x70)" (* "*") (cast_expression "(undefined8 *)(local_38 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x70)" (( "(") (binary_expression "local_38 + 0x70" (identifier "local_38") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (local_44 != 0) goto LAB_0014b0db;" (if "if") (parenthesized_expression "(local_44 != 0)" (( "(") (binary_expression "local_44 != 0" (identifier "local_44") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0014b0db;" (goto "goto") (statement_identifier "LAB_0014b0db") (; ";"))) (expression_statement "memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));" (call_expression "memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34))" (identifier "memset") (argument_list "(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34))" (( "(") (pointer_expression "*(void **)(local_38 + 0x50)" (* "*") (cast_expression "(void **)(local_38 + 0x50)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_38 + 0x50)" (( "(") (binary_expression "local_38 + 0x50" (identifier "local_38") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (number_literal "0") (, ",") (binary_expression "(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(*(long *)(local_38 + 0x48) + 0x34)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(local_38 + 0x48) + 0x34)" (( "(") (binary_expression "*(long *)(local_38 + 0x48) + 0x34" (pointer_expression "*(long *)(local_38 + 0x48)" (* "*") (cast_expression "(long *)(local_38 + 0x48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x48)" (( "(") (binary_expression "local_38 + 0x48" (identifier "local_38") (+ "+") (number_literal "0x48")) () ")")))) (+ "+") (number_literal "0x34")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0))" (( "(") (binary_expression "(*(char *)(param_1 + 0x21) == '\0') ||\n       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x21) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x21) == '\0'" (pointer_expression "*(char *)(param_1 + 0x21)" (* "*") (cast_expression "(char *)(param_1 + 0x21)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21)" (( "(") (binary_expression "param_1 + 0x21" (identifier "param_1") (+ "+") (number_literal "0x21")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)" (( "(") (comma_expression "FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0" (call_expression "FUN_0014a35d(param_1,param_3,2,0,&local_44)" (identifier "FUN_0014a35d") (argument_list "(param_1,param_3,2,0,&local_44)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "2") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")"))) (, ",") (comma_expression "uVar4 = local_44, local_44 == 0" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (, ",") (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n      if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }\n    }" ({ "{") (if_statement "if (uVar8 == 0) {\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }\n      else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar8 = 0;\n        uVar4 = local_44;\nLAB_0014b33a:\n        local_44 = uVar4;\n        if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }\n        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));\n        uVar4 = local_44;\n        if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }\n      }" ({ "{") (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (; ";")) (labeled_statement "LAB_0014b33a:\n        local_44 = uVar4;" (statement_identifier "LAB_0014b33a") (: ":") (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" (identifier "local_44") (= "=") (identifier "uVar4")) (; ";"))) (if_statement "if (local_38 == (undefined1 *)0x0) {\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }" (if "if") (parenthesized_expression "(local_38 == (undefined1 *)0x0)" (( "(") (binary_expression "local_38 == (undefined1 *)0x0" (identifier "local_38") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);\n          if (uVar4 != 0) goto LAB_0014b0db;\n          local_44 = 0;\n        }" ({ "{") (expression_statement "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);" (assignment_expression "uVar4 = FUN_0010f088(param_1,param_3,&local_38,0)" (identifier "uVar4") (= "=") (call_expression "FUN_0010f088(param_1,param_3,&local_38,0)" (identifier "FUN_0010f088") (argument_list "(param_1,param_3,&local_38,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (uVar4 != 0) goto LAB_0014b0db;" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0014b0db;" (goto "goto") (statement_identifier "LAB_0014b0db") (; ";"))) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));" (assignment_expression "local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70))" (identifier "local_44") (= "=") (call_expression "FUN_00146893(*(undefined8 *)(local_38 + 0x70))" (identifier "FUN_00146893") (argument_list "(*(undefined8 *)(local_38 + 0x70))" (( "(") (pointer_expression "*(undefined8 *)(local_38 + 0x70)" (* "*") (cast_expression "(undefined8 *)(local_38 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x70)" (( "(") (binary_expression "local_38 + 0x70" (identifier "local_38") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (local_44 == 0) {\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }" (if "if") (parenthesized_expression "(local_44 == 0)" (( "(") (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);\n          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);\n          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);\n          uVar4 = local_44;\n        }" ({ "{") (expression_statement "FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);" (call_expression "FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8)" (identifier "FUN_0011657b") (argument_list "(*(undefined8 *)(local_38 + 0x50),uVar8)" (( "(") (pointer_expression "*(undefined8 *)(local_38 + 0x50)" (* "*") (cast_expression "(undefined8 *)(local_38 + 0x50)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x50)" (( "(") (binary_expression "local_38 + 0x50" (identifier "local_38") (+ "+") (number_literal "0x50")) () ")")))) (, ",") (identifier "uVar8") () ")"))) (; ";")) (expression_statement "FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);" (call_expression "FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0)" (identifier "FUN_0011657b") (argument_list "(*(long *)(local_38 + 0x50) + 4,0)" (( "(") (binary_expression "*(long *)(local_38 + 0x50) + 4" (pointer_expression "*(long *)(local_38 + 0x50)" (* "*") (cast_expression "(long *)(local_38 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x50)" (( "(") (binary_expression "local_38 + 0x50" (identifier "local_38") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "4")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);" (call_expression "FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3)" (identifier "FUN_0011657b") (argument_list "(*(long *)(lVar7 + 0x50) + 0x20,param_3)" (( "(") (binary_expression "*(long *)(lVar7 + 0x50) + 0x20" (pointer_expression "*(long *)(lVar7 + 0x50)" (* "*") (cast_expression "(long *)(lVar7 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x50)" (( "(") (binary_expression "lVar7 + 0x50" (identifier "lVar7") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0x20")) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" (else "else") (compound_statement "{\n        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);\n        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n        if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);" (assignment_expression "uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" (* "*") (cast_expression "(uint *)(*(long *)(lVar7 + 0x50) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar7 + 0x50) + 0x20)" (( "(") (binary_expression "*(long *)(lVar7 + 0x50) + 0x20" (pointer_expression "*(long *)(lVar7 + 0x50)" (* "*") (cast_expression "(long *)(lVar7 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x50)" (( "(") (binary_expression "lVar7 + 0x50" (identifier "lVar7") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (identifier "uVar8") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (*(uint *)(param_1 + 0x40) < uVar8) {\n          uVar4 = FUN_00129d5f(0x11479);\n        }\n        else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x40) < uVar8)" (( "(") (binary_expression "*(uint *)(param_1 + 0x40) < uVar8" (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n          uVar4 = FUN_00129d5f(0x11479);\n        }" ({ "{") (expression_statement "uVar4 = FUN_00129d5f(0x11479);" (assignment_expression "uVar4 = FUN_00129d5f(0x11479)" (identifier "uVar4") (= "=") (call_expression "FUN_00129d5f(0x11479)" (identifier "FUN_00129d5f") (argument_list "(0x11479)" (( "(") (number_literal "0x11479") () ")")))) (; ";")) (} "}")) (else_clause "else {\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" (else "else") (compound_statement "{\n          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);\n          uVar4 = local_44;\n          if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);" (assignment_expression "local_44 = FUN_0010f088(param_1,uVar8,&local_40,0)" (identifier "local_44") (= "=") (call_expression "FUN_0010f088(param_1,uVar8,&local_40,0)" (identifier "FUN_0010f088") (argument_list "(param_1,uVar8,&local_40,0)" (( "(") (identifier "param_1") (, ",") (identifier "uVar8") (, ",") (pointer_expression "&local_40" (& "&") (identifier "local_40")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar4 = local_44;" (assignment_expression "uVar4 = local_44" (identifier "uVar4") (= "=") (identifier "local_44")) (; ";")) (if_statement "if (local_44 == 0) {\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }" (if "if") (parenthesized_expression "(local_44 == 0)" (( "(") (binary_expression "local_44 == 0" (identifier "local_44") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);\n            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;\n            uVar5 = *(uint *)(param_1 + 0x38) >> 2;\n            if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }\n          }" ({ "{") (expression_statement "uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);" (assignment_expression "uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(*(long *)(local_40 + 0x50) + 4)" (* "*") (cast_expression "(uint *)(*(long *)(local_40 + 0x50) + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(local_40 + 0x50) + 4)" (( "(") (binary_expression "*(long *)(local_40 + 0x50) + 4" (pointer_expression "*(long *)(local_40 + 0x50)" (* "*") (cast_expression "(long *)(local_40 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x50)" (( "(") (binary_expression "local_40 + 0x50" (identifier "local_40") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;" (assignment_expression "uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (identifier "uVar9") (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 << 0x18" (identifier "uVar4") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar5 = *(uint *)(param_1 + 0x38) >> 2;" (assignment_expression "uVar5 = *(uint *)(param_1 + 0x38) >> 2" (identifier "uVar5") (= "=") (binary_expression "*(uint *)(param_1 + 0x38) >> 2" (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (uVar5 - 2 < uVar9) {\n              uVar4 = FUN_00129d5f(0x11484);\n            }\n            else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" (if "if") (parenthesized_expression "(uVar5 - 2 < uVar9)" (( "(") (binary_expression "uVar5 - 2 < uVar9" (binary_expression "uVar5 - 2" (identifier "uVar5") (- "-") (number_literal "2")) (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n              uVar4 = FUN_00129d5f(0x11484);\n            }" ({ "{") (expression_statement "uVar4 = FUN_00129d5f(0x11484);" (assignment_expression "uVar4 = FUN_00129d5f(0x11484)" (identifier "uVar4") (= "=") (call_expression "FUN_00129d5f(0x11484)" (identifier "FUN_00129d5f") (argument_list "(0x11484)" (( "(") (number_literal "0x11484") () ")")))) (; ";")) (} "}")) (else_clause "else {\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" (else "else") (compound_statement "{\n              uVar4 = 0;\n              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;\n              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));\n              if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }\n            }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;" (if "if") (parenthesized_expression "(uVar5 - 8 <= uVar9)" (( "(") (binary_expression "uVar5 - 8 <= uVar9" (binary_expression "uVar5 - 8" (identifier "uVar5") (- "-") (number_literal "8")) (<= "<=") (identifier "uVar9")) () ")")) (goto_statement "goto LAB_0014b33a;" (goto "goto") (statement_identifier "LAB_0014b33a") (; ";"))) (expression_statement "uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));" (assignment_expression "uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70))" (identifier "uVar4") (= "=") (call_expression "FUN_00146893(*(undefined8 *)(local_40 + 0x70))" (identifier "FUN_00146893") (argument_list "(*(undefined8 *)(local_40 + 0x70))" (( "(") (pointer_expression "*(undefined8 *)(local_40 + 0x70)" (* "*") (cast_expression "(undefined8 *)(local_40 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x70)" (( "(") (binary_expression "local_40 + 0x70" (identifier "local_40") (+ "+") (number_literal "0x70")) () ")")))) () ")")))) (; ";")) (if_statement "if (uVar4 == 0) {\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_44 = uVar4;\n                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);\n                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);\n                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }\n                if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }\n                if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }\n              }" ({ "{") (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" (identifier "local_44") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);" (call_expression "FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1)" (identifier "FUN_0011657b") (argument_list "(*(long *)(local_40 + 0x50) + 4,uVar9 + 1)" (( "(") (binary_expression "*(long *)(local_40 + 0x50) + 4" (pointer_expression "*(long *)(local_40 + 0x50)" (* "*") (cast_expression "(long *)(local_40 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x50)" (( "(") (binary_expression "local_40 + 0x50" (identifier "local_40") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "4")) (, ",") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);" (call_expression "FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3)" (identifier "FUN_0011657b") (argument_list "((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3)" (( "(") (binary_expression "(ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50)" (call_expression "(ulong)(uVar9 * 4 + 8)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar9 * 4 + 8)" (( "(") (binary_expression "uVar9 * 4 + 8" (binary_expression "uVar9 * 4" (identifier "uVar9") (* "*") (number_literal "4")) (+ "+") (number_literal "8")) () ")"))) (+ "+") (pointer_expression "*(long *)(local_40 + 0x50)" (* "*") (cast_expression "(long *)(local_40 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 0x50)" (( "(") (binary_expression "local_40 + 0x50" (identifier "local_40") (+ "+") (number_literal "0x50")) () ")"))))) (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }" (if "if") (parenthesized_expression "((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0))" (( "(") (binary_expression "(local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)" (parenthesized_expression "(local_38 != (undefined1 *)0x0)" (( "(") (binary_expression "local_38 != (undefined1 *)0x0" (identifier "local_38") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_1 + 0x28) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x28) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1 + 0x28) & 4)" (( "(") (binary_expression "*(byte *)(param_1 + 0x28) & 4" (pointer_expression "*(byte *)(param_1 + 0x28)" (* "*") (cast_expression "(byte *)(param_1 + 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                  lVar7 = *(long *)(local_38 + 0x70);\n                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }\n                }" ({ "{") (expression_statement "lVar7 = *(long *)(local_38 + 0x70);" (assignment_expression "lVar7 = *(long *)(local_38 + 0x70)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(local_38 + 0x70)" (* "*") (cast_expression "(long *)(local_38 + 0x70)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_38 + 0x70)" (( "(") (binary_expression "local_38 + 0x70" (identifier "local_38") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (if_statement "if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }" (if "if") (parenthesized_expression "((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0))))" (( "(") (binary_expression "(*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&\n                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))" (parenthesized_expression "(*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0')" (( "(") (binary_expression "*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0'" (pointer_expression "*(char *)(*(long *)(lVar7 + 0x28) + 0x10)" (* "*") (cast_expression "(char *)(*(long *)(lVar7 + 0x28) + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar7 + 0x28) + 0x10)" (( "(") (binary_expression "*(long *)(lVar7 + 0x28) + 0x10" (pointer_expression "*(long *)(lVar7 + 0x28)" (* "*") (cast_expression "(long *)(lVar7 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x28)" (( "(") (binary_expression "lVar7 + 0x28" (identifier "lVar7") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))" (( "(") (parenthesized_expression "((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0))" (( "(") (binary_expression "(*(ushort *)(lVar7 + 0x34) & 2) != 0 &&\n                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)" (binary_expression "(*(ushort *)(lVar7 + 0x34) & 2) != 0" (parenthesized_expression "(*(ushort *)(lVar7 + 0x34) & 2)" (( "(") (binary_expression "*(ushort *)(lVar7 + 0x34) & 2" (pointer_expression "*(ushort *)(lVar7 + 0x34)" (* "*") (cast_expression "(ushort *)(lVar7 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x34)" (( "(") (binary_expression "lVar7 + 0x34" (identifier "lVar7") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)" (( "(") (binary_expression "*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0" (pointer_expression "*(int *)(*(long *)(lVar7 + 0x28) + 0x80)" (* "*") (cast_expression "(int *)(*(long *)(lVar7 + 0x28) + 0x80)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar7 + 0x28) + 0x80)" (( "(") (binary_expression "*(long *)(lVar7 + 0x28) + 0x80" (pointer_expression "*(long *)(lVar7 + 0x28)" (* "*") (cast_expression "(long *)(lVar7 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x28)" (( "(") (binary_expression "lVar7 + 0x28" (identifier "lVar7") (+ "+") (number_literal "0x28")) () ")")))) (+ "+") (number_literal "0x80")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;\n                  }" ({ "{") (expression_statement "*(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;" (assignment_expression "*(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10" (pointer_expression "*(ushort *)(lVar7 + 0x34)" (* "*") (cast_expression "(ushort *)(lVar7 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x34)" (( "(") (binary_expression "lVar7 + 0x34" (identifier "lVar7") (+ "+") (number_literal "0x34")) () ")")))) (= "=") (binary_expression "*(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10" (binary_expression "*(ushort *)(lVar7 + 0x34) & 0xfffb" (pointer_expression "*(ushort *)(lVar7 + 0x34)" (* "*") (cast_expression "(ushort *)(lVar7 + 0x34)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x34)" (( "(") (binary_expression "lVar7 + 0x34" (identifier "lVar7") (+ "+") (number_literal "0x34")) () ")")))) (& "&") (number_literal "0xfffb")) (| "|") (number_literal "0x10"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if (*(long *)(param_1 + 0x60) == 0) {\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x60) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x60) == 0" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));\n                  *(long *)(param_1 + 0x60) = lVar7;\n                  if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }\n                }" ({ "{") (expression_statement "lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));" (assignment_expression "lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40))" (identifier "lVar7") (= "=") (call_expression "FUN_0011d296(*(undefined4 *)(param_1 + 0x40))" (identifier "FUN_0011d296") (argument_list "(*(undefined4 *)(param_1 + 0x40))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) () ")")))) (; ";")) (expression_statement "*(long *)(param_1 + 0x60) = lVar7;" (assignment_expression "*(long *)(param_1 + 0x60) = lVar7" (pointer_expression "*(long *)(param_1 + 0x60)" (* "*") (cast_expression "(long *)(param_1 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (identifier "lVar7")) (; ";")) (if_statement "if (lVar7 == 0) {\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar4 = 7;\n                    goto LAB_0014b0db;\n                  }" ({ "{") (expression_statement "uVar4 = 7;" (assignment_expression "uVar4 = 7" (identifier "uVar4") (= "=") (number_literal "7")) (; ";")) (goto_statement "goto LAB_0014b0db;" (goto "goto") (statement_identifier "LAB_0014b0db") (; ";")) (} "}"))) (} "}"))) (if_statement "if (param_3 <= **(uint **)(param_1 + 0x60)) {\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }" (if "if") (parenthesized_expression "(param_3 <= **(uint **)(param_1 + 0x60))" (( "(") (binary_expression "param_3 <= **(uint **)(param_1 + 0x60)" (identifier "param_3") (<= "<=") (pointer_expression "**(uint **)(param_1 + 0x60)" (* "*") (pointer_expression "*(uint **)(param_1 + 0x60)" (* "*") (cast_expression "(uint **)(param_1 + 0x60)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))))) () ")")) (compound_statement "{\n                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);\n                }" ({ "{") (expression_statement "uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);" (assignment_expression "uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3)" (identifier "uVar4") (= "=") (call_expression "FUN_00123346(*(uint **)(param_1 + 0x60),param_3)" (identifier "FUN_00123346") (argument_list "(*(uint **)(param_1 + 0x60),param_3)" (( "(") (pointer_expression "*(uint **)(param_1 + 0x60)" (* "*") (cast_expression "(uint **)(param_1 + 0x60)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (, ",") (identifier "param_3") () ")")))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (} "}"))) (} "}")))) (} "}")))) (} "}"))) (} "}"))) (labeled_statement "LAB_0014b0db:\n  local_44 = uVar4;" (statement_identifier "LAB_0014b0db") (: ":") (expression_statement "local_44 = uVar4;" (assignment_expression "local_44 = uVar4" (identifier "local_44") (= "=") (identifier "uVar4")) (; ";"))) (if_statement "if (local_38 != (undefined1 *)0x0) {\n    *local_38 = 0;\n  }" (if "if") (parenthesized_expression "(local_38 != (undefined1 *)0x0)" (( "(") (binary_expression "local_38 != (undefined1 *)0x0" (identifier "local_38") (!= "!=") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *local_38 = 0;\n  }" ({ "{") (expression_statement "*local_38 = 0;" (assignment_expression "*local_38 = 0" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "FUN_0010f151(local_38);" (call_expression "FUN_0010f151(local_38)" (identifier "FUN_0010f151") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (expression_statement "FUN_0010f151(local_40);" (call_expression "FUN_0010f151(local_40)" (identifier "FUN_0010f151") (argument_list "(local_40)" (( "(") (identifier "local_40") () ")"))) (; ";")) (expression_statement "uVar6 = (ulong)local_44;" (assignment_expression "uVar6 = (ulong)local_44" (identifier "uVar6") (= "=") (cast_expression "(ulong)local_44" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_44"))) (; ";")) (labeled_statement "LAB_0014b10c:\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_0014b10c") (: ":") (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}")))

int function_1(type_1 *pBt,type_2 *var_4,type_3 var_2)

{
  type_4 *piVar1;
  int *piVar2;
  type_2 *pMVar3;
  type_5 *pDVar4;
  int var_12;
  type_6 *var_18;
  type_7 var_8;
  type_8 var_15;
  type_7 var_16;
  long var_1;
  int var_7;
  type_2 *pTrunk;
  type_2 *var_10;
  long var_21;
  
  var_21 = *(long *)(var_1 + 0x28);
  pTrunk = (type_2 *)0x0;
  if ((var_2 < 2) || (pBt->nPage < var_2)) {
    var_12 = var_3(0x1144a);
    goto LAB_0014b10c;
  }
  pMVar3 = pBt->pPage1;
  if (var_4 == (type_2 *)0x0) {
    var_10 = var_5(pBt,var_2);
  }
  else {
    pDVar4 = var_4->pDbPage;
    piVar1 = &pDVar4->nRef;
    *piVar1 = *piVar1 + 1;
    piVar2 = &pDVar4->pCache->nRefSum;
    *piVar2 = *piVar2 + 1;
    var_10 = var_4;
  }
  var_7 = var_6(pMVar3->pDbPage);
  var_12 = var_7;
  if (var_7 == 0) {
    var_8 = *(type_7 *)(pMVar3->aData + 0x24);
    var_8 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
    var_9(pMVar3->aData + 0x24,var_8 + 1);
    if ((pBt->btsFlags & 4) != 0) {
      if (var_10 == (type_2 *)0x0) {
        var_12 = var_11(pBt,var_2,&var_10,0);
        if (var_12 != 0) goto LAB_0014b0db;
        var_7 = 0;
      }
      var_7 = var_6(var_10->pDbPage);
      var_12 = var_7;
      if (var_7 != 0) goto LAB_0014b0db;
      var_13(var_10->aData,0,(type_9)var_10->pBt->pageSize);
    }
    if ((pBt->autoVacuum == '\0') || (var_14(pBt,var_2,'\x02',0,&var_7), var_12 = var_7, var_7 == 0)) {
      if (var_8 == 0) {
        var_15 = 0;
        var_12 = var_7;
LAB_0014b33a:
        var_7 = var_12;
        if (var_10 == (type_2 *)0x0) {
          var_12 = var_11(pBt,var_2,&var_10,0);
          if (var_12 != 0) goto LAB_0014b0db;
          var_7 = 0;
        }
        var_7 = var_6(var_10->pDbPage);
        var_12 = var_7;
        if (var_7 == 0) {
          var_9(var_10->aData,var_15);
          var_9(var_10->aData + 4,0);
          var_9(pMVar3->aData + 0x20,var_2);
          var_12 = var_7;
        }
      }
      else {
        var_8 = *(type_7 *)(pMVar3->aData + 0x20);
        var_15 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
        if (pBt->nPage < var_15) {
          var_12 = var_3(0x11479);
        }
        else {
          var_7 = var_11(pBt,var_15,&pTrunk,0);
          var_12 = var_7;
          if (var_7 == 0) {
            var_8 = *(type_7 *)(pTrunk->aData + 4);
            var_16 = var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 | var_8 << 0x18;
            var_8 = pBt->usableSize >> 2;
            if (var_8 - 2 < var_16) {
              var_12 = var_3(0x11484);
            }
            else {
              var_12 = 0;
              if (var_8 - 8 <= var_16) goto LAB_0014b33a;
              var_12 = var_6(pTrunk->pDbPage);
              if (var_12 == 0) {
                var_7 = var_12;
                var_9(pTrunk->aData + 4,var_16 + 1);
                var_9(pTrunk->aData + (var_16 * 4 + 8),var_2);
                if ((var_10 != (type_2 *)0x0) && ((pBt->btsFlags & 4) == 0)) {
                  pDVar4 = var_10->pDbPage;
                  if ((pDVar4->pPager->tempFile == '\0') &&
                     (((pDVar4->flags & 2) != 0 && (pDVar4->pPager->nSavepoint == 0)))) {
                    pDVar4->flags = pDVar4->flags & 0xfffb | 0x10;
                  }
                }
                if (pBt->pHasContent == (type_6 *)0x0) {
                  var_18 = var_17(pBt->nPage);
                  pBt->pHasContent = var_18;
                  if (var_18 == (type_6 *)0x0) {
                    var_12 = 7;
                    goto LAB_0014b0db;
                  }
                }
                if (var_2 <= pBt->pHasContent->iSize) {
                  var_12 = var_19(pBt->pHasContent,var_2);
                }
              }
            }
          }
        }
      }
    }
  }
LAB_0014b0db:
  var_7 = var_12;
  if (var_10 != (type_2 *)0x0) {
    var_10->isInit = '\0';
  }
  var_20(var_10);
  var_20(pTrunk);
  var_12 = var_7;
LAB_0014b10c:
  if (var_21 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_22();
  }
  return var_12;
}


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

ulong MASKED(long param_1,undefined1 *param_2,uint param_3)

{
  short *psVar1;
  int *piVar2;
  long lVar3;
  uint uVar4;
  uint uVar5;
  ulong uVar6;
  long lVar7;
  uint uVar8;
  uint uVar9;
  long in_FS_OFFSET;
  uint local_44;
  long local_40;
  undefined1 *local_38;
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  local_40 = 0;
  if ((param_3 < 2) || (*(uint *)(param_1 + 0x40) < param_3)) {
    uVar6 = FUN_00129d5f(0x1144a);
    goto LAB_0014b10c;
  }
  lVar7 = *(long *)(param_1 + 0x18);
  if (param_2 == (undefined1 *)0x0) {
    local_38 = (undefined1 *)FUN_001143ea(param_1,param_3);
  }
  else {
    lVar3 = *(long *)(param_2 + 0x70);
    psVar1 = (short *)(lVar3 + 0x36);
    *psVar1 = *psVar1 + 1;
    piVar2 = (int *)(*(long *)(lVar3 + 0x18) + 0x18);
    *piVar2 = *piVar2 + 1;
    local_38 = param_2;
  }
  local_44 = FUN_00146893(*(undefined8 *)(lVar7 + 0x70));
  uVar4 = local_44;
  if (local_44 == 0) {
    uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x24);
    uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
    FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x24,uVar8 + 1);
    if ((*(byte *)(param_1 + 0x28) & 4) != 0) {
      if (local_38 == (undefined1 *)0x0) {
        uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);
        if (uVar4 != 0) goto LAB_0014b0db;
        local_44 = 0;
      }
      local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));
      uVar4 = local_44;
      if (local_44 != 0) goto LAB_0014b0db;
      memset(*(void **)(local_38 + 0x50),0,(ulong)*(uint *)(*(long *)(local_38 + 0x48) + 0x34));
    }
    if ((*(char *)(param_1 + 0x21) == '\0') ||
       (FUN_0014a35d(param_1,param_3,2,0,&local_44), uVar4 = local_44, local_44 == 0)) {
      if (uVar8 == 0) {
        uVar8 = 0;
        uVar4 = local_44;
LAB_0014b33a:
        local_44 = uVar4;
        if (local_38 == (undefined1 *)0x0) {
          uVar4 = FUN_0010f088(param_1,param_3,&local_38,0);
          if (uVar4 != 0) goto LAB_0014b0db;
          local_44 = 0;
        }
        local_44 = FUN_00146893(*(undefined8 *)(local_38 + 0x70));
        uVar4 = local_44;
        if (local_44 == 0) {
          FUN_0011657b(*(undefined8 *)(local_38 + 0x50),uVar8);
          FUN_0011657b(*(long *)(local_38 + 0x50) + 4,0);
          FUN_0011657b(*(long *)(lVar7 + 0x50) + 0x20,param_3);
          uVar4 = local_44;
        }
      }
      else {
        uVar4 = *(uint *)(*(long *)(lVar7 + 0x50) + 0x20);
        uVar8 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
        if (*(uint *)(param_1 + 0x40) < uVar8) {
          uVar4 = FUN_00129d5f(0x11479);
        }
        else {
          local_44 = FUN_0010f088(param_1,uVar8,&local_40,0);
          uVar4 = local_44;
          if (local_44 == 0) {
            uVar4 = *(uint *)(*(long *)(local_40 + 0x50) + 4);
            uVar9 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 << 0x18;
            uVar5 = *(uint *)(param_1 + 0x38) >> 2;
            if (uVar5 - 2 < uVar9) {
              uVar4 = FUN_00129d5f(0x11484);
            }
            else {
              uVar4 = 0;
              if (uVar5 - 8 <= uVar9) goto LAB_0014b33a;
              uVar4 = FUN_00146893(*(undefined8 *)(local_40 + 0x70));
              if (uVar4 == 0) {
                local_44 = uVar4;
                FUN_0011657b(*(long *)(local_40 + 0x50) + 4,uVar9 + 1);
                FUN_0011657b((ulong)(uVar9 * 4 + 8) + *(long *)(local_40 + 0x50),param_3);
                if ((local_38 != (undefined1 *)0x0) && ((*(byte *)(param_1 + 0x28) & 4) == 0)) {
                  lVar7 = *(long *)(local_38 + 0x70);
                  if ((*(char *)(*(long *)(lVar7 + 0x28) + 0x10) == '\0') &&
                     (((*(ushort *)(lVar7 + 0x34) & 2) != 0 &&
                      (*(int *)(*(long *)(lVar7 + 0x28) + 0x80) == 0)))) {
                    *(ushort *)(lVar7 + 0x34) = *(ushort *)(lVar7 + 0x34) & 0xfffb | 0x10;
                  }
                }
                if (*(long *)(param_1 + 0x60) == 0) {
                  lVar7 = FUN_0011d296(*(undefined4 *)(param_1 + 0x40));
                  *(long *)(param_1 + 0x60) = lVar7;
                  if (lVar7 == 0) {
                    uVar4 = 7;
                    goto LAB_0014b0db;
                  }
                }
                if (param_3 <= **(uint **)(param_1 + 0x60)) {
                  uVar4 = FUN_00123346(*(uint **)(param_1 + 0x60),param_3);
                }
              }
            }
          }
        }
      }
    }
  }
LAB_0014b0db:
  local_44 = uVar4;
  if (local_38 != (undefined1 *)0x0) {
    *local_38 = 0;
  }
  FUN_0010f151(local_38);
  FUN_0010f151(local_40);
  uVar6 = (ulong)local_44;
LAB_0014b10c:
  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar6;
}

