
Table * sqlite3LocateTable(Parse *pParse,u32 flags,char *zName,char *zDbase)

{
  sqlite3 *psVar1;
  sqlite3_module *psVar2;
  Schema *pSVar3;
  int iVar4;
  Table *pTVar5;
  HashElem *pHVar6;
  PragmaName *pAux;
  Module *pMod;
  char *pcVar7;
  long in_FS_OFFSET;
  char *zErr;
  long local_40;
  
  psVar1 = pParse->db;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)) {
    pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);
    if (pTVar5 == (Table *)0x0) {
      if (pParse->disableVtab == '\0') {
        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);
        pMod = (Module *)pHVar6->data;
        if ((pMod != (Module *)0x0) ||
           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&
              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&
             ((pAux->mPragFlg & 0x30) != 0)) &&
            (pMod = sqlite3VtabCreateModule
                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),
            pMod != (Module *)0x0)))) {
          pTVar5 = pMod->pEpoTab;
          psVar2 = pMod->pModule;
          zErr = (char *)0x0;
          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;
          if ((psVar2->xCreate ==
               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)
               0x0) || (psVar2->xCreate == psVar2->xConnect)) {
            psVar1 = pParse->db;
            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);
            if (pTVar5 != (Table *)0x0) {
              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);
              pTVar5->zName = pcVar7;
              if (pcVar7 == (char *)0x0) {
                sqlite3DbFreeNN(psVar1,pTVar5);
              }
              else {
                pMod->pEpoTab = pTVar5;
                pTVar5->nTabRef = 1;
                pSVar3 = psVar1->aDb->pSchema;
                pTVar5->iPKey = -1;
                pTVar5->pSchema = pSVar3;
                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);
                addModuleArgument(pParse,pTVar5,pcVar7);
                addModuleArgument(pParse,pTVar5,(char *)0x0);
                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);
                addModuleArgument(pParse,pTVar5,pcVar7);
                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);
                if (iVar4 == 0) {
                  pTVar5 = pMod->pEpoTab;
                  goto LAB_001a2efe;
                }
                sqlite3ErrorMsg(pParse,"%s",zErr);
                if (zErr != (char *)0x0) {
                  sqlite3DbFreeNN(psVar1,zErr);
                }
                pTVar5 = pMod->pEpoTab;
                if (pTVar5 != (Table *)0x0) {
                  pTVar5->tabFlags = pTVar5->tabFlags | 2;
                  sqlite3DeleteTable(psVar1,pTVar5);
                  pMod->pEpoTab = (Table *)0x0;
                }
              }
            }
          }
        }
      }
      if ((flags & 2) != 0) goto LAB_001a2f7c;
      pParse->checkSchema = '\x01';
    }
    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;
    pcVar7 = "no such view";
    if ((flags & 1) == 0) {
      pcVar7 = "no such table";
    }
    if (zDbase != (char *)0x0) {
      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);
      pTVar5 = (Table *)0x0;
      goto LAB_001a2efe;
    }
    sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);
  }
LAB_001a2f7c:
  pTVar5 = (Table *)0x0;
LAB_001a2efe:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return pTVar5;
}



long FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)

{
  uint *puVar1;
  long lVar2;
  int iVar3;
  long lVar4;
  long *plVar5;
  long lVar6;
  undefined8 uVar7;
  long *plVar8;
  char *pcVar9;
  long in_FS_OFFSET;
  long local_48;
  long local_40;
  
  lVar2 = *param_1;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {
    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);
    if (lVar4 == 0) {
      if (*(char *)((long)param_1 + 0x25) == '\0') {
        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);
        plVar8 = *(long **)(lVar4 + 0x10);
        if ((plVar8 != (long *)0x0) ||
           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&
              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&
             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&
            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),
            plVar8 != (long *)0x0)))) {
          lVar4 = plVar8[4];
          lVar2 = *plVar8;
          local_48 = 0;
          if (lVar4 != 0) goto LAB_001a2efe;
          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {
            lVar4 = *param_1;
            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);
            if (plVar5 != (long *)0x0) {
              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);
              *plVar5 = lVar6;
              if (lVar6 == 0) {
                FUN_00119e90(lVar4,plVar5);
              }
              else {
                plVar8[4] = (long)plVar5;
                *(undefined4 *)((long)plVar5 + 0x3c) = 1;
                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);
                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;
                plVar5[0xe] = lVar6;
                uVar7 = FUN_0011bd40(lVar4,*plVar5);
                FUN_00150b10(param_1,plVar5,uVar7);
                FUN_00150b10(param_1,plVar5,0);
                uVar7 = FUN_0011bd40(lVar4,*plVar5);
                FUN_00150b10(param_1,plVar5,uVar7);
                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);
                if (iVar3 == 0) {
                  lVar4 = plVar8[4];
                  goto LAB_001a2efe;
                }
                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);
                if (local_48 != 0) {
                  FUN_00119e90(lVar4);
                }
                if (plVar8[4] != 0) {
                  puVar1 = (uint *)(plVar8[4] + 0x40);
                  *puVar1 = *puVar1 | 2;
                  FUN_0012dbd0(lVar4);
                  plVar8[4] = 0;
                }
              }
            }
          }
        }
      }
      if ((param_2 & 2) != 0) goto LAB_001a2f7c;
      *(undefined1 *)((long)param_1 + 0x1d) = 1;
    }
    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))
    goto LAB_001a2efe;
    pcVar9 = "no such view";
    if ((param_2 & 1) == 0) {
      pcVar9 = "no such table";
    }
    if (param_4 != 0) {
      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);
      lVar4 = 0;
      goto LAB_001a2efe;
    }
    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);
  }
LAB_001a2f7c:
  lVar4 = 0;
LAB_001a2efe:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return lVar4;
}


PUSH R15
PUSH R14
MOV R14D,ESI
PUSH R13
MOV R13,RDX
PUSH R12
MOV R12,RCX
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x28
MOV RBP,qword ptr [RDI]
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
TEST byte ptr [RBP + 0x2c],0x8
JNZ 0x001a2ee0
CALL 0x001a27f0
TEST EAX,EAX
JNZ 0x001a2f7c
MOV RDX,R12
MOV RSI,R13
MOV RDI,RBP
CALL 0x0011ca50
TEST RAX,RAX
JZ 0x001a2f88
MOV EDX,dword ptr [RAX + 0x54]
TEST EDX,EDX
JNZ 0x001a2f28
MOV RCX,qword ptr [RSP + 0x18]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x001a3189
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP byte ptr [RBX + 0x25],0x0
JZ 0x001a2efe
AND R14D,0x1
LEA RDX,[0x1eaa6f]
LEA RAX,[0x1eaa7c]
CMOVZ RDX,RAX
TEST R12,R12
JZ 0x001a2f68
XOR EAX,EAX
MOV R8,R13
MOV RCX,R12
LEA RSI,[0x1ea1a1]
MOV RDI,RBX
CALL 0x0014a9d0
XOR EAX,EAX
JMP 0x001a2efe
MOV RCX,R13
LEA RSI,[0x1e8637]
MOV RDI,RBX
XOR EAX,EAX
CALL 0x0014a9d0
XOR EAX,EAX
JMP 0x001a2efe
CMP byte ptr [RBX + 0x25],0x0
JZ 0x001a2fa0
TEST R14B,0x2
JNZ 0x001a2f7c
MOV byte ptr [RBX + 0x1d],0x1
JMP 0x001a2f2e
LEA RDI,[RBP + 0x1d8]
XOR EDX,EDX
MOV RSI,R13
CALL 0x00110300
MOV R15,qword ptr [RAX + 0x10]
TEST R15,R15
JZ 0x001a30c0
MOV RAX,qword ptr [R15 + 0x20]
MOV RCX,qword ptr [R15]
MOV qword ptr [RSP + 0x10],0x0
TEST RAX,RAX
JNZ 0x001a2efe
MOV RAX,qword ptr [RCX + 0x8]
TEST RAX,RAX
JZ 0x001a2fe6
CMP RAX,qword ptr [RCX + 0x10]
JNZ 0x001a2f8e
MOV RAX,qword ptr [RBX]
MOV ESI,0x80
MOV qword ptr [RSP + 0x8],RCX
MOV RDI,RAX
MOV qword ptr [RSP],RAX
CALL 0x0011b8f0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x001a2f8e
MOV RSI,qword ptr [R15 + 0x8]
MOV RDI,qword ptr [RSP]
CALL 0x0011bd40
MOV RCX,qword ptr [RSP + 0x8]
TEST RAX,RAX
MOV qword ptr [RBP],RAX
JZ 0x001a3128
MOV qword ptr [RSP + 0x8],RCX
MOV RCX,qword ptr [RSP]
MOV ESI,0xffffffff
MOV qword ptr [R15 + 0x20],RBP
MOV dword ptr [RBP + 0x3c],0x1
MOV RAX,qword ptr [RCX + 0x20]
MOV RDI,RCX
MOV RAX,qword ptr [RAX + 0x18]
MOV word ptr [RBP + 0x44],SI
MOV RSI,qword ptr [RBP]
MOV qword ptr [RBP + 0x70],RAX
CALL 0x0011bd40
MOV RSI,RBP
MOV RDI,RBX
MOV RDX,RAX
CALL 0x00150b10
XOR EDX,EDX
MOV RSI,RBP
MOV RDI,RBX
CALL 0x00150b10
MOV RSI,qword ptr [RBP]
MOV RDI,qword ptr [RSP]
CALL 0x0011bd40
MOV RSI,RBP
MOV RDI,RBX
MOV RDX,RAX
CALL 0x00150b10
MOV RCX,qword ptr [RSP + 0x8]
MOV RDX,R15
MOV RSI,RBP
MOV RDI,qword ptr [RSP]
LEA R8,[RSP + 0x10]
MOV RCX,qword ptr [RCX + 0x10]
CALL 0x00151d20
TEST EAX,EAX
JNZ 0x001a3139
MOV RAX,qword ptr [R15 + 0x20]
JMP 0x001a2efe
MOV EDX,0x7
LEA RSI,[0x1eaa8a]
MOV RDI,R13
CALL 0x0011cf00
TEST EAX,EAX
JNZ 0x001a2f8e
LEA RDI,[R13 + 0x7]
CALL 0x0011cce0
MOV RCX,RAX
TEST RAX,RAX
JZ 0x001a2f8e
TEST byte ptr [RAX + 0x9],0x30
JZ 0x001a2f8e
XOR R8D,R8D
LEA RDX,[0x21d6e0]
MOV RSI,R13
MOV RDI,RBP
CALL 0x0011e090
MOV R15,RAX
TEST RAX,RAX
JZ 0x001a2f8e
JMP 0x001a2fbe
MOV RDI,qword ptr [RSP]
MOV RSI,RBP
CALL 0x00119e90
JMP 0x001a2f8e
MOV RDX,qword ptr [RSP + 0x10]
LEA RSI,[0x1e9d2f]
MOV RDI,RBX
XOR EAX,EAX
CALL 0x0014a9d0
MOV RSI,qword ptr [RSP + 0x10]
TEST RSI,RSI
JZ 0x001a3162
MOV RDI,qword ptr [RSP]
CALL 0x00119e90
MOV RSI,qword ptr [R15 + 0x20]
TEST RSI,RSI
JZ 0x001a2f8e
OR dword ptr [RSI + 0x40],0x2
MOV RDI,qword ptr [RSP]
CALL 0x0012dbd0
MOV qword ptr [R15 + 0x20],0x0
JMP 0x001a2f8e
CALL 0x0010a140
(translation_unit "long FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)\n\n{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return lVar4;\n}\n\n" (function_definition "long FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)\n\n{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return lVar4;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)" identifier (parameter_list "(long *param_1,ulong param_2,long param_3,long param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return lVar4;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(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) ))))) ;) (if_statement "if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }" if (parenthesized_expression "(((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0))" ( (binary_expression "((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)" (parenthesized_expression "((*(byte *)(lVar2 + 0x2c) & 8) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x2c) & 8) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x2c) & 8)" ( (binary_expression "*(byte *)(lVar2 + 0x2c) & 8" (pointer_expression "*(byte *)(lVar2 + 0x2c)" * (cast_expression "(byte *)(lVar2 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x2c)" ( (binary_expression "lVar2 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(iVar3 = FUN_001a27f0(), iVar3 == 0)" ( (comma_expression "iVar3 = FUN_001a27f0(), iVar3 == 0" (assignment_expression "iVar3 = FUN_001a27f0()" identifier = (call_expression "FUN_001a27f0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }" { (expression_statement "lVar4 = FUN_0011ca50(lVar2,param_3,param_4);" (assignment_expression "lVar4 = FUN_0011ca50(lVar2,param_3,param_4)" identifier = (call_expression "FUN_0011ca50(lVar2,param_3,param_4)" identifier (argument_list "(lVar2,param_3,param_4)" ( identifier , identifier , identifier )))) ;) (if_statement "if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }" { (if_statement "if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(*(char *)((long)param_1 + 0x25) == '\0')" ( (binary_expression "*(char *)((long)param_1 + 0x25) == '\0'" (pointer_expression "*(char *)((long)param_1 + 0x25)" * (cast_expression "(char *)((long)param_1 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x25)" ( (binary_expression "(long)param_1 + 0x25" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);" (assignment_expression "lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0)" identifier = (call_expression "FUN_00110300(lVar2 + 0x1d8,param_3,0)" identifier (argument_list "(lVar2 + 0x1d8,param_3,0)" ( (binary_expression "lVar2 + 0x1d8" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "plVar8 = *(long **)(lVar4 + 0x10);" (assignment_expression "plVar8 = *(long **)(lVar4 + 0x10)" identifier = (pointer_expression "*(long **)(lVar4 + 0x10)" * (cast_expression "(long **)(lVar4 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0))))" ( (binary_expression "(plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))" (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))" ( (parenthesized_expression "(((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0))" ( (binary_expression "((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)" (parenthesized_expression "((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0))" ( (binary_expression "(iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)" (parenthesized_expression "(iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0))" ( (comma_expression "iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (assignment_expression "iVar3 = FUN_0011cf00(param_3,"pragma_",7)" identifier = (call_expression "FUN_0011cf00(param_3,"pragma_",7)" identifier (argument_list "(param_3,"pragma_",7)" ( identifier , (string_literal ""pragma_"" " string_content ") , number_literal )))) , (binary_expression "iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (binary_expression "iVar3 == 0" identifier == number_literal) && (parenthesized_expression "(lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" ( (comma_expression "lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0" (assignment_expression "lVar4 = FUN_0011cce0(param_3 + 7)" identifier = (call_expression "FUN_0011cce0(param_3 + 7)" identifier (argument_list "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) , (binary_expression "lVar4 != 0" identifier != number_literal)) )))) )) && (parenthesized_expression "((*(byte *)(lVar4 + 9) & 0x30) != 0)" ( (binary_expression "(*(byte *)(lVar4 + 9) & 0x30) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 9) & 0x30)" ( (binary_expression "*(byte *)(lVar4 + 9) & 0x30" (pointer_expression "*(byte *)(lVar4 + 9)" * (cast_expression "(byte *)(lVar4 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 9)" ( (binary_expression "lVar4 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)" ( (comma_expression "plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0" (assignment_expression "plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" identifier = (cast_expression "(long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" identifier (argument_list "(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" ( identifier , identifier , (pointer_expression "&DAT_0021d6e0" & identifier) , identifier , number_literal ))))) , (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) (compound_statement "{\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "lVar4 = plVar8[4];" (assignment_expression "lVar4 = plVar8[4]" identifier = (subscript_expression "plVar8[4]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = *plVar8;" (assignment_expression "lVar2 = *plVar8" identifier = (pointer_expression "*plVar8" * identifier)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (lVar4 != 0) goto LAB_001a2efe;" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;)) (if_statement "if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }" if (parenthesized_expression "((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10)))" ( (binary_expression "(*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))" (parenthesized_expression "(*(long *)(lVar2 + 8) == 0)" ( (binary_expression "*(long *)(lVar2 + 8) == 0" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))" ( (binary_expression "*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10)" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) == (pointer_expression "*(long *)(lVar2 + 0x10)" * (cast_expression "(long *)(lVar2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ))) )) (compound_statement "{\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }" { (expression_statement "lVar4 = *param_1;" (assignment_expression "lVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);" (assignment_expression "plVar5 = (long *)FUN_0011b8f0(lVar4,0x80)" identifier = (cast_expression "(long *)FUN_0011b8f0(lVar4,0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011b8f0(lVar4,0x80)" identifier (argument_list "(lVar4,0x80)" ( identifier , number_literal ))))) ;) (if_statement "if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }" if (parenthesized_expression "(plVar5 != (long *)0x0)" ( (binary_expression "plVar5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }" { (expression_statement "lVar6 = FUN_0011bd40(lVar4,plVar8[1]);" (assignment_expression "lVar6 = FUN_0011bd40(lVar4,plVar8[1])" identifier = (call_expression "FUN_0011bd40(lVar4,plVar8[1])" identifier (argument_list "(lVar4,plVar8[1])" ( identifier , (subscript_expression "plVar8[1]" identifier [ number_literal ]) )))) ;) (expression_statement "*plVar5 = lVar6;" (assignment_expression "*plVar5 = lVar6" (pointer_expression "*plVar5" * identifier) = identifier) ;) (if_statement "if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_00119e90(lVar4,plVar5);\n              }" { (expression_statement "FUN_00119e90(lVar4,plVar5);" (call_expression "FUN_00119e90(lVar4,plVar5)" identifier (argument_list "(lVar4,plVar5)" ( identifier , identifier ))) ;) }) (else_clause "else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" else (compound_statement "{\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" { (expression_statement "plVar8[4] = (long)plVar5;" (assignment_expression "plVar8[4] = (long)plVar5" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)((long)plVar5 + 0x3c) = 1;" (assignment_expression "*(undefined4 *)((long)plVar5 + 0x3c) = 1" (pointer_expression "*(undefined4 *)((long)plVar5 + 0x3c)" * (cast_expression "(undefined4 *)((long)plVar5 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar5 + 0x3c)" ( (binary_expression "(long)plVar5 + 0x3c" (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);" (assignment_expression "lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18)" identifier = (pointer_expression "*(long *)(*(long *)(lVar4 + 0x20) + 0x18)" * (cast_expression "(long *)(*(long *)(lVar4 + 0x20) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x20) + 0x18)" ( (binary_expression "*(long *)(lVar4 + 0x20) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined2 *)((long)plVar5 + 0x44) = 0xffff;" (assignment_expression "*(undefined2 *)((long)plVar5 + 0x44) = 0xffff" (pointer_expression "*(undefined2 *)((long)plVar5 + 0x44)" * (cast_expression "(undefined2 *)((long)plVar5 + 0x44)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar5 + 0x44)" ( (binary_expression "(long)plVar5 + 0x44" (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar5[0xe] = lVar6;" (assignment_expression "plVar5[0xe] = lVar6" (subscript_expression "plVar5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = FUN_0011bd40(lVar4,*plVar5);" (assignment_expression "uVar7 = FUN_0011bd40(lVar4,*plVar5)" identifier = (call_expression "FUN_0011bd40(lVar4,*plVar5)" identifier (argument_list "(lVar4,*plVar5)" ( identifier , (pointer_expression "*plVar5" * identifier) )))) ;) (expression_statement "FUN_00150b10(param_1,plVar5,uVar7);" (call_expression "FUN_00150b10(param_1,plVar5,uVar7)" identifier (argument_list "(param_1,plVar5,uVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00150b10(param_1,plVar5,0);" (call_expression "FUN_00150b10(param_1,plVar5,0)" identifier (argument_list "(param_1,plVar5,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar7 = FUN_0011bd40(lVar4,*plVar5);" (assignment_expression "uVar7 = FUN_0011bd40(lVar4,*plVar5)" identifier = (call_expression "FUN_0011bd40(lVar4,*plVar5)" identifier (argument_list "(lVar4,*plVar5)" ( identifier , (pointer_expression "*plVar5" * identifier) )))) ;) (expression_statement "FUN_00150b10(param_1,plVar5,uVar7);" (call_expression "FUN_00150b10(param_1,plVar5,uVar7)" identifier (argument_list "(param_1,plVar5,uVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);" (assignment_expression "iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" identifier = (call_expression "FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" identifier (argument_list "(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" ( identifier , identifier , identifier , (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }" { (expression_statement "lVar4 = plVar8[4];" (assignment_expression "lVar4 = plVar8[4]" identifier = (subscript_expression "plVar8[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;) })) (expression_statement "FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);" (call_expression "FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48)" identifier (argument_list "(param_1,&DAT_001e9d2f,local_48)" ( identifier , (pointer_expression "&DAT_001e9d2f" & identifier) , identifier ))) ;) (if_statement "if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00119e90(lVar4);\n                }" { (expression_statement "FUN_00119e90(lVar4);" (call_expression "FUN_00119e90(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) })) (if_statement "if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }" if (parenthesized_expression "(plVar8[4] != 0)" ( (binary_expression "plVar8[4] != 0" (subscript_expression "plVar8[4]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }" { (expression_statement "puVar1 = (uint *)(plVar8[4] + 0x40);" (assignment_expression "puVar1 = (uint *)(plVar8[4] + 0x40)" identifier = (cast_expression "(uint *)(plVar8[4] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar8[4] + 0x40)" ( (binary_expression "plVar8[4] + 0x40" (subscript_expression "plVar8[4]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | 2;" (assignment_expression "*puVar1 = *puVar1 | 2" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 2" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "FUN_0012dbd0(lVar4);" (call_expression "FUN_0012dbd0(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) (expression_statement "plVar8[4] = 0;" (assignment_expression "plVar8[4] = 0" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = number_literal) ;) })) }))) })) })) })) })) (if_statement "if ((param_2 & 2) != 0) goto LAB_001a2f7c;" if (parenthesized_expression "((param_2 & 2) != 0)" ( (binary_expression "(param_2 & 2) != 0" (parenthesized_expression "(param_2 & 2)" ( (binary_expression "param_2 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001a2f7c;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((long)param_1 + 0x1d) = 1;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x1d) = 1" (pointer_expression "*(undefined1 *)((long)param_1 + 0x1d)" * (cast_expression "(undefined1 *)((long)param_1 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1d)" ( (binary_expression "(long)param_1 + 0x1d" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" else (if_statement "if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" if (parenthesized_expression "((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))" ( (binary_expression "(*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0')" (parenthesized_expression "(*(int *)(lVar4 + 0x54) == 0)" ( (binary_expression "*(int *)(lVar4 + 0x54) == 0" (pointer_expression "*(int *)(lVar4 + 0x54)" * (cast_expression "(int *)(lVar4 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x54)" ( (binary_expression "lVar4 + 0x54" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(char *)((long)param_1 + 0x25) == '\0')" ( (binary_expression "*(char *)((long)param_1 + 0x25) == '\0'" (pointer_expression "*(char *)((long)param_1 + 0x25)" * (cast_expression "(char *)((long)param_1 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x25)" ( (binary_expression "(long)param_1 + 0x25" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;)))) (expression_statement "pcVar9 = "no such view";" (assignment_expression "pcVar9 = "no such view"" identifier = (string_literal ""no such view"" " string_content ")) ;) (if_statement "if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }" if (parenthesized_expression "((param_2 & 1) == 0)" ( (binary_expression "(param_2 & 1) == 0" (parenthesized_expression "(param_2 & 1)" ( (binary_expression "param_2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar9 = "no such table";\n    }" { (expression_statement "pcVar9 = "no such table";" (assignment_expression "pcVar9 = "no such table"" identifier = (string_literal ""no such table"" " string_content ")) ;) })) (if_statement "if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }" { (expression_statement "FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);" (call_expression "FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3)" identifier (argument_list "(param_1,"%s: %s.%s",pcVar9,param_4,param_3)" ( identifier , (string_literal ""%s: %s.%s"" " string_content ") , identifier , identifier , identifier ))) ;) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;) })) (expression_statement "FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);" (call_expression "FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3)" identifier (argument_list "(param_1,"%s: %s",pcVar9,param_3)" ( identifier , (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (labeled_statement "LAB_001a2f7c:\n  lVar4 = 0;" statement_identifier : (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(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 lVar4;" return identifier ;) })))
(translation_unit "Table * sqlite3LocateTable(Parse *pParse,u32 flags,char *zName,char *zDbase)\n\n{\n  sqlite3 *psVar1;\n  sqlite3_module *psVar2;\n  Schema *pSVar3;\n  int iVar4;\n  Table *pTVar5;\n  HashElem *pHVar6;\n  PragmaName *pAux;\n  Module *pMod;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  char *zErr;\n  long local_40;\n  \n  psVar1 = pParse->db;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)) {\n    pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);\n    if (pTVar5 == (Table *)0x0) {\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }\n    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;\n    pcVar7 = "no such view";\n    if ((flags & 1) == 0) {\n      pcVar7 = "no such table";\n    }\n    if (zDbase != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }\n    sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);\n  }\nLAB_001a2f7c:\n  pTVar5 = (Table *)0x0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return pTVar5;\n}\n\n" (function_definition "Table * sqlite3LocateTable(Parse *pParse,u32 flags,char *zName,char *zDbase)\n\n{\n  sqlite3 *psVar1;\n  sqlite3_module *psVar2;\n  Schema *pSVar3;\n  int iVar4;\n  Table *pTVar5;\n  HashElem *pHVar6;\n  PragmaName *pAux;\n  Module *pMod;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  char *zErr;\n  long local_40;\n  \n  psVar1 = pParse->db;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)) {\n    pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);\n    if (pTVar5 == (Table *)0x0) {\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }\n    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;\n    pcVar7 = "no such view";\n    if ((flags & 1) == 0) {\n      pcVar7 = "no such table";\n    }\n    if (zDbase != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }\n    sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);\n  }\nLAB_001a2f7c:\n  pTVar5 = (Table *)0x0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return pTVar5;\n}" type_identifier (pointer_declarator "* sqlite3LocateTable(Parse *pParse,u32 flags,char *zName,char *zDbase)" * (function_declarator "sqlite3LocateTable(Parse *pParse,u32 flags,char *zName,char *zDbase)" identifier (parameter_list "(Parse *pParse,u32 flags,char *zName,char *zDbase)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "u32 flags" type_identifier identifier) , (parameter_declaration "char *zName" primitive_type (pointer_declarator "*zName" * identifier)) , (parameter_declaration "char *zDbase" primitive_type (pointer_declarator "*zDbase" * identifier)) )))) (compound_statement "{\n  sqlite3 *psVar1;\n  sqlite3_module *psVar2;\n  Schema *pSVar3;\n  int iVar4;\n  Table *pTVar5;\n  HashElem *pHVar6;\n  PragmaName *pAux;\n  Module *pMod;\n  char *pcVar7;\n  long in_FS_OFFSET;\n  char *zErr;\n  long local_40;\n  \n  psVar1 = pParse->db;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)) {\n    pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);\n    if (pTVar5 == (Table *)0x0) {\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }\n    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;\n    pcVar7 = "no such view";\n    if ((flags & 1) == 0) {\n      pcVar7 = "no such table";\n    }\n    if (zDbase != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }\n    sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);\n  }\nLAB_001a2f7c:\n  pTVar5 = (Table *)0x0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return pTVar5;\n}" { (declaration "sqlite3 *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "sqlite3_module *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "Schema *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Table *pTVar5;" type_identifier (pointer_declarator "*pTVar5" * identifier) ;) (declaration "HashElem *pHVar6;" type_identifier (pointer_declarator "*pHVar6" * identifier) ;) (declaration "PragmaName *pAux;" type_identifier (pointer_declarator "*pAux" * identifier) ;) (declaration "Module *pMod;" type_identifier (pointer_declarator "*pMod" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "char *zErr;" primitive_type (pointer_declarator "*zErr" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "psVar1 = pParse->db;" (assignment_expression "psVar1 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(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) ))))) ;) (if_statement "if (((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)) {\n    pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);\n    if (pTVar5 == (Table *)0x0) {\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }\n    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;\n    pcVar7 = "no such view";\n    if ((flags & 1) == 0) {\n      pcVar7 = "no such table";\n    }\n    if (zDbase != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }\n    sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);\n  }" if (parenthesized_expression "(((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0))" ( (binary_expression "((psVar1->mDbFlags & 8) != 0) || (iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)" (parenthesized_expression "((psVar1->mDbFlags & 8) != 0)" ( (binary_expression "(psVar1->mDbFlags & 8) != 0" (parenthesized_expression "(psVar1->mDbFlags & 8)" ( (binary_expression "psVar1->mDbFlags & 8" (field_expression "psVar1->mDbFlags" identifier -> field_identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0)" ( (comma_expression "iVar4 = sqlite3ReadSchema(pParse), iVar4 == 0" (assignment_expression "iVar4 = sqlite3ReadSchema(pParse)" identifier = (call_expression "sqlite3ReadSchema(pParse)" identifier (argument_list "(pParse)" ( identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);\n    if (pTVar5 == (Table *)0x0) {\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }\n    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;\n    pcVar7 = "no such view";\n    if ((flags & 1) == 0) {\n      pcVar7 = "no such table";\n    }\n    if (zDbase != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }\n    sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);\n  }" { (expression_statement "pTVar5 = sqlite3FindTable(psVar1,zName,zDbase);" (assignment_expression "pTVar5 = sqlite3FindTable(psVar1,zName,zDbase)" identifier = (call_expression "sqlite3FindTable(psVar1,zName,zDbase)" identifier (argument_list "(psVar1,zName,zDbase)" ( identifier , identifier , identifier )))) ;) (if_statement "if (pTVar5 == (Table *)0x0) {\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }\n    else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;" if (parenthesized_expression "(pTVar5 == (Table *)0x0)" ( (binary_expression "pTVar5 == (Table *)0x0" identifier == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((flags & 2) != 0) goto LAB_001a2f7c;\n      pParse->checkSchema = '\x01';\n    }" { (if_statement "if (pParse->disableVtab == '\0') {\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(pParse->disableVtab == '\0')" ( (binary_expression "pParse->disableVtab == '\0'" (field_expression "pParse->disableVtab" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);\n        pMod = (Module *)pHVar6->data;\n        if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0);" (assignment_expression "pHVar6 = findElementWithHash(&psVar1->aModule,zName,(uint *)0x0)" identifier = (call_expression "findElementWithHash(&psVar1->aModule,zName,(uint *)0x0)" identifier (argument_list "(&psVar1->aModule,zName,(uint *)0x0)" ( (pointer_expression "&psVar1->aModule" & (field_expression "psVar1->aModule" identifier -> field_identifier)) , identifier , (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "pMod = (Module *)pHVar6->data;" (assignment_expression "pMod = (Module *)pHVar6->data" identifier = (cast_expression "(Module *)pHVar6->data" ( (type_descriptor "Module *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pHVar6->data" identifier -> field_identifier))) ;) (if_statement "if ((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))) {\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "((pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0))))" ( (binary_expression "(pMod != (Module *)0x0) ||\n           ((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))" (parenthesized_expression "(pMod != (Module *)0x0)" ( (binary_expression "pMod != (Module *)0x0" identifier != (cast_expression "(Module *)0x0" ( (type_descriptor "Module *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)))" ( (parenthesized_expression "(((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0))" ( (binary_expression "((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)) &&\n            (pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)" (parenthesized_expression "((iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0))" ( (binary_expression "(iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)) &&\n             ((pAux->mPragFlg & 0x30) != 0)" (parenthesized_expression "(iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0))" ( (comma_expression "iVar4 = sqlite3_strnicmp(zName,"pragma_",7), iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)" (assignment_expression "iVar4 = sqlite3_strnicmp(zName,"pragma_",7)" identifier = (call_expression "sqlite3_strnicmp(zName,"pragma_",7)" identifier (argument_list "(zName,"pragma_",7)" ( identifier , (string_literal ""pragma_"" " string_content ") , number_literal )))) , (binary_expression "iVar4 == 0 &&\n              (pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)" (binary_expression "iVar4 == 0" identifier == number_literal) && (parenthesized_expression "(pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0)" ( (comma_expression "pAux = pragmaLocate(zName + 7), pAux != (PragmaName *)0x0" (assignment_expression "pAux = pragmaLocate(zName + 7)" identifier = (call_expression "pragmaLocate(zName + 7)" identifier (argument_list "(zName + 7)" ( (binary_expression "zName + 7" identifier + number_literal) )))) , (binary_expression "pAux != (PragmaName *)0x0" identifier != (cast_expression "(PragmaName *)0x0" ( (type_descriptor "PragmaName *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) && (parenthesized_expression "((pAux->mPragFlg & 0x30) != 0)" ( (binary_expression "(pAux->mPragFlg & 0x30) != 0" (parenthesized_expression "(pAux->mPragFlg & 0x30)" ( (binary_expression "pAux->mPragFlg & 0x30" (field_expression "pAux->mPragFlg" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0)" ( (comma_expression "pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0),\n            pMod != (Module *)0x0" (assignment_expression "pMod = sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0)" identifier = (call_expression "sqlite3VtabCreateModule\n                              (psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0)" identifier (argument_list "(psVar1,zName,&pragmaVtabModule,pAux,(_func_void_void_ptr *)0x0)" ( identifier , identifier , (pointer_expression "&pragmaVtabModule" & identifier) , identifier , (cast_expression "(_func_void_void_ptr *)0x0" ( (type_descriptor "_func_void_void_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "pMod != (Module *)0x0" identifier != (cast_expression "(Module *)0x0" ( (type_descriptor "Module *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) (compound_statement "{\n          pTVar5 = pMod->pEpoTab;\n          psVar2 = pMod->pModule;\n          zErr = (char *)0x0;\n          if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;\n          if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "pTVar5 = pMod->pEpoTab;" (assignment_expression "pTVar5 = pMod->pEpoTab" identifier = (field_expression "pMod->pEpoTab" identifier -> field_identifier)) ;) (expression_statement "psVar2 = pMod->pModule;" (assignment_expression "psVar2 = pMod->pModule" identifier = (field_expression "pMod->pModule" identifier -> field_identifier)) ;) (expression_statement "zErr = (char *)0x0;" (assignment_expression "zErr = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pTVar5 != (Table *)0x0) goto LAB_001a2efe;" if (parenthesized_expression "(pTVar5 != (Table *)0x0)" ( (binary_expression "pTVar5 != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;)) (if_statement "if ((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)) {\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }" if (parenthesized_expression "((psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect))" ( (binary_expression "(psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0) || (psVar2->xCreate == psVar2->xConnect)" (parenthesized_expression "(psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0)" ( (binary_expression "psVar2->xCreate ==\n               (_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0" (field_expression "psVar2->xCreate" identifier -> field_identifier) == (cast_expression "(_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *)\n               0x0" ( (type_descriptor "_func_int_sqlite3_ptr_void_ptr_int_char_ptr_ptr_sqlite3_vtab_ptr_ptr_char_ptr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(psVar2->xCreate == psVar2->xConnect)" ( (binary_expression "psVar2->xCreate == psVar2->xConnect" (field_expression "psVar2->xCreate" identifier -> field_identifier) == (field_expression "psVar2->xConnect" identifier -> field_identifier)) ))) )) (compound_statement "{\n            psVar1 = pParse->db;\n            pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);\n            if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }\n          }" { (expression_statement "psVar1 = pParse->db;" (assignment_expression "psVar1 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80);" (assignment_expression "pTVar5 = (Table *)sqlite3DbMallocZero(psVar1,0x80)" identifier = (cast_expression "(Table *)sqlite3DbMallocZero(psVar1,0x80)" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocZero(psVar1,0x80)" identifier (argument_list "(psVar1,0x80)" ( identifier , number_literal ))))) ;) (if_statement "if (pTVar5 != (Table *)0x0) {\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }" if (parenthesized_expression "(pTVar5 != (Table *)0x0)" ( (binary_expression "pTVar5 != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);\n              pTVar5->zName = pcVar7;\n              if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }\n            }" { (expression_statement "pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName);" (assignment_expression "pcVar7 = sqlite3DbStrDup(psVar1,pMod->zName)" identifier = (call_expression "sqlite3DbStrDup(psVar1,pMod->zName)" identifier (argument_list "(psVar1,pMod->zName)" ( identifier , (field_expression "pMod->zName" identifier -> field_identifier) )))) ;) (expression_statement "pTVar5->zName = pcVar7;" (assignment_expression "pTVar5->zName = pcVar7" (field_expression "pTVar5->zName" identifier -> field_identifier) = identifier) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }\n              else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                sqlite3DbFreeNN(psVar1,pTVar5);\n              }" { (expression_statement "sqlite3DbFreeNN(psVar1,pTVar5);" (call_expression "sqlite3DbFreeNN(psVar1,pTVar5)" identifier (argument_list "(psVar1,pTVar5)" ( identifier , identifier ))) ;) }) (else_clause "else {\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }" else (compound_statement "{\n                pMod->pEpoTab = pTVar5;\n                pTVar5->nTabRef = 1;\n                pSVar3 = psVar1->aDb->pSchema;\n                pTVar5->iPKey = -1;\n                pTVar5->pSchema = pSVar3;\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                addModuleArgument(pParse,pTVar5,(char *)0x0);\n                pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);\n                addModuleArgument(pParse,pTVar5,pcVar7);\n                iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);\n                if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }\n                sqlite3ErrorMsg(pParse,"%s",zErr);\n                if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }\n                pTVar5 = pMod->pEpoTab;\n                if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }\n              }" { (expression_statement "pMod->pEpoTab = pTVar5;" (assignment_expression "pMod->pEpoTab = pTVar5" (field_expression "pMod->pEpoTab" identifier -> field_identifier) = identifier) ;) (expression_statement "pTVar5->nTabRef = 1;" (assignment_expression "pTVar5->nTabRef = 1" (field_expression "pTVar5->nTabRef" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar3 = psVar1->aDb->pSchema;" (assignment_expression "pSVar3 = psVar1->aDb->pSchema" identifier = (field_expression "psVar1->aDb->pSchema" (field_expression "psVar1->aDb" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pTVar5->iPKey = -1;" (assignment_expression "pTVar5->iPKey = -1" (field_expression "pTVar5->iPKey" identifier -> field_identifier) = number_literal) ;) (expression_statement "pTVar5->pSchema = pSVar3;" (assignment_expression "pTVar5->pSchema = pSVar3" (field_expression "pTVar5->pSchema" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);" (assignment_expression "pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName)" identifier = (call_expression "sqlite3DbStrDup(psVar1,pTVar5->zName)" identifier (argument_list "(psVar1,pTVar5->zName)" ( identifier , (field_expression "pTVar5->zName" identifier -> field_identifier) )))) ;) (expression_statement "addModuleArgument(pParse,pTVar5,pcVar7);" (call_expression "addModuleArgument(pParse,pTVar5,pcVar7)" identifier (argument_list "(pParse,pTVar5,pcVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "addModuleArgument(pParse,pTVar5,(char *)0x0);" (call_expression "addModuleArgument(pParse,pTVar5,(char *)0x0)" identifier (argument_list "(pParse,pTVar5,(char *)0x0)" ( identifier , identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName);" (assignment_expression "pcVar7 = sqlite3DbStrDup(psVar1,pTVar5->zName)" identifier = (call_expression "sqlite3DbStrDup(psVar1,pTVar5->zName)" identifier (argument_list "(psVar1,pTVar5->zName)" ( identifier , (field_expression "pTVar5->zName" identifier -> field_identifier) )))) ;) (expression_statement "addModuleArgument(pParse,pTVar5,pcVar7);" (call_expression "addModuleArgument(pParse,pTVar5,pcVar7)" identifier (argument_list "(pParse,pTVar5,pcVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr);" (assignment_expression "iVar4 = vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr)" identifier = (call_expression "vtabCallConstructor(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr)" identifier (argument_list "(psVar1,pTVar5,pMod,psVar2->xConnect,&zErr)" ( identifier , identifier , identifier , (field_expression "psVar2->xConnect" identifier -> field_identifier) , (pointer_expression "&zErr" & identifier) )))) ;) (if_statement "if (iVar4 == 0) {\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n                  pTVar5 = pMod->pEpoTab;\n                  goto LAB_001a2efe;\n                }" { (expression_statement "pTVar5 = pMod->pEpoTab;" (assignment_expression "pTVar5 = pMod->pEpoTab" identifier = (field_expression "pMod->pEpoTab" identifier -> field_identifier)) ;) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;) })) (expression_statement "sqlite3ErrorMsg(pParse,"%s",zErr);" (call_expression "sqlite3ErrorMsg(pParse,"%s",zErr)" identifier (argument_list "(pParse,"%s",zErr)" ( identifier , (string_literal ""%s"" " string_content ") , identifier ))) ;) (if_statement "if (zErr != (char *)0x0) {\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }" if (parenthesized_expression "(zErr != (char *)0x0)" ( (binary_expression "zErr != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  sqlite3DbFreeNN(psVar1,zErr);\n                }" { (expression_statement "sqlite3DbFreeNN(psVar1,zErr);" (call_expression "sqlite3DbFreeNN(psVar1,zErr)" identifier (argument_list "(psVar1,zErr)" ( identifier , identifier ))) ;) })) (expression_statement "pTVar5 = pMod->pEpoTab;" (assignment_expression "pTVar5 = pMod->pEpoTab" identifier = (field_expression "pMod->pEpoTab" identifier -> field_identifier)) ;) (if_statement "if (pTVar5 != (Table *)0x0) {\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }" if (parenthesized_expression "(pTVar5 != (Table *)0x0)" ( (binary_expression "pTVar5 != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pTVar5->tabFlags = pTVar5->tabFlags | 2;\n                  sqlite3DeleteTable(psVar1,pTVar5);\n                  pMod->pEpoTab = (Table *)0x0;\n                }" { (expression_statement "pTVar5->tabFlags = pTVar5->tabFlags | 2;" (assignment_expression "pTVar5->tabFlags = pTVar5->tabFlags | 2" (field_expression "pTVar5->tabFlags" identifier -> field_identifier) = (binary_expression "pTVar5->tabFlags | 2" (field_expression "pTVar5->tabFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "sqlite3DeleteTable(psVar1,pTVar5);" (call_expression "sqlite3DeleteTable(psVar1,pTVar5)" identifier (argument_list "(psVar1,pTVar5)" ( identifier , identifier ))) ;) (expression_statement "pMod->pEpoTab = (Table *)0x0;" (assignment_expression "pMod->pEpoTab = (Table *)0x0" (field_expression "pMod->pEpoTab" identifier -> field_identifier) = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))) })) })) })) })) (if_statement "if ((flags & 2) != 0) goto LAB_001a2f7c;" if (parenthesized_expression "((flags & 2) != 0)" ( (binary_expression "(flags & 2) != 0" (parenthesized_expression "(flags & 2)" ( (binary_expression "flags & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001a2f7c;" goto statement_identifier ;)) (expression_statement "pParse->checkSchema = '\x01';" (assignment_expression "pParse->checkSchema = '\x01'" (field_expression "pParse->checkSchema" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) }) (else_clause "else if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;" else (if_statement "if ((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;" if (parenthesized_expression "((pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0'))" ( (binary_expression "(pTVar5->nModuleArg == 0) || (pParse->disableVtab == '\0')" (parenthesized_expression "(pTVar5->nModuleArg == 0)" ( (binary_expression "pTVar5->nModuleArg == 0" (field_expression "pTVar5->nModuleArg" identifier -> field_identifier) == number_literal) )) || (parenthesized_expression "(pParse->disableVtab == '\0')" ( (binary_expression "pParse->disableVtab == '\0'" (field_expression "pParse->disableVtab" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;)))) (expression_statement "pcVar7 = "no such view";" (assignment_expression "pcVar7 = "no such view"" identifier = (string_literal ""no such view"" " string_content ")) ;) (if_statement "if ((flags & 1) == 0) {\n      pcVar7 = "no such table";\n    }" if (parenthesized_expression "((flags & 1) == 0)" ( (binary_expression "(flags & 1) == 0" (parenthesized_expression "(flags & 1)" ( (binary_expression "flags & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar7 = "no such table";\n    }" { (expression_statement "pcVar7 = "no such table";" (assignment_expression "pcVar7 = "no such table"" identifier = (string_literal ""no such table"" " string_content ")) ;) })) (if_statement "if (zDbase != (char *)0x0) {\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }" if (parenthesized_expression "(zDbase != (char *)0x0)" ( (binary_expression "zDbase != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);\n      pTVar5 = (Table *)0x0;\n      goto LAB_001a2efe;\n    }" { (expression_statement "sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName);" (call_expression "sqlite3ErrorMsg(pParse,"%s: %s.%s",pcVar7,zDbase,zName)" identifier (argument_list "(pParse,"%s: %s.%s",pcVar7,zDbase,zName)" ( identifier , (string_literal ""%s: %s.%s"" " string_content ") , identifier , identifier , identifier ))) ;) (expression_statement "pTVar5 = (Table *)0x0;" (assignment_expression "pTVar5 = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;) })) (expression_statement "sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName);" (call_expression "sqlite3ErrorMsg(pParse,"%s: %s",pcVar7,zName)" identifier (argument_list "(pParse,"%s: %s",pcVar7,zName)" ( identifier , (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (labeled_statement "LAB_001a2f7c:\n  pTVar5 = (Table *)0x0;" statement_identifier : (expression_statement "pTVar5 = (Table *)0x0;" (assignment_expression "pTVar5 = (Table *)0x0" identifier = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "LAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(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 pTVar5;" return identifier ;) })))
(translation_unit "long FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)\n\n{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return lVar4;\n}\n\n" (function_definition "long FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)\n\n{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return lVar4;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)" identifier (parameter_list "(long *param_1,ulong param_2,long param_3,long param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return lVar4;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_48;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(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) ))))) ;) (if_statement "if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }" if (parenthesized_expression "(((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0))" ( (binary_expression "((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)" (parenthesized_expression "((*(byte *)(lVar2 + 0x2c) & 8) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x2c) & 8) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x2c) & 8)" ( (binary_expression "*(byte *)(lVar2 + 0x2c) & 8" (pointer_expression "*(byte *)(lVar2 + 0x2c)" * (cast_expression "(byte *)(lVar2 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x2c)" ( (binary_expression "lVar2 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(iVar3 = FUN_001a27f0(), iVar3 == 0)" ( (comma_expression "iVar3 = FUN_001a27f0(), iVar3 == 0" (assignment_expression "iVar3 = FUN_001a27f0()" identifier = (call_expression "FUN_001a27f0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }" { (expression_statement "lVar4 = FUN_0011ca50(lVar2,param_3,param_4);" (assignment_expression "lVar4 = FUN_0011ca50(lVar2,param_3,param_4)" identifier = (call_expression "FUN_0011ca50(lVar2,param_3,param_4)" identifier (argument_list "(lVar2,param_3,param_4)" ( identifier , identifier , identifier )))) ;) (if_statement "if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }" { (if_statement "if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(*(char *)((long)param_1 + 0x25) == '\0')" ( (binary_expression "*(char *)((long)param_1 + 0x25) == '\0'" (pointer_expression "*(char *)((long)param_1 + 0x25)" * (cast_expression "(char *)((long)param_1 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x25)" ( (binary_expression "(long)param_1 + 0x25" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);" (assignment_expression "lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0)" identifier = (call_expression "FUN_00110300(lVar2 + 0x1d8,param_3,0)" identifier (argument_list "(lVar2 + 0x1d8,param_3,0)" ( (binary_expression "lVar2 + 0x1d8" identifier + number_literal) , identifier , number_literal )))) ;) (expression_statement "plVar8 = *(long **)(lVar4 + 0x10);" (assignment_expression "plVar8 = *(long **)(lVar4 + 0x10)" identifier = (pointer_expression "*(long **)(lVar4 + 0x10)" * (cast_expression "(long **)(lVar4 + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0))))" ( (binary_expression "(plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))" (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))" ( (parenthesized_expression "(((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0))" ( (binary_expression "((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)" (parenthesized_expression "((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0))" ( (binary_expression "(iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)" (parenthesized_expression "(iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0))" ( (comma_expression "iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (assignment_expression "iVar3 = FUN_0011cf00(param_3,"pragma_",7)" identifier = (call_expression "FUN_0011cf00(param_3,"pragma_",7)" identifier (argument_list "(param_3,"pragma_",7)" ( identifier , (string_literal ""pragma_"" " string_content ") , number_literal )))) , (binary_expression "iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (binary_expression "iVar3 == 0" identifier == number_literal) && (parenthesized_expression "(lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" ( (comma_expression "lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0" (assignment_expression "lVar4 = FUN_0011cce0(param_3 + 7)" identifier = (call_expression "FUN_0011cce0(param_3 + 7)" identifier (argument_list "(param_3 + 7)" ( (binary_expression "param_3 + 7" identifier + number_literal) )))) , (binary_expression "lVar4 != 0" identifier != number_literal)) )))) )) && (parenthesized_expression "((*(byte *)(lVar4 + 9) & 0x30) != 0)" ( (binary_expression "(*(byte *)(lVar4 + 9) & 0x30) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 9) & 0x30)" ( (binary_expression "*(byte *)(lVar4 + 9) & 0x30" (pointer_expression "*(byte *)(lVar4 + 9)" * (cast_expression "(byte *)(lVar4 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 9)" ( (binary_expression "lVar4 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)" ( (comma_expression "plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0" (assignment_expression "plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" identifier = (cast_expression "(long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" identifier (argument_list "(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" ( identifier , identifier , (pointer_expression "&DAT_0021d6e0" & identifier) , identifier , number_literal ))))) , (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) (compound_statement "{\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "lVar4 = plVar8[4];" (assignment_expression "lVar4 = plVar8[4]" identifier = (subscript_expression "plVar8[4]" identifier [ number_literal ])) ;) (expression_statement "lVar2 = *plVar8;" (assignment_expression "lVar2 = *plVar8" identifier = (pointer_expression "*plVar8" * identifier)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (lVar4 != 0) goto LAB_001a2efe;" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;)) (if_statement "if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }" if (parenthesized_expression "((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10)))" ( (binary_expression "(*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))" (parenthesized_expression "(*(long *)(lVar2 + 8) == 0)" ( (binary_expression "*(long *)(lVar2 + 8) == 0" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))" ( (binary_expression "*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10)" (pointer_expression "*(long *)(lVar2 + 8)" * (cast_expression "(long *)(lVar2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) )))) == (pointer_expression "*(long *)(lVar2 + 0x10)" * (cast_expression "(long *)(lVar2 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) ))))) ))) )) (compound_statement "{\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }" { (expression_statement "lVar4 = *param_1;" (assignment_expression "lVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);" (assignment_expression "plVar5 = (long *)FUN_0011b8f0(lVar4,0x80)" identifier = (cast_expression "(long *)FUN_0011b8f0(lVar4,0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0011b8f0(lVar4,0x80)" identifier (argument_list "(lVar4,0x80)" ( identifier , number_literal ))))) ;) (if_statement "if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }" if (parenthesized_expression "(plVar5 != (long *)0x0)" ( (binary_expression "plVar5 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }" { (expression_statement "lVar6 = FUN_0011bd40(lVar4,plVar8[1]);" (assignment_expression "lVar6 = FUN_0011bd40(lVar4,plVar8[1])" identifier = (call_expression "FUN_0011bd40(lVar4,plVar8[1])" identifier (argument_list "(lVar4,plVar8[1])" ( identifier , (subscript_expression "plVar8[1]" identifier [ number_literal ]) )))) ;) (expression_statement "*plVar5 = lVar6;" (assignment_expression "*plVar5 = lVar6" (pointer_expression "*plVar5" * identifier) = identifier) ;) (if_statement "if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                FUN_00119e90(lVar4,plVar5);\n              }" { (expression_statement "FUN_00119e90(lVar4,plVar5);" (call_expression "FUN_00119e90(lVar4,plVar5)" identifier (argument_list "(lVar4,plVar5)" ( identifier , identifier ))) ;) }) (else_clause "else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" else (compound_statement "{\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" { (expression_statement "plVar8[4] = (long)plVar5;" (assignment_expression "plVar8[4] = (long)plVar5" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(undefined4 *)((long)plVar5 + 0x3c) = 1;" (assignment_expression "*(undefined4 *)((long)plVar5 + 0x3c) = 1" (pointer_expression "*(undefined4 *)((long)plVar5 + 0x3c)" * (cast_expression "(undefined4 *)((long)plVar5 + 0x3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar5 + 0x3c)" ( (binary_expression "(long)plVar5 + 0x3c" (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);" (assignment_expression "lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18)" identifier = (pointer_expression "*(long *)(*(long *)(lVar4 + 0x20) + 0x18)" * (cast_expression "(long *)(*(long *)(lVar4 + 0x20) + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x20) + 0x18)" ( (binary_expression "*(long *)(lVar4 + 0x20) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(undefined2 *)((long)plVar5 + 0x44) = 0xffff;" (assignment_expression "*(undefined2 *)((long)plVar5 + 0x44) = 0xffff" (pointer_expression "*(undefined2 *)((long)plVar5 + 0x44)" * (cast_expression "(undefined2 *)((long)plVar5 + 0x44)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar5 + 0x44)" ( (binary_expression "(long)plVar5 + 0x44" (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "plVar5[0xe] = lVar6;" (assignment_expression "plVar5[0xe] = lVar6" (subscript_expression "plVar5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = FUN_0011bd40(lVar4,*plVar5);" (assignment_expression "uVar7 = FUN_0011bd40(lVar4,*plVar5)" identifier = (call_expression "FUN_0011bd40(lVar4,*plVar5)" identifier (argument_list "(lVar4,*plVar5)" ( identifier , (pointer_expression "*plVar5" * identifier) )))) ;) (expression_statement "FUN_00150b10(param_1,plVar5,uVar7);" (call_expression "FUN_00150b10(param_1,plVar5,uVar7)" identifier (argument_list "(param_1,plVar5,uVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00150b10(param_1,plVar5,0);" (call_expression "FUN_00150b10(param_1,plVar5,0)" identifier (argument_list "(param_1,plVar5,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar7 = FUN_0011bd40(lVar4,*plVar5);" (assignment_expression "uVar7 = FUN_0011bd40(lVar4,*plVar5)" identifier = (call_expression "FUN_0011bd40(lVar4,*plVar5)" identifier (argument_list "(lVar4,*plVar5)" ( identifier , (pointer_expression "*plVar5" * identifier) )))) ;) (expression_statement "FUN_00150b10(param_1,plVar5,uVar7);" (call_expression "FUN_00150b10(param_1,plVar5,uVar7)" identifier (argument_list "(param_1,plVar5,uVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);" (assignment_expression "iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" identifier = (call_expression "FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" identifier (argument_list "(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" ( identifier , identifier , identifier , (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" * (cast_expression "(undefined8 *)(lVar2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x10)" ( (binary_expression "lVar2 + 0x10" identifier + number_literal) )))) , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }" { (expression_statement "lVar4 = plVar8[4];" (assignment_expression "lVar4 = plVar8[4]" identifier = (subscript_expression "plVar8[4]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;) })) (expression_statement "FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);" (call_expression "FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48)" identifier (argument_list "(param_1,&DAT_001e9d2f,local_48)" ( identifier , (pointer_expression "&DAT_001e9d2f" & identifier) , identifier ))) ;) (if_statement "if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00119e90(lVar4);\n                }" { (expression_statement "FUN_00119e90(lVar4);" (call_expression "FUN_00119e90(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) })) (if_statement "if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }" if (parenthesized_expression "(plVar8[4] != 0)" ( (binary_expression "plVar8[4] != 0" (subscript_expression "plVar8[4]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }" { (expression_statement "puVar1 = (uint *)(plVar8[4] + 0x40);" (assignment_expression "puVar1 = (uint *)(plVar8[4] + 0x40)" identifier = (cast_expression "(uint *)(plVar8[4] + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar8[4] + 0x40)" ( (binary_expression "plVar8[4] + 0x40" (subscript_expression "plVar8[4]" identifier [ number_literal ]) + number_literal) )))) ;) (expression_statement "*puVar1 = *puVar1 | 2;" (assignment_expression "*puVar1 = *puVar1 | 2" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 2" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "FUN_0012dbd0(lVar4);" (call_expression "FUN_0012dbd0(lVar4)" identifier (argument_list "(lVar4)" ( identifier ))) ;) (expression_statement "plVar8[4] = 0;" (assignment_expression "plVar8[4] = 0" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = number_literal) ;) })) }))) })) })) })) })) (if_statement "if ((param_2 & 2) != 0) goto LAB_001a2f7c;" if (parenthesized_expression "((param_2 & 2) != 0)" ( (binary_expression "(param_2 & 2) != 0" (parenthesized_expression "(param_2 & 2)" ( (binary_expression "param_2 & 2" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001a2f7c;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((long)param_1 + 0x1d) = 1;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x1d) = 1" (pointer_expression "*(undefined1 *)((long)param_1 + 0x1d)" * (cast_expression "(undefined1 *)((long)param_1 + 0x1d)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x1d)" ( (binary_expression "(long)param_1 + 0x1d" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) }) (else_clause "else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" else (if_statement "if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" if (parenthesized_expression "((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))" ( (binary_expression "(*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0')" (parenthesized_expression "(*(int *)(lVar4 + 0x54) == 0)" ( (binary_expression "*(int *)(lVar4 + 0x54) == 0" (pointer_expression "*(int *)(lVar4 + 0x54)" * (cast_expression "(int *)(lVar4 + 0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x54)" ( (binary_expression "lVar4 + 0x54" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(char *)((long)param_1 + 0x25) == '\0')" ( (binary_expression "*(char *)((long)param_1 + 0x25) == '\0'" (pointer_expression "*(char *)((long)param_1 + 0x25)" * (cast_expression "(char *)((long)param_1 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x25)" ( (binary_expression "(long)param_1 + 0x25" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;)))) (expression_statement "pcVar9 = "no such view";" (assignment_expression "pcVar9 = "no such view"" identifier = (string_literal ""no such view"" " string_content ")) ;) (if_statement "if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }" if (parenthesized_expression "((param_2 & 1) == 0)" ( (binary_expression "(param_2 & 1) == 0" (parenthesized_expression "(param_2 & 1)" ( (binary_expression "param_2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar9 = "no such table";\n    }" { (expression_statement "pcVar9 = "no such table";" (assignment_expression "pcVar9 = "no such table"" identifier = (string_literal ""no such table"" " string_content ")) ;) })) (if_statement "if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }" { (expression_statement "FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);" (call_expression "FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3)" identifier (argument_list "(param_1,"%s: %s.%s",pcVar9,param_4,param_3)" ( identifier , (string_literal ""%s: %s.%s"" " string_content ") , identifier , identifier , identifier ))) ;) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_001a2efe;" goto statement_identifier ;) })) (expression_statement "FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);" (call_expression "FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3)" identifier (argument_list "(param_1,"%s: %s",pcVar9,param_3)" ( identifier , (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (labeled_statement "LAB_001a2f7c:\n  lVar4 = 0;" statement_identifier : (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;)) (labeled_statement "LAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(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 lVar4;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) , (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT != 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) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , IDENT , LIT ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) }))) })) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = LIT) ;) }) (else_clause else (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) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (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 "long FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)\n\n{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return lVar4;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_001a2ea0(long *param_1,ulong param_2,long param_3,long param_4)" (identifier "FUN_001a2ea0") (parameter_list "(long *param_1,ulong param_2,long param_3,long param_4)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  long lVar2;\n  int iVar3;\n  long lVar4;\n  long *plVar5;\n  long lVar6;\n  undefined8 uVar7;\n  long *plVar8;\n  char *pcVar9;\n  long in_FS_OFFSET;\n  long local_48;\n  long local_40;\n  \n  lVar2 = *param_1;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }\nLAB_001a2f7c:\n  lVar4 = 0;\nLAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return lVar4;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "long local_48;" (sized_type_specifier "long" (long "long")) (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "lVar2 = *param_1;" (assignment_expression "lVar2 = *param_1" (identifier "lVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }" (if "if") (parenthesized_expression "(((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0))" (( "(") (binary_expression "((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)" (parenthesized_expression "((*(byte *)(lVar2 + 0x2c) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(lVar2 + 0x2c) & 8) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x2c) & 8)" (( "(") (binary_expression "*(byte *)(lVar2 + 0x2c) & 8" (pointer_expression "*(byte *)(lVar2 + 0x2c)" (* "*") (cast_expression "(byte *)(lVar2 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x2c)" (( "(") (binary_expression "lVar2 + 0x2c" (identifier "lVar2") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = FUN_001a27f0(), iVar3 == 0)" (( "(") (comma_expression "iVar3 = FUN_001a27f0(), iVar3 == 0" (assignment_expression "iVar3 = FUN_001a27f0()" (identifier "iVar3") (= "=") (call_expression "FUN_001a27f0()" (identifier "FUN_001a27f0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);\n    if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;\n    pcVar9 = "no such view";\n    if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }\n    if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }\n    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);\n  }" ({ "{") (expression_statement "lVar4 = FUN_0011ca50(lVar2,param_3,param_4);" (assignment_expression "lVar4 = FUN_0011ca50(lVar2,param_3,param_4)" (identifier "lVar4") (= "=") (call_expression "FUN_0011ca50(lVar2,param_3,param_4)" (identifier "FUN_0011ca50") (argument_list "(lVar2,param_3,param_4)" (( "(") (identifier "lVar2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (if_statement "if (lVar4 == 0) {\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }\n    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }\n      if ((param_2 & 2) != 0) goto LAB_001a2f7c;\n      *(undefined1 *)((long)param_1 + 0x1d) = 1;\n    }" ({ "{") (if_statement "if (*(char *)((long)param_1 + 0x25) == '\0') {\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(*(char *)((long)param_1 + 0x25) == '\0')" (( "(") (binary_expression "*(char *)((long)param_1 + 0x25) == '\0'" (pointer_expression "*(char *)((long)param_1 + 0x25)" (* "*") (cast_expression "(char *)((long)param_1 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x25)" (( "(") (binary_expression "(long)param_1 + 0x25" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x25")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);\n        plVar8 = *(long **)(lVar4 + 0x10);\n        if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);" (assignment_expression "lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0)" (identifier "lVar4") (= "=") (call_expression "FUN_00110300(lVar2 + 0x1d8,param_3,0)" (identifier "FUN_00110300") (argument_list "(lVar2 + 0x1d8,param_3,0)" (( "(") (binary_expression "lVar2 + 0x1d8" (identifier "lVar2") (+ "+") (number_literal "0x1d8")) (, ",") (identifier "param_3") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "plVar8 = *(long **)(lVar4 + 0x10);" (assignment_expression "plVar8 = *(long **)(lVar4 + 0x10)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(lVar4 + 0x10)" (* "*") (cast_expression "(long **)(lVar4 + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))) {\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "((plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0))))" (( "(") (binary_expression "(plVar8 != (long *)0x0) ||\n           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))" (parenthesized_expression "(plVar8 != (long *)0x0)" (( "(") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)))" (( "(") (parenthesized_expression "(((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0))" (( "(") (binary_expression "((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&\n            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)" (parenthesized_expression "((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0))" (( "(") (binary_expression "(iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&\n             ((*(byte *)(lVar4 + 9) & 0x30) != 0)" (parenthesized_expression "(iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0))" (( "(") (comma_expression "iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (assignment_expression "iVar3 = FUN_0011cf00(param_3,"pragma_",7)" (identifier "iVar3") (= "=") (call_expression "FUN_0011cf00(param_3,"pragma_",7)" (identifier "FUN_0011cf00") (argument_list "(param_3,"pragma_",7)" (( "(") (identifier "param_3") (, ",") (string_literal ""pragma_"" (" """) (string_content "pragma_") (" """)) (, ",") (number_literal "7") () ")")))) (, ",") (binary_expression "iVar3 == 0 &&\n              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)" (( "(") (comma_expression "lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0" (assignment_expression "lVar4 = FUN_0011cce0(param_3 + 7)" (identifier "lVar4") (= "=") (call_expression "FUN_0011cce0(param_3 + 7)" (identifier "FUN_0011cce0") (argument_list "(param_3 + 7)" (( "(") (binary_expression "param_3 + 7" (identifier "param_3") (+ "+") (number_literal "7")) () ")")))) (, ",") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0"))) () ")")))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(lVar4 + 9) & 0x30) != 0)" (( "(") (binary_expression "(*(byte *)(lVar4 + 9) & 0x30) != 0" (parenthesized_expression "(*(byte *)(lVar4 + 9) & 0x30)" (( "(") (binary_expression "*(byte *)(lVar4 + 9) & 0x30" (pointer_expression "*(byte *)(lVar4 + 9)" (* "*") (cast_expression "(byte *)(lVar4 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 9)" (( "(") (binary_expression "lVar4 + 9" (identifier "lVar4") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x30")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0)" (( "(") (comma_expression "plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),\n            plVar8 != (long *)0x0" (assignment_expression "plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" (identifier "plVar8") (= "=") (cast_expression "(long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" (identifier "FUN_0011e090") (argument_list "(lVar2,param_3,&DAT_0021d6e0,lVar4,0)" (( "(") (identifier "lVar2") (, ",") (identifier "param_3") (, ",") (pointer_expression "&DAT_0021d6e0" (& "&") (identifier "DAT_0021d6e0")) (, ",") (identifier "lVar4") (, ",") (number_literal "0") () ")"))))) (, ",") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n          lVar4 = plVar8[4];\n          lVar2 = *plVar8;\n          local_48 = 0;\n          if (lVar4 != 0) goto LAB_001a2efe;\n          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "lVar4 = plVar8[4];" (assignment_expression "lVar4 = plVar8[4]" (identifier "lVar4") (= "=") (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "lVar2 = *plVar8;" (assignment_expression "lVar2 = *plVar8" (identifier "lVar2") (= "=") (pointer_expression "*plVar8" (* "*") (identifier "plVar8"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar4 != 0) goto LAB_001a2efe;" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001a2efe;" (goto "goto") (statement_identifier "LAB_001a2efe") (; ";"))) (if_statement "if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }" (if "if") (parenthesized_expression "((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10)))" (( "(") (binary_expression "(*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))" (parenthesized_expression "(*(long *)(lVar2 + 8) == 0)" (( "(") (binary_expression "*(long *)(lVar2 + 8) == 0" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))" (( "(") (binary_expression "*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10)" (pointer_expression "*(long *)(lVar2 + 8)" (* "*") (cast_expression "(long *)(lVar2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 8)" (( "(") (binary_expression "lVar2 + 8" (identifier "lVar2") (+ "+") (number_literal "8")) () ")")))) (== "==") (pointer_expression "*(long *)(lVar2 + 0x10)" (* "*") (cast_expression "(long *)(lVar2 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n            lVar4 = *param_1;\n            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);\n            if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }\n          }" ({ "{") (expression_statement "lVar4 = *param_1;" (assignment_expression "lVar4 = *param_1" (identifier "lVar4") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);" (assignment_expression "plVar5 = (long *)FUN_0011b8f0(lVar4,0x80)" (identifier "plVar5") (= "=") (cast_expression "(long *)FUN_0011b8f0(lVar4,0x80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0011b8f0(lVar4,0x80)" (identifier "FUN_0011b8f0") (argument_list "(lVar4,0x80)" (( "(") (identifier "lVar4") (, ",") (number_literal "0x80") () ")"))))) (; ";")) (if_statement "if (plVar5 != (long *)0x0) {\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }" (if "if") (parenthesized_expression "(plVar5 != (long *)0x0)" (( "(") (binary_expression "plVar5 != (long *)0x0" (identifier "plVar5") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);\n              *plVar5 = lVar6;\n              if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }\n            }" ({ "{") (expression_statement "lVar6 = FUN_0011bd40(lVar4,plVar8[1]);" (assignment_expression "lVar6 = FUN_0011bd40(lVar4,plVar8[1])" (identifier "lVar6") (= "=") (call_expression "FUN_0011bd40(lVar4,plVar8[1])" (identifier "FUN_0011bd40") (argument_list "(lVar4,plVar8[1])" (( "(") (identifier "lVar4") (, ",") (subscript_expression "plVar8[1]" (identifier "plVar8") ([ "[") (number_literal "1") (] "]")) () ")")))) (; ";")) (expression_statement "*plVar5 = lVar6;" (assignment_expression "*plVar5 = lVar6" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (= "=") (identifier "lVar6")) (; ";")) (if_statement "if (lVar6 == 0) {\n                FUN_00119e90(lVar4,plVar5);\n              }\n              else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_00119e90(lVar4,plVar5);\n              }" ({ "{") (expression_statement "FUN_00119e90(lVar4,plVar5);" (call_expression "FUN_00119e90(lVar4,plVar5)" (identifier "FUN_00119e90") (argument_list "(lVar4,plVar5)" (( "(") (identifier "lVar4") (, ",") (identifier "plVar5") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" (else "else") (compound_statement "{\n                plVar8[4] = (long)plVar5;\n                *(undefined4 *)((long)plVar5 + 0x3c) = 1;\n                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);\n                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;\n                plVar5[0xe] = lVar6;\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                FUN_00150b10(param_1,plVar5,0);\n                uVar7 = FUN_0011bd40(lVar4,*plVar5);\n                FUN_00150b10(param_1,plVar5,uVar7);\n                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);\n                if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }\n                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);\n                if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }\n                if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }\n              }" ({ "{") (expression_statement "plVar8[4] = (long)plVar5;" (assignment_expression "plVar8[4] = (long)plVar5" (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)plVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar5"))) (; ";")) (expression_statement "*(undefined4 *)((long)plVar5 + 0x3c) = 1;" (assignment_expression "*(undefined4 *)((long)plVar5 + 0x3c) = 1" (pointer_expression "*(undefined4 *)((long)plVar5 + 0x3c)" (* "*") (cast_expression "(undefined4 *)((long)plVar5 + 0x3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar5 + 0x3c)" (( "(") (binary_expression "(long)plVar5 + 0x3c" (cast_expression "(long)plVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar5")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);" (assignment_expression "lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(*(long *)(lVar4 + 0x20) + 0x18)" (* "*") (cast_expression "(long *)(*(long *)(lVar4 + 0x20) + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar4 + 0x20) + 0x18)" (( "(") (binary_expression "*(long *)(lVar4 + 0x20) + 0x18" (pointer_expression "*(long *)(lVar4 + 0x20)" (* "*") (cast_expression "(long *)(lVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined2 *)((long)plVar5 + 0x44) = 0xffff;" (assignment_expression "*(undefined2 *)((long)plVar5 + 0x44) = 0xffff" (pointer_expression "*(undefined2 *)((long)plVar5 + 0x44)" (* "*") (cast_expression "(undefined2 *)((long)plVar5 + 0x44)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar5 + 0x44)" (( "(") (binary_expression "(long)plVar5 + 0x44" (cast_expression "(long)plVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar5")) (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "plVar5[0xe] = lVar6;" (assignment_expression "plVar5[0xe] = lVar6" (subscript_expression "plVar5[0xe]" (identifier "plVar5") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "lVar6")) (; ";")) (expression_statement "uVar7 = FUN_0011bd40(lVar4,*plVar5);" (assignment_expression "uVar7 = FUN_0011bd40(lVar4,*plVar5)" (identifier "uVar7") (= "=") (call_expression "FUN_0011bd40(lVar4,*plVar5)" (identifier "FUN_0011bd40") (argument_list "(lVar4,*plVar5)" (( "(") (identifier "lVar4") (, ",") (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) () ")")))) (; ";")) (expression_statement "FUN_00150b10(param_1,plVar5,uVar7);" (call_expression "FUN_00150b10(param_1,plVar5,uVar7)" (identifier "FUN_00150b10") (argument_list "(param_1,plVar5,uVar7)" (( "(") (identifier "param_1") (, ",") (identifier "plVar5") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "FUN_00150b10(param_1,plVar5,0);" (call_expression "FUN_00150b10(param_1,plVar5,0)" (identifier "FUN_00150b10") (argument_list "(param_1,plVar5,0)" (( "(") (identifier "param_1") (, ",") (identifier "plVar5") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar7 = FUN_0011bd40(lVar4,*plVar5);" (assignment_expression "uVar7 = FUN_0011bd40(lVar4,*plVar5)" (identifier "uVar7") (= "=") (call_expression "FUN_0011bd40(lVar4,*plVar5)" (identifier "FUN_0011bd40") (argument_list "(lVar4,*plVar5)" (( "(") (identifier "lVar4") (, ",") (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) () ")")))) (; ";")) (expression_statement "FUN_00150b10(param_1,plVar5,uVar7);" (call_expression "FUN_00150b10(param_1,plVar5,uVar7)" (identifier "FUN_00150b10") (argument_list "(param_1,plVar5,uVar7)" (( "(") (identifier "param_1") (, ",") (identifier "plVar5") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);" (assignment_expression "iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" (identifier "iVar3") (= "=") (call_expression "FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" (identifier "FUN_00151d20") (argument_list "(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48)" (( "(") (identifier "lVar4") (, ",") (identifier "plVar5") (, ",") (identifier "plVar8") (, ",") (pointer_expression "*(undefined8 *)(lVar2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x10)" (( "(") (binary_expression "lVar2 + 0x10" (identifier "lVar2") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  lVar4 = plVar8[4];\n                  goto LAB_001a2efe;\n                }" ({ "{") (expression_statement "lVar4 = plVar8[4];" (assignment_expression "lVar4 = plVar8[4]" (identifier "lVar4") (= "=") (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto LAB_001a2efe;" (goto "goto") (statement_identifier "LAB_001a2efe") (; ";")) (} "}"))) (expression_statement "FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);" (call_expression "FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48)" (identifier "FUN_0014a9d0") (argument_list "(param_1,&DAT_001e9d2f,local_48)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&DAT_001e9d2f" (& "&") (identifier "DAT_001e9d2f")) (, ",") (identifier "local_48") () ")"))) (; ";")) (if_statement "if (local_48 != 0) {\n                  FUN_00119e90(lVar4);\n                }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00119e90(lVar4);\n                }" ({ "{") (expression_statement "FUN_00119e90(lVar4);" (call_expression "FUN_00119e90(lVar4)" (identifier "FUN_00119e90") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")"))) (; ";")) (} "}"))) (if_statement "if (plVar8[4] != 0) {\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }" (if "if") (parenthesized_expression "(plVar8[4] != 0)" (( "(") (binary_expression "plVar8[4] != 0" (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  puVar1 = (uint *)(plVar8[4] + 0x40);\n                  *puVar1 = *puVar1 | 2;\n                  FUN_0012dbd0(lVar4);\n                  plVar8[4] = 0;\n                }" ({ "{") (expression_statement "puVar1 = (uint *)(plVar8[4] + 0x40);" (assignment_expression "puVar1 = (uint *)(plVar8[4] + 0x40)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(plVar8[4] + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar8[4] + 0x40)" (( "(") (binary_expression "plVar8[4] + 0x40" (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0x40")) () ")")))) (; ";")) (expression_statement "*puVar1 = *puVar1 | 2;" (assignment_expression "*puVar1 = *puVar1 | 2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 | 2" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (| "|") (number_literal "2"))) (; ";")) (expression_statement "FUN_0012dbd0(lVar4);" (call_expression "FUN_0012dbd0(lVar4)" (identifier "FUN_0012dbd0") (argument_list "(lVar4)" (( "(") (identifier "lVar4") () ")"))) (; ";")) (expression_statement "plVar8[4] = 0;" (assignment_expression "plVar8[4] = 0" (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (if_statement "if ((param_2 & 2) != 0) goto LAB_001a2f7c;" (if "if") (parenthesized_expression "((param_2 & 2) != 0)" (( "(") (binary_expression "(param_2 & 2) != 0" (parenthesized_expression "(param_2 & 2)" (( "(") (binary_expression "param_2 & 2" (identifier "param_2") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001a2f7c;" (goto "goto") (statement_identifier "LAB_001a2f7c") (; ";"))) (expression_statement "*(undefined1 *)((long)param_1 + 0x1d) = 1;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x1d) = 1" (pointer_expression "*(undefined1 *)((long)param_1 + 0x1d)" (* "*") (cast_expression "(undefined1 *)((long)param_1 + 0x1d)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x1d)" (( "(") (binary_expression "(long)param_1 + 0x1d" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" (else "else") (if_statement "if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))\n    goto LAB_001a2efe;" (if "if") (parenthesized_expression "((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))" (( "(") (binary_expression "(*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0')" (parenthesized_expression "(*(int *)(lVar4 + 0x54) == 0)" (( "(") (binary_expression "*(int *)(lVar4 + 0x54) == 0" (pointer_expression "*(int *)(lVar4 + 0x54)" (* "*") (cast_expression "(int *)(lVar4 + 0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x54)" (( "(") (binary_expression "lVar4 + 0x54" (identifier "lVar4") (+ "+") (number_literal "0x54")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)((long)param_1 + 0x25) == '\0')" (( "(") (binary_expression "*(char *)((long)param_1 + 0x25) == '\0'" (pointer_expression "*(char *)((long)param_1 + 0x25)" (* "*") (cast_expression "(char *)((long)param_1 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x25)" (( "(") (binary_expression "(long)param_1 + 0x25" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x25")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_001a2efe;" (goto "goto") (statement_identifier "LAB_001a2efe") (; ";"))))) (expression_statement "pcVar9 = "no such view";" (assignment_expression "pcVar9 = "no such view"" (identifier "pcVar9") (= "=") (string_literal ""no such view"" (" """) (string_content "no such view") (" """))) (; ";")) (if_statement "if ((param_2 & 1) == 0) {\n      pcVar9 = "no such table";\n    }" (if "if") (parenthesized_expression "((param_2 & 1) == 0)" (( "(") (binary_expression "(param_2 & 1) == 0" (parenthesized_expression "(param_2 & 1)" (( "(") (binary_expression "param_2 & 1" (identifier "param_2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar9 = "no such table";\n    }" ({ "{") (expression_statement "pcVar9 = "no such table";" (assignment_expression "pcVar9 = "no such table"" (identifier "pcVar9") (= "=") (string_literal ""no such table"" (" """) (string_content "no such table") (" """))) (; ";")) (} "}"))) (if_statement "if (param_4 != 0) {\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);\n      lVar4 = 0;\n      goto LAB_001a2efe;\n    }" ({ "{") (expression_statement "FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);" (call_expression "FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3)" (identifier "FUN_0014a9d0") (argument_list "(param_1,"%s: %s.%s",pcVar9,param_4,param_3)" (( "(") (identifier "param_1") (, ",") (string_literal ""%s: %s.%s"" (" """) (string_content "%s: %s.%s") (" """)) (, ",") (identifier "pcVar9") (, ",") (identifier "param_4") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" (identifier "lVar4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_001a2efe;" (goto "goto") (statement_identifier "LAB_001a2efe") (; ";")) (} "}"))) (expression_statement "FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);" (call_expression "FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3)" (identifier "FUN_0014a9d0") (argument_list "(param_1,"%s: %s",pcVar9,param_3)" (( "(") (identifier "param_1") (, ",") (string_literal ""%s: %s"" (" """) (string_content "%s: %s") (" """)) (, ",") (identifier "pcVar9") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_001a2f7c:\n  lVar4 = 0;" (statement_identifier "LAB_001a2f7c") (: ":") (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" (identifier "lVar4") (= "=") (number_literal "0")) (; ";"))) (labeled_statement "LAB_001a2efe:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_001a2efe") (: ":") (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (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 lVar4;" (return "return") (identifier "lVar4") (; ";")) (} "}")))

type_1 * function_1(type_2 *pParse,type_3 var_22,char *var_10,char *var_23)

{
  type_4 *psVar1;
  type_5 *psVar2;
  type_6 *pSVar3;
  int var_3;
  type_1 *var_5;
  type_7 *pHVar6;
  type_8 *var_11;
  type_9 *var_7;
  char *var_15;
  long var_1;
  char *var_20;
  long var_24;
  
  psVar1 = pParse->db;
  var_24 = *(long *)(var_1 + 0x28);
  if (((psVar1->mDbFlags & 8) != 0) || (var_3 = var_2(pParse), var_3 == 0)) {
    var_5 = var_4(psVar1,var_10,var_23);
    if (var_5 == (type_1 *)0x0) {
      if (pParse->disableVtab == '\0') {
        pHVar6 = var_6(&psVar1->aModule,var_10,(type_10 *)0x0);
        var_7 = (type_9 *)pHVar6->data;
        if ((var_7 != (type_9 *)0x0) ||
           ((((var_3 = var_8(var_10,"pragma_",7), var_3 == 0 &&
              (var_11 = var_9(var_10 + 7), var_11 != (type_8 *)0x0)) &&
             ((var_11->mPragFlg & 0x30) != 0)) &&
            (var_7 = var_12
                              (psVar1,var_10,&pragmaVtabModule,var_11,(type_11 *)0x0),
            var_7 != (type_9 *)0x0)))) {
          var_5 = var_7->pEpoTab;
          psVar2 = var_7->pModule;
          var_20 = (char *)0x0;
          if (var_5 != (type_1 *)0x0) goto LAB_001a2efe;
          if ((psVar2->xCreate ==
               (type_12 *)
               0x0) || (psVar2->xCreate == psVar2->xConnect)) {
            psVar1 = pParse->db;
            var_5 = (type_1 *)var_13(psVar1,0x80);
            if (var_5 != (type_1 *)0x0) {
              var_15 = var_14(psVar1,var_7->var_10);
              var_5->var_10 = var_15;
              if (var_15 == (char *)0x0) {
                var_16(psVar1,var_5);
              }
              else {
                var_7->pEpoTab = var_5;
                var_5->nTabRef = 1;
                pSVar3 = psVar1->aDb->pSchema;
                var_5->iPKey = -1;
                var_5->pSchema = pSVar3;
                var_15 = var_14(psVar1,var_5->var_10);
                var_17(pParse,var_5,var_15);
                var_17(pParse,var_5,(char *)0x0);
                var_15 = var_14(psVar1,var_5->var_10);
                var_17(pParse,var_5,var_15);
                var_3 = var_18(psVar1,var_5,var_7,psVar2->xConnect,&var_20);
                if (var_3 == 0) {
                  var_5 = var_7->pEpoTab;
                  goto LAB_001a2efe;
                }
                var_19(pParse,"%s",var_20);
                if (var_20 != (char *)0x0) {
                  var_16(psVar1,var_20);
                }
                var_5 = var_7->pEpoTab;
                if (var_5 != (type_1 *)0x0) {
                  var_5->tabFlags = var_5->tabFlags | 2;
                  var_21(psVar1,var_5);
                  var_7->pEpoTab = (type_1 *)0x0;
                }
              }
            }
          }
        }
      }
      if ((var_22 & 2) != 0) goto LAB_001a2f7c;
      pParse->checkSchema = '\x01';
    }
    else if ((var_5->nModuleArg == 0) || (pParse->disableVtab == '\0')) goto LAB_001a2efe;
    var_15 = "no such view";
    if ((var_22 & 1) == 0) {
      var_15 = "no such table";
    }
    if (var_23 != (char *)0x0) {
      var_19(pParse,"%s: %s.%s",var_15,var_23,var_10);
      var_5 = (type_1 *)0x0;
      goto LAB_001a2efe;
    }
    var_19(pParse,"%s: %s",var_15,var_10);
  }
LAB_001a2f7c:
  var_5 = (type_1 *)0x0;
LAB_001a2efe:
  if (var_24 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_25();
  }
  return var_5;
}


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

long MASKED(long *param_1,ulong param_2,long param_3,long param_4)

{
  uint *puVar1;
  long lVar2;
  int iVar3;
  long lVar4;
  long *plVar5;
  long lVar6;
  undefined8 uVar7;
  long *plVar8;
  char *pcVar9;
  long in_FS_OFFSET;
  long local_48;
  long local_40;
  
  lVar2 = *param_1;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (((*(byte *)(lVar2 + 0x2c) & 8) != 0) || (iVar3 = FUN_001a27f0(), iVar3 == 0)) {
    lVar4 = FUN_0011ca50(lVar2,param_3,param_4);
    if (lVar4 == 0) {
      if (*(char *)((long)param_1 + 0x25) == '\0') {
        lVar4 = FUN_00110300(lVar2 + 0x1d8,param_3,0);
        plVar8 = *(long **)(lVar4 + 0x10);
        if ((plVar8 != (long *)0x0) ||
           ((((iVar3 = FUN_0011cf00(param_3,"pragma_",7), iVar3 == 0 &&
              (lVar4 = FUN_0011cce0(param_3 + 7), lVar4 != 0)) &&
             ((*(byte *)(lVar4 + 9) & 0x30) != 0)) &&
            (plVar8 = (long *)FUN_0011e090(lVar2,param_3,&DAT_0021d6e0,lVar4,0),
            plVar8 != (long *)0x0)))) {
          lVar4 = plVar8[4];
          lVar2 = *plVar8;
          local_48 = 0;
          if (lVar4 != 0) goto LAB_001a2efe;
          if ((*(long *)(lVar2 + 8) == 0) || (*(long *)(lVar2 + 8) == *(long *)(lVar2 + 0x10))) {
            lVar4 = *param_1;
            plVar5 = (long *)FUN_0011b8f0(lVar4,0x80);
            if (plVar5 != (long *)0x0) {
              lVar6 = FUN_0011bd40(lVar4,plVar8[1]);
              *plVar5 = lVar6;
              if (lVar6 == 0) {
                FUN_00119e90(lVar4,plVar5);
              }
              else {
                plVar8[4] = (long)plVar5;
                *(undefined4 *)((long)plVar5 + 0x3c) = 1;
                lVar6 = *(long *)(*(long *)(lVar4 + 0x20) + 0x18);
                *(undefined2 *)((long)plVar5 + 0x44) = 0xffff;
                plVar5[0xe] = lVar6;
                uVar7 = FUN_0011bd40(lVar4,*plVar5);
                FUN_00150b10(param_1,plVar5,uVar7);
                FUN_00150b10(param_1,plVar5,0);
                uVar7 = FUN_0011bd40(lVar4,*plVar5);
                FUN_00150b10(param_1,plVar5,uVar7);
                iVar3 = FUN_00151d20(lVar4,plVar5,plVar8,*(undefined8 *)(lVar2 + 0x10),&local_48);
                if (iVar3 == 0) {
                  lVar4 = plVar8[4];
                  goto LAB_001a2efe;
                }
                FUN_0014a9d0(param_1,&DAT_001e9d2f,local_48);
                if (local_48 != 0) {
                  FUN_00119e90(lVar4);
                }
                if (plVar8[4] != 0) {
                  puVar1 = (uint *)(plVar8[4] + 0x40);
                  *puVar1 = *puVar1 | 2;
                  FUN_0012dbd0(lVar4);
                  plVar8[4] = 0;
                }
              }
            }
          }
        }
      }
      if ((param_2 & 2) != 0) goto LAB_001a2f7c;
      *(undefined1 *)((long)param_1 + 0x1d) = 1;
    }
    else if ((*(int *)(lVar4 + 0x54) == 0) || (*(char *)((long)param_1 + 0x25) == '\0'))
    goto LAB_001a2efe;
    pcVar9 = "no such view";
    if ((param_2 & 1) == 0) {
      pcVar9 = "no such table";
    }
    if (param_4 != 0) {
      FUN_0014a9d0(param_1,"%s: %s.%s",pcVar9,param_4,param_3);
      lVar4 = 0;
      goto LAB_001a2efe;
    }
    FUN_0014a9d0(param_1,"%s: %s",pcVar9,param_3);
  }
LAB_001a2f7c:
  lVar4 = 0;
LAB_001a2efe:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return lVar4;
}

