
void pager_unlock(Pager *pPager)

{
  uint uVar1;
  int iVar2;
  sqlite3_io_methods *psVar3;
  sqlite3_file *psVar4;
  
  sqlite3BitvecDestroy(pPager->pInJournal);
  pPager->pInJournal = (Bitvec *)0x0;
  releaseAllSavepoints(pPager);
  if (pPager->pWal == (Wal *)0x0) {
    if (pPager->exclusiveMode == '\0') {
      psVar3 = pPager->fd->pMethods;
      if (psVar3 == (sqlite3_io_methods *)0x0) {
        psVar4 = pPager->jfd;
        psVar3 = psVar4->pMethods;
        if (psVar3 != (sqlite3_io_methods *)0x0) {
LAB_0012f296:
          (*psVar3->xClose)(psVar4);
          psVar4->pMethods = (sqlite3_io_methods *)0x0;
          goto LAB_0012f2a4;
        }
      }
      else {
        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);
        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {
          psVar4 = pPager->jfd;
          psVar3 = psVar4->pMethods;
          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;
        }
LAB_0012f2a4:
        psVar3 = pPager->fd->pMethods;
        if (psVar3 != (sqlite3_io_methods *)0x0) {
          if (pPager->noLock == '\0') {
            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);
            if (pPager->eLock != '\x05') {
              pPager->eLock = '\0';
            }
            if ((iVar2 != 0) && (pPager->eState == '\x06')) {
              pPager->eLock = '\x05';
            }
          }
          else if (pPager->eLock != '\x05') {
            pPager->eLock = '\0';
          }
        }
      }
      pPager->changeCountDone = '\0';
      pPager->eState = '\0';
    }
  }
  else {
    sqlite3WalEndReadTransaction(pPager->pWal);
    pPager->eState = '\0';
  }
  if (pPager->errCode != 0) {
    if (pPager->tempFile == '\0') {
      pager_reset(pPager);
      pPager->changeCountDone = '\0';
      pPager->eState = '\0';
    }
    else {
      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;
    }
    if (pPager->bUseFetch == '\0') {
      pPager->errCode = 0;
    }
    else {
      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);
      pPager->errCode = 0;
      if (pPager->bUseFetch != '\0') {
        pPager->xGet = getPageMMap;
        goto LAB_0012f242;
      }
    }
    pPager->xGet = getPageNormal;
  }
LAB_0012f242:
  pPager->journalOff = 0;
  pPager->journalHdr = 0;
  pPager->setMaster = '\0';
  return;
}



void FUN_0012f1b0(long param_1)

{
  int iVar1;
  ulong uVar2;
  long lVar3;
  long *plVar4;
  
  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));
  *(undefined8 *)(param_1 + 0x40) = 0;
  FUN_0011ab90(param_1);
  if (*(long *)(param_1 + 0x120) == 0) {
    if (*(char *)(param_1 + 8) == '\0') {
      if (**(long **)(param_1 + 0x48) == 0) {
        plVar4 = *(long **)(param_1 + 0x50);
        lVar3 = *plVar4;
        if (lVar3 != 0) {
LAB_0012f296:
          (**(code **)(lVar3 + 8))(plVar4);
          *plVar4 = 0;
          goto LAB_0012f2a4;
        }
      }
      else {
        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();
        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {
          plVar4 = *(long **)(param_1 + 0x50);
          lVar3 = *plVar4;
          if (lVar3 != 0) goto LAB_0012f296;
        }
LAB_0012f2a4:
        lVar3 = **(long **)(param_1 + 0x48);
        if (lVar3 != 0) {
          if (*(char *)(param_1 + 0x11) == '\0') {
            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);
            if (*(char *)(param_1 + 0x15) != '\x05') {
              *(undefined1 *)(param_1 + 0x15) = 0;
            }
            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {
              *(undefined1 *)(param_1 + 0x15) = 5;
            }
          }
          else if (*(char *)(param_1 + 0x15) != '\x05') {
            *(undefined1 *)(param_1 + 0x15) = 0;
          }
        }
      }
      *(undefined1 *)(param_1 + 0x16) = 0;
      *(undefined1 *)(param_1 + 0x14) = 0;
    }
  }
  else {
    FUN_0011f5e0();
    *(undefined1 *)(param_1 + 0x14) = 0;
  }
  if (*(int *)(param_1 + 0x2c) != 0) {
    if (*(char *)(param_1 + 0x10) == '\0') {
      FUN_0011e520(param_1);
      *(undefined1 *)(param_1 + 0x16) = 0;
      *(undefined1 *)(param_1 + 0x14) = 0;
    }
    else {
      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;
    }
    if (*(char *)(param_1 + 0x1a) == '\0') {
      *(undefined4 *)(param_1 + 0x2c) = 0;
    }
    else {
      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);
      *(undefined4 *)(param_1 + 0x2c) = 0;
      if (*(char *)(param_1 + 0x1a) != '\0') {
        *(code **)(param_1 + 0x108) = FUN_0016e360;
        goto LAB_0012f242;
      }
    }
    *(code **)(param_1 + 0x108) = FUN_0016e090;
  }
LAB_0012f242:
  *(undefined8 *)(param_1 + 0x60) = 0;
  *(undefined8 *)(param_1 + 0x68) = 0;
  *(undefined1 *)(param_1 + 0x17) = 0;
  return;
}


PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV RDI,qword ptr [RDI + 0x40]
CALL 0x0011aa90
MOV qword ptr [RBX + 0x40],0x0
MOV RDI,RBX
CALL 0x0011ab90
MOV RDI,qword ptr [RBX + 0x120]
TEST RDI,RDI
JZ 0x0012f260
CALL 0x0011f5e0
MOV byte ptr [RBX + 0x14],0x0
MOV EAX,dword ptr [RBX + 0x2c]
TEST EAX,EAX
JZ 0x0012f242
CMP byte ptr [RBX + 0x10],0x0
JZ 0x0012f328
MOV RAX,qword ptr [RBX + 0x50]
CMP qword ptr [RAX],0x0
SETZ byte ptr [RBX + 0x14]
CMP byte ptr [RBX + 0x1a],0x0
JZ 0x0012f2f0
MOV RDI,qword ptr [RBX + 0x48]
XOR EDX,EDX
XOR ESI,ESI
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x90]
CMP byte ptr [RBX + 0x1a],0x0
MOV dword ptr [RBX + 0x2c],0x0
JZ 0x0012f2f7
LEA RAX,[0x16e360]
MOV qword ptr [RBX + 0x108],RAX
MOV qword ptr [RBX + 0x60],0x0
MOV qword ptr [RBX + 0x68],0x0
MOV byte ptr [RBX + 0x17],0x0
ADD RSP,0x8
POP RBX
POP RBP
RET
CMP byte ptr [RBX + 0x8],0x0
JNZ 0x0012f1eb
MOV RDI,qword ptr [RBX + 0x48]
MOV RAX,qword ptr [RDI]
TEST RAX,RAX
JZ 0x0012f310
CALL qword ptr [RAX + 0x60]
TEST AH,0x8
JZ 0x0012f289
MOVZX EAX,byte ptr [RBX + 0x9]
AND EAX,0x5
CMP AL,0x1
JZ 0x0012f2a4
MOV RBP,qword ptr [RBX + 0x50]
MOV RAX,qword ptr [RBP]
TEST RAX,RAX
JZ 0x0012f2a4
MOV RDI,RBP
CALL qword ptr [RAX + 0x8]
MOV qword ptr [RBP],0x0
MOV RDI,qword ptr [RBX + 0x48]
MOV RAX,qword ptr [RDI]
TEST RAX,RAX
JZ 0x0012f2e0
CMP byte ptr [RBX + 0x11],0x0
JNZ 0x0012f340
XOR ESI,ESI
CALL qword ptr [RAX + 0x40]
CMP byte ptr [RBX + 0x15],0x5
JZ 0x0012f2c9
MOV byte ptr [RBX + 0x15],0x0
TEST EAX,EAX
JZ 0x0012f2e0
CMP byte ptr [RBX + 0x14],0x6
JNZ 0x0012f2e0
MOV byte ptr [RBX + 0x15],0x5
NOP word ptr [RAX + RAX*0x1]
MOV byte ptr [RBX + 0x16],0x0
MOV byte ptr [RBX + 0x14],0x0
JMP 0x0012f1eb
MOV dword ptr [RBX + 0x2c],0x0
LEA RAX,[0x16e090]
MOV qword ptr [RBX + 0x108],RAX
JMP 0x0012f242
MOV RBP,qword ptr [RBX + 0x50]
MOV RAX,qword ptr [RBP]
TEST RAX,RAX
JNZ 0x0012f296
JMP 0x0012f2e0
MOV RDI,RBX
CALL 0x0011e520
MOV byte ptr [RBX + 0x16],0x0
MOV byte ptr [RBX + 0x14],0x0
JMP 0x0012f208
CMP byte ptr [RBX + 0x15],0x5
JZ 0x0012f2e0
MOV byte ptr [RBX + 0x15],0x0
JMP 0x0012f2e0
(translation_unit "void FUN_0012f1b0(long param_1)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}\n\n" (function_definition "void FUN_0012f1b0(long param_1)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_0012f1b0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (expression_statement "FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));" (call_expression "FUN_0011aa90(*(undefined8 *)(param_1 + 0x40))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x40))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0011ab90(param_1);" (call_expression "FUN_0011ab90(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x120) == 0)" ( (binary_expression "*(long *)(param_1 + 0x120) == 0" (pointer_expression "*(long *)(param_1 + 0x120)" * (cast_expression "(long *)(param_1 + 0x120)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }" { (if_statement "if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 8) == '\0')" ( (binary_expression "*(char *)(param_1 + 8) == '\0'" (pointer_expression "*(char *)(param_1 + 8)" * (cast_expression "(char *)(param_1 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" { (if_statement "if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" if (parenthesized_expression "(**(long **)(param_1 + 0x48) == 0)" ( (binary_expression "**(long **)(param_1 + 0x48) == 0" (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) == number_literal) )) (compound_statement "{\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }" { (expression_statement "plVar4 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar4;" (assignment_expression "lVar3 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (if_statement "if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }" { (labeled_statement "LAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);" statement_identifier : (expression_statement "(**(code **)(lVar3 + 8))(plVar4);" (call_expression "(**(code **)(lVar3 + 8))(plVar4)" (parenthesized_expression "(**(code **)(lVar3 + 8))" ( (pointer_expression "**(code **)(lVar3 + 8)" * (pointer_expression "*(code **)(lVar3 + 8)" * (cast_expression "(code **)(lVar3 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier ))) ;)) (expression_statement "*plVar4 = 0;" (assignment_expression "*plVar4 = 0" (pointer_expression "*plVar4" * identifier) = number_literal) ;) (goto_statement "goto LAB_0012f2a4;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" else (compound_statement "{\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" { (expression_statement "uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();" (assignment_expression "uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x60))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x60))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x48) + 0x60)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x48) + 0x60)" * (cast_expression "(code **)(**(long **)(param_1 + 0x48) + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x48) + 0x60)" ( (binary_expression "**(long **)(param_1 + 0x48) + 0x60" (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }" if (parenthesized_expression "(((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1))" ( (binary_expression "((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)" (parenthesized_expression "((uVar2 & 0x800) == 0)" ( (binary_expression "(uVar2 & 0x800) == 0" (parenthesized_expression "(uVar2 & 0x800)" ( (binary_expression "uVar2 & 0x800" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(param_1 + 9) & 5) != 1)" ( (binary_expression "(*(byte *)(param_1 + 9) & 5) != 1" (parenthesized_expression "(*(byte *)(param_1 + 9) & 5)" ( (binary_expression "*(byte *)(param_1 + 9) & 5" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }" { (expression_statement "plVar4 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar4;" (assignment_expression "lVar3 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (if_statement "if (lVar3 != 0) goto LAB_0012f296;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012f296;" goto statement_identifier ;)) })) (labeled_statement "LAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);" statement_identifier : (expression_statement "lVar3 = **(long **)(param_1 + 0x48);" (assignment_expression "lVar3 = **(long **)(param_1 + 0x48)" identifier = (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))))) ;)) (if_statement "if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }" { (if_statement "if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x11) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x11) == '\0'" (pointer_expression "*(char *)(param_1 + 0x11)" * (cast_expression "(char *)(param_1 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }" { (expression_statement "iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);" (assignment_expression "iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0)" identifier = (call_expression "(**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0)" (parenthesized_expression "(**(code **)(lVar3 + 0x40))" ( (pointer_expression "**(code **)(lVar3 + 0x40)" * (pointer_expression "*(code **)(lVar3 + 0x40)" * (cast_expression "(code **)(lVar3 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x40)" ( (binary_expression "lVar3 + 0x40" identifier + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x48),0)" ( (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }" if (parenthesized_expression "(*(char *)(param_1 + 0x15) != '\x05')" ( (binary_expression "*(char *)(param_1 + 0x15) != '\x05'" (pointer_expression "*(char *)(param_1 + 0x15)" * (cast_expression "(char *)(param_1 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" * (cast_expression "(undefined1 *)(param_1 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }" if (parenthesized_expression "((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06'))" ( (binary_expression "(iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x14) == '\x06')" ( (binary_expression "*(char *)(param_1 + 0x14) == '\x06'" (pointer_expression "*(char *)(param_1 + 0x14)" * (cast_expression "(char *)(param_1 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) == (char_literal "'\x06'" ' escape_sequence ')) ))) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0x15) = 5;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 5" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" * (cast_expression "(undefined1 *)(param_1 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) = number_literal) ;) })) }) (else_clause "else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" else (if_statement "if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x15) != '\x05')" ( (binary_expression "*(char *)(param_1 + 0x15) != '\x05'" (pointer_expression "*(char *)(param_1 + 0x15)" * (cast_expression "(char *)(param_1 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" { (expression_statement "*(undefined1 *)(param_1 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" * (cast_expression "(undefined1 *)(param_1 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) = number_literal) ;) })))) })) }))) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" * (cast_expression "(undefined1 *)(param_1 + 0x16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" else (compound_statement "{\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" { (expression_statement "FUN_0011f5e0();" (call_expression "FUN_0011f5e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) }))) (if_statement "if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x2c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x2c) != 0" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }" { (if_statement "if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x10) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x10) == '\0'" (pointer_expression "*(char *)(param_1 + 0x10)" * (cast_expression "(char *)(param_1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" { (expression_statement "FUN_0011e520(param_1);" (call_expression "FUN_0011e520(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" * (cast_expression "(undefined1 *)(param_1 + 0x16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" else (compound_statement "{\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" { (expression_statement "*(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;" (assignment_expression "*(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0" (pointer_expression "*(bool *)(param_1 + 0x14)" * (cast_expression "(bool *)(param_1 + 0x14)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "**(long **)(param_1 + 0x50) == 0" (pointer_expression "**(long **)(param_1 + 0x50)" * (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) == number_literal)) ;) }))) (if_statement "if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x1a) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x1a) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1a)" * (cast_expression "(char *)(param_1 + 0x1a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" else (compound_statement "{\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" { (expression_statement "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);" (call_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x48) + 0x90)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x48) + 0x90)" * (cast_expression "(code **)(**(long **)(param_1 + 0x48) + 0x90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x48) + 0x90)" ( (binary_expression "**(long **)(param_1 + 0x48) + 0x90" (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x48),0,0)" ( (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , number_literal , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x1a) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1a)" * (cast_expression "(char *)(param_1 + 0x1a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }" { (expression_statement "*(code **)(param_1 + 0x108) = FUN_0016e360;" (assignment_expression "*(code **)(param_1 + 0x108) = FUN_0016e360" (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0012f242;" goto statement_identifier ;) })) }))) (expression_statement "*(code **)(param_1 + 0x108) = FUN_0016e090;" (assignment_expression "*(code **)(param_1 + 0x108) = FUN_0016e090" (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;" statement_identifier : (expression_statement "*(undefined8 *)(param_1 + 0x60) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x60) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x60)" * (cast_expression "(undefined8 *)(param_1 + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined8 *)(param_1 + 0x68) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x68) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x68)" * (cast_expression "(undefined8 *)(param_1 + 0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x17) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x17) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x17)" * (cast_expression "(undefined1 *)(param_1 + 0x17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x17)" ( (binary_expression "param_1 + 0x17" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "void pager_unlock(Pager *pPager)\n\n{\n  uint uVar1;\n  int iVar2;\n  sqlite3_io_methods *psVar3;\n  sqlite3_file *psVar4;\n  \n  sqlite3BitvecDestroy(pPager->pInJournal);\n  pPager->pInJournal = (Bitvec *)0x0;\n  releaseAllSavepoints(pPager);\n  if (pPager->pWal == (Wal *)0x0) {\n    if (pPager->exclusiveMode == '\0') {\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n  }\n  else {\n    sqlite3WalEndReadTransaction(pPager->pWal);\n    pPager->eState = '\0';\n  }\n  if (pPager->errCode != 0) {\n    if (pPager->tempFile == '\0') {\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n    else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }\n    if (pPager->bUseFetch == '\0') {\n      pPager->errCode = 0;\n    }\n    else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }\n    pPager->xGet = getPageNormal;\n  }\nLAB_0012f242:\n  pPager->journalOff = 0;\n  pPager->journalHdr = 0;\n  pPager->setMaster = '\0';\n  return;\n}\n\n" (function_definition "void pager_unlock(Pager *pPager)\n\n{\n  uint uVar1;\n  int iVar2;\n  sqlite3_io_methods *psVar3;\n  sqlite3_file *psVar4;\n  \n  sqlite3BitvecDestroy(pPager->pInJournal);\n  pPager->pInJournal = (Bitvec *)0x0;\n  releaseAllSavepoints(pPager);\n  if (pPager->pWal == (Wal *)0x0) {\n    if (pPager->exclusiveMode == '\0') {\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n  }\n  else {\n    sqlite3WalEndReadTransaction(pPager->pWal);\n    pPager->eState = '\0';\n  }\n  if (pPager->errCode != 0) {\n    if (pPager->tempFile == '\0') {\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n    else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }\n    if (pPager->bUseFetch == '\0') {\n      pPager->errCode = 0;\n    }\n    else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }\n    pPager->xGet = getPageNormal;\n  }\nLAB_0012f242:\n  pPager->journalOff = 0;\n  pPager->journalHdr = 0;\n  pPager->setMaster = '\0';\n  return;\n}" primitive_type (function_declarator "pager_unlock(Pager *pPager)" identifier (parameter_list "(Pager *pPager)" ( (parameter_declaration "Pager *pPager" type_identifier (pointer_declarator "*pPager" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  sqlite3_io_methods *psVar3;\n  sqlite3_file *psVar4;\n  \n  sqlite3BitvecDestroy(pPager->pInJournal);\n  pPager->pInJournal = (Bitvec *)0x0;\n  releaseAllSavepoints(pPager);\n  if (pPager->pWal == (Wal *)0x0) {\n    if (pPager->exclusiveMode == '\0') {\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n  }\n  else {\n    sqlite3WalEndReadTransaction(pPager->pWal);\n    pPager->eState = '\0';\n  }\n  if (pPager->errCode != 0) {\n    if (pPager->tempFile == '\0') {\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n    else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }\n    if (pPager->bUseFetch == '\0') {\n      pPager->errCode = 0;\n    }\n    else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }\n    pPager->xGet = getPageNormal;\n  }\nLAB_0012f242:\n  pPager->journalOff = 0;\n  pPager->journalHdr = 0;\n  pPager->setMaster = '\0';\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "sqlite3_io_methods *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "sqlite3_file *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (expression_statement "sqlite3BitvecDestroy(pPager->pInJournal);" (call_expression "sqlite3BitvecDestroy(pPager->pInJournal)" identifier (argument_list "(pPager->pInJournal)" ( (field_expression "pPager->pInJournal" identifier -> field_identifier) ))) ;) (expression_statement "pPager->pInJournal = (Bitvec *)0x0;" (assignment_expression "pPager->pInJournal = (Bitvec *)0x0" (field_expression "pPager->pInJournal" identifier -> field_identifier) = (cast_expression "(Bitvec *)0x0" ( (type_descriptor "Bitvec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "releaseAllSavepoints(pPager);" (call_expression "releaseAllSavepoints(pPager)" identifier (argument_list "(pPager)" ( identifier ))) ;) (if_statement "if (pPager->pWal == (Wal *)0x0) {\n    if (pPager->exclusiveMode == '\0') {\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n  }\n  else {\n    sqlite3WalEndReadTransaction(pPager->pWal);\n    pPager->eState = '\0';\n  }" if (parenthesized_expression "(pPager->pWal == (Wal *)0x0)" ( (binary_expression "pPager->pWal == (Wal *)0x0" (field_expression "pPager->pWal" identifier -> field_identifier) == (cast_expression "(Wal *)0x0" ( (type_descriptor "Wal *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pPager->exclusiveMode == '\0') {\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n  }" { (if_statement "if (pPager->exclusiveMode == '\0') {\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }" if (parenthesized_expression "(pPager->exclusiveMode == '\0')" ( (binary_expression "pPager->exclusiveMode == '\0'" (field_expression "pPager->exclusiveMode" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      psVar3 = pPager->fd->pMethods;\n      if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }" { (expression_statement "psVar3 = pPager->fd->pMethods;" (assignment_expression "psVar3 = pPager->fd->pMethods" identifier = (field_expression "pPager->fd->pMethods" (field_expression "pPager->fd" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (psVar3 == (sqlite3_io_methods *)0x0) {\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }" if (parenthesized_expression "(psVar3 == (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar3 == (sqlite3_io_methods *)0x0" identifier == (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        psVar4 = pPager->jfd;\n        psVar3 = psVar4->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }\n      }" { (expression_statement "psVar4 = pPager->jfd;" (assignment_expression "psVar4 = pPager->jfd" identifier = (field_expression "pPager->jfd" identifier -> field_identifier)) ;) (expression_statement "psVar3 = psVar4->pMethods;" (assignment_expression "psVar3 = psVar4->pMethods" identifier = (field_expression "psVar4->pMethods" identifier -> field_identifier)) ;) (if_statement "if (psVar3 != (sqlite3_io_methods *)0x0) {\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }" if (parenthesized_expression "(psVar3 != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar3 != (sqlite3_io_methods *)0x0" identifier != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0012f296:\n          (*psVar3->xClose)(psVar4);\n          psVar4->pMethods = (sqlite3_io_methods *)0x0;\n          goto LAB_0012f2a4;\n        }" { (labeled_statement "LAB_0012f296:\n          (*psVar3->xClose)(psVar4);" statement_identifier : (expression_statement "(*psVar3->xClose)(psVar4);" (call_expression "(*psVar3->xClose)(psVar4)" (parenthesized_expression "(*psVar3->xClose)" ( (pointer_expression "*psVar3->xClose" * (field_expression "psVar3->xClose" identifier -> field_identifier)) )) (argument_list "(psVar4)" ( identifier ))) ;)) (expression_statement "psVar4->pMethods = (sqlite3_io_methods *)0x0;" (assignment_expression "psVar4->pMethods = (sqlite3_io_methods *)0x0" (field_expression "psVar4->pMethods" identifier -> field_identifier) = (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0012f2a4;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }" else (compound_statement "{\n        uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);\n        if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;\n        if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }\n      }" { (expression_statement "uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd);" (assignment_expression "uVar1 = (*psVar3->xDeviceCharacteristics)(pPager->fd)" identifier = (call_expression "(*psVar3->xDeviceCharacteristics)(pPager->fd)" (parenthesized_expression "(*psVar3->xDeviceCharacteristics)" ( (pointer_expression "*psVar3->xDeviceCharacteristics" * (field_expression "psVar3->xDeviceCharacteristics" identifier -> field_identifier)) )) (argument_list "(pPager->fd)" ( (field_expression "pPager->fd" identifier -> field_identifier) )))) ;) (if_statement "if (((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }" if (parenthesized_expression "(((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1))" ( (binary_expression "((uVar1 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)" (parenthesized_expression "((uVar1 & 0x800) == 0)" ( (binary_expression "(uVar1 & 0x800) == 0" (parenthesized_expression "(uVar1 & 0x800)" ( (binary_expression "uVar1 & 0x800" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((pPager->journalMode & 5) != 1)" ( (binary_expression "(pPager->journalMode & 5) != 1" (parenthesized_expression "(pPager->journalMode & 5)" ( (binary_expression "pPager->journalMode & 5" (field_expression "pPager->journalMode" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          psVar4 = pPager->jfd;\n          psVar3 = psVar4->pMethods;\n          if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;\n        }" { (expression_statement "psVar4 = pPager->jfd;" (assignment_expression "psVar4 = pPager->jfd" identifier = (field_expression "pPager->jfd" identifier -> field_identifier)) ;) (expression_statement "psVar3 = psVar4->pMethods;" (assignment_expression "psVar3 = psVar4->pMethods" identifier = (field_expression "psVar4->pMethods" identifier -> field_identifier)) ;) (if_statement "if (psVar3 != (sqlite3_io_methods *)0x0) goto LAB_0012f296;" if (parenthesized_expression "(psVar3 != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar3 != (sqlite3_io_methods *)0x0" identifier != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012f296;" goto statement_identifier ;)) })) (labeled_statement "LAB_0012f2a4:\n        psVar3 = pPager->fd->pMethods;" statement_identifier : (expression_statement "psVar3 = pPager->fd->pMethods;" (assignment_expression "psVar3 = pPager->fd->pMethods" identifier = (field_expression "pPager->fd->pMethods" (field_expression "pPager->fd" identifier -> field_identifier) -> field_identifier)) ;)) (if_statement "if (psVar3 != (sqlite3_io_methods *)0x0) {\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }" if (parenthesized_expression "(psVar3 != (sqlite3_io_methods *)0x0)" ( (binary_expression "psVar3 != (sqlite3_io_methods *)0x0" identifier != (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }\n        }" { (if_statement "if (pPager->noLock == '\0') {\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }\n          else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }" if (parenthesized_expression "(pPager->noLock == '\0')" ( (binary_expression "pPager->noLock == '\0'" (field_expression "pPager->noLock" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar2 = (*psVar3->xUnlock)(pPager->fd,0);\n            if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }\n            if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }\n          }" { (expression_statement "iVar2 = (*psVar3->xUnlock)(pPager->fd,0);" (assignment_expression "iVar2 = (*psVar3->xUnlock)(pPager->fd,0)" identifier = (call_expression "(*psVar3->xUnlock)(pPager->fd,0)" (parenthesized_expression "(*psVar3->xUnlock)" ( (pointer_expression "*psVar3->xUnlock" * (field_expression "psVar3->xUnlock" identifier -> field_identifier)) )) (argument_list "(pPager->fd,0)" ( (field_expression "pPager->fd" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (pPager->eLock != '\x05') {\n              pPager->eLock = '\0';\n            }" if (parenthesized_expression "(pPager->eLock != '\x05')" ( (binary_expression "pPager->eLock != '\x05'" (field_expression "pPager->eLock" identifier -> field_identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n              pPager->eLock = '\0';\n            }" { (expression_statement "pPager->eLock = '\0';" (assignment_expression "pPager->eLock = '\0'" (field_expression "pPager->eLock" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (if_statement "if ((iVar2 != 0) && (pPager->eState == '\x06')) {\n              pPager->eLock = '\x05';\n            }" if (parenthesized_expression "((iVar2 != 0) && (pPager->eState == '\x06'))" ( (binary_expression "(iVar2 != 0) && (pPager->eState == '\x06')" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(pPager->eState == '\x06')" ( (binary_expression "pPager->eState == '\x06'" (field_expression "pPager->eState" identifier -> field_identifier) == (char_literal "'\x06'" ' escape_sequence ')) ))) )) (compound_statement "{\n              pPager->eLock = '\x05';\n            }" { (expression_statement "pPager->eLock = '\x05';" (assignment_expression "pPager->eLock = '\x05'" (field_expression "pPager->eLock" identifier -> field_identifier) = (char_literal "'\x05'" ' escape_sequence ')) ;) })) }) (else_clause "else if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }" else (if_statement "if (pPager->eLock != '\x05') {\n            pPager->eLock = '\0';\n          }" if (parenthesized_expression "(pPager->eLock != '\x05')" ( (binary_expression "pPager->eLock != '\x05'" (field_expression "pPager->eLock" identifier -> field_identifier) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n            pPager->eLock = '\0';\n          }" { (expression_statement "pPager->eLock = '\0';" (assignment_expression "pPager->eLock = '\0'" (field_expression "pPager->eLock" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })))) })) }))) (expression_statement "pPager->changeCountDone = '\0';" (assignment_expression "pPager->changeCountDone = '\0'" (field_expression "pPager->changeCountDone" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pPager->eState = '\0';" (assignment_expression "pPager->eState = '\0'" (field_expression "pPager->eState" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) })) }) (else_clause "else {\n    sqlite3WalEndReadTransaction(pPager->pWal);\n    pPager->eState = '\0';\n  }" else (compound_statement "{\n    sqlite3WalEndReadTransaction(pPager->pWal);\n    pPager->eState = '\0';\n  }" { (expression_statement "sqlite3WalEndReadTransaction(pPager->pWal);" (call_expression "sqlite3WalEndReadTransaction(pPager->pWal)" identifier (argument_list "(pPager->pWal)" ( (field_expression "pPager->pWal" identifier -> field_identifier) ))) ;) (expression_statement "pPager->eState = '\0';" (assignment_expression "pPager->eState = '\0'" (field_expression "pPager->eState" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (if_statement "if (pPager->errCode != 0) {\n    if (pPager->tempFile == '\0') {\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n    else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }\n    if (pPager->bUseFetch == '\0') {\n      pPager->errCode = 0;\n    }\n    else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }\n    pPager->xGet = getPageNormal;\n  }" if (parenthesized_expression "(pPager->errCode != 0)" ( (binary_expression "pPager->errCode != 0" (field_expression "pPager->errCode" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    if (pPager->tempFile == '\0') {\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n    else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }\n    if (pPager->bUseFetch == '\0') {\n      pPager->errCode = 0;\n    }\n    else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }\n    pPager->xGet = getPageNormal;\n  }" { (if_statement "if (pPager->tempFile == '\0') {\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }\n    else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }" if (parenthesized_expression "(pPager->tempFile == '\0')" ( (binary_expression "pPager->tempFile == '\0'" (field_expression "pPager->tempFile" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pager_reset(pPager);\n      pPager->changeCountDone = '\0';\n      pPager->eState = '\0';\n    }" { (expression_statement "pager_reset(pPager);" (call_expression "pager_reset(pPager)" identifier (argument_list "(pPager)" ( identifier ))) ;) (expression_statement "pPager->changeCountDone = '\0';" (assignment_expression "pPager->changeCountDone = '\0'" (field_expression "pPager->changeCountDone" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pPager->eState = '\0';" (assignment_expression "pPager->eState = '\0'" (field_expression "pPager->eState" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }" else (compound_statement "{\n      pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;\n    }" { (expression_statement "pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0;" (assignment_expression "pPager->eState = pPager->jfd->pMethods == (sqlite3_io_methods *)0x0" (field_expression "pPager->eState" identifier -> field_identifier) = (binary_expression "pPager->jfd->pMethods == (sqlite3_io_methods *)0x0" (field_expression "pPager->jfd->pMethods" (field_expression "pPager->jfd" identifier -> field_identifier) -> field_identifier) == (cast_expression "(sqlite3_io_methods *)0x0" ( (type_descriptor "sqlite3_io_methods *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) }))) (if_statement "if (pPager->bUseFetch == '\0') {\n      pPager->errCode = 0;\n    }\n    else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }" if (parenthesized_expression "(pPager->bUseFetch == '\0')" ( (binary_expression "pPager->bUseFetch == '\0'" (field_expression "pPager->bUseFetch" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pPager->errCode = 0;\n    }" { (expression_statement "pPager->errCode = 0;" (assignment_expression "pPager->errCode = 0" (field_expression "pPager->errCode" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }" else (compound_statement "{\n      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);\n      pPager->errCode = 0;\n      if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }\n    }" { (expression_statement "(*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);" (call_expression "(*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0)" (parenthesized_expression "(*pPager->fd->pMethods->xUnfetch)" ( (pointer_expression "*pPager->fd->pMethods->xUnfetch" * (field_expression "pPager->fd->pMethods->xUnfetch" (field_expression "pPager->fd->pMethods" (field_expression "pPager->fd" identifier -> field_identifier) -> field_identifier) -> field_identifier)) )) (argument_list "(pPager->fd,0,(void *)0x0)" ( (field_expression "pPager->fd" identifier -> field_identifier) , number_literal , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "pPager->errCode = 0;" (assignment_expression "pPager->errCode = 0" (field_expression "pPager->errCode" identifier -> field_identifier) = number_literal) ;) (if_statement "if (pPager->bUseFetch != '\0') {\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }" if (parenthesized_expression "(pPager->bUseFetch != '\0')" ( (binary_expression "pPager->bUseFetch != '\0'" (field_expression "pPager->bUseFetch" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pPager->xGet = getPageMMap;\n        goto LAB_0012f242;\n      }" { (expression_statement "pPager->xGet = getPageMMap;" (assignment_expression "pPager->xGet = getPageMMap" (field_expression "pPager->xGet" identifier -> field_identifier) = identifier) ;) (goto_statement "goto LAB_0012f242;" goto statement_identifier ;) })) }))) (expression_statement "pPager->xGet = getPageNormal;" (assignment_expression "pPager->xGet = getPageNormal" (field_expression "pPager->xGet" identifier -> field_identifier) = identifier) ;) })) (labeled_statement "LAB_0012f242:\n  pPager->journalOff = 0;" statement_identifier : (expression_statement "pPager->journalOff = 0;" (assignment_expression "pPager->journalOff = 0" (field_expression "pPager->journalOff" identifier -> field_identifier) = number_literal) ;)) (expression_statement "pPager->journalHdr = 0;" (assignment_expression "pPager->journalHdr = 0" (field_expression "pPager->journalHdr" identifier -> field_identifier) = number_literal) ;) (expression_statement "pPager->setMaster = '\0';" (assignment_expression "pPager->setMaster = '\0'" (field_expression "pPager->setMaster" identifier -> field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0012f1b0(long param_1)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}\n\n" (function_definition "void FUN_0012f1b0(long param_1)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_0012f1b0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (expression_statement "FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));" (call_expression "FUN_0011aa90(*(undefined8 *)(param_1 + 0x40))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x40))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x40)" * (cast_expression "(undefined8 *)(param_1 + 0x40)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0011ab90(param_1);" (call_expression "FUN_0011ab90(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x120) == 0)" ( (binary_expression "*(long *)(param_1 + 0x120) == 0" (pointer_expression "*(long *)(param_1 + 0x120)" * (cast_expression "(long *)(param_1 + 0x120)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x120)" ( (binary_expression "param_1 + 0x120" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }" { (if_statement "if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 8) == '\0')" ( (binary_expression "*(char *)(param_1 + 8) == '\0'" (pointer_expression "*(char *)(param_1 + 8)" * (cast_expression "(char *)(param_1 + 8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" { (if_statement "if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" if (parenthesized_expression "(**(long **)(param_1 + 0x48) == 0)" ( (binary_expression "**(long **)(param_1 + 0x48) == 0" (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) == number_literal) )) (compound_statement "{\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }" { (expression_statement "plVar4 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar4;" (assignment_expression "lVar3 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (if_statement "if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }" { (labeled_statement "LAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);" statement_identifier : (expression_statement "(**(code **)(lVar3 + 8))(plVar4);" (call_expression "(**(code **)(lVar3 + 8))(plVar4)" (parenthesized_expression "(**(code **)(lVar3 + 8))" ( (pointer_expression "**(code **)(lVar3 + 8)" * (pointer_expression "*(code **)(lVar3 + 8)" * (cast_expression "(code **)(lVar3 + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) ))))) )) (argument_list "(plVar4)" ( identifier ))) ;)) (expression_statement "*plVar4 = 0;" (assignment_expression "*plVar4 = 0" (pointer_expression "*plVar4" * identifier) = number_literal) ;) (goto_statement "goto LAB_0012f2a4;" goto statement_identifier ;) })) }) (else_clause "else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" else (compound_statement "{\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" { (expression_statement "uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();" (assignment_expression "uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))()" identifier = (call_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x60))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x60))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x48) + 0x60)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x48) + 0x60)" * (cast_expression "(code **)(**(long **)(param_1 + 0x48) + 0x60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x48) + 0x60)" ( (binary_expression "**(long **)(param_1 + 0x48) + 0x60" (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }" if (parenthesized_expression "(((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1))" ( (binary_expression "((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)" (parenthesized_expression "((uVar2 & 0x800) == 0)" ( (binary_expression "(uVar2 & 0x800) == 0" (parenthesized_expression "(uVar2 & 0x800)" ( (binary_expression "uVar2 & 0x800" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "((*(byte *)(param_1 + 9) & 5) != 1)" ( (binary_expression "(*(byte *)(param_1 + 9) & 5) != 1" (parenthesized_expression "(*(byte *)(param_1 + 9) & 5)" ( (binary_expression "*(byte *)(param_1 + 9) & 5" (pointer_expression "*(byte *)(param_1 + 9)" * (cast_expression "(byte *)(param_1 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 9)" ( (binary_expression "param_1 + 9" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }" { (expression_statement "plVar4 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x50)" identifier = (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = *plVar4;" (assignment_expression "lVar3 = *plVar4" identifier = (pointer_expression "*plVar4" * identifier)) ;) (if_statement "if (lVar3 != 0) goto LAB_0012f296;" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012f296;" goto statement_identifier ;)) })) (labeled_statement "LAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);" statement_identifier : (expression_statement "lVar3 = **(long **)(param_1 + 0x48);" (assignment_expression "lVar3 = **(long **)(param_1 + 0x48)" identifier = (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))))) ;)) (if_statement "if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }" if (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }" { (if_statement "if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x11) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x11) == '\0'" (pointer_expression "*(char *)(param_1 + 0x11)" * (cast_expression "(char *)(param_1 + 0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }" { (expression_statement "iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);" (assignment_expression "iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0)" identifier = (call_expression "(**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0)" (parenthesized_expression "(**(code **)(lVar3 + 0x40))" ( (pointer_expression "**(code **)(lVar3 + 0x40)" * (pointer_expression "*(code **)(lVar3 + 0x40)" * (cast_expression "(code **)(lVar3 + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar3 + 0x40)" ( (binary_expression "lVar3 + 0x40" identifier + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x48),0)" ( (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }" if (parenthesized_expression "(*(char *)(param_1 + 0x15) != '\x05')" ( (binary_expression "*(char *)(param_1 + 0x15) != '\x05'" (pointer_expression "*(char *)(param_1 + 0x15)" * (cast_expression "(char *)(param_1 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" * (cast_expression "(undefined1 *)(param_1 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }" if (parenthesized_expression "((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06'))" ( (binary_expression "(iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')" (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x14) == '\x06')" ( (binary_expression "*(char *)(param_1 + 0x14) == '\x06'" (pointer_expression "*(char *)(param_1 + 0x14)" * (cast_expression "(char *)(param_1 + 0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) == (char_literal "'\x06'" ' escape_sequence ')) ))) )) (compound_statement "{\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }" { (expression_statement "*(undefined1 *)(param_1 + 0x15) = 5;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 5" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" * (cast_expression "(undefined1 *)(param_1 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) = number_literal) ;) })) }) (else_clause "else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" else (if_statement "if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" if (parenthesized_expression "(*(char *)(param_1 + 0x15) != '\x05')" ( (binary_expression "*(char *)(param_1 + 0x15) != '\x05'" (pointer_expression "*(char *)(param_1 + 0x15)" * (cast_expression "(char *)(param_1 + 0x15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) != (char_literal "'\x05'" ' escape_sequence ')) )) (compound_statement "{\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" { (expression_statement "*(undefined1 *)(param_1 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" * (cast_expression "(undefined1 *)(param_1 + 0x15)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x15)" ( (binary_expression "param_1 + 0x15" identifier + number_literal) )))) = number_literal) ;) })))) })) }))) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" * (cast_expression "(undefined1 *)(param_1 + 0x16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" else (compound_statement "{\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" { (expression_statement "FUN_0011f5e0();" (call_expression "FUN_0011f5e0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) }))) (if_statement "if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x2c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x2c) != 0" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }" { (if_statement "if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x10) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x10) == '\0'" (pointer_expression "*(char *)(param_1 + 0x10)" * (cast_expression "(char *)(param_1 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" { (expression_statement "FUN_0011e520(param_1);" (call_expression "FUN_0011e520(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" * (cast_expression "(undefined1 *)(param_1 + 0x16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" * (cast_expression "(undefined1 *)(param_1 + 0x14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" else (compound_statement "{\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" { (expression_statement "*(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;" (assignment_expression "*(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0" (pointer_expression "*(bool *)(param_1 + 0x14)" * (cast_expression "(bool *)(param_1 + 0x14)" ( (type_descriptor "bool *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "**(long **)(param_1 + 0x50) == 0" (pointer_expression "**(long **)(param_1 + 0x50)" * (pointer_expression "*(long **)(param_1 + 0x50)" * (cast_expression "(long **)(param_1 + 0x50)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) == number_literal)) ;) }))) (if_statement "if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" if (parenthesized_expression "(*(char *)(param_1 + 0x1a) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x1a) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1a)" * (cast_expression "(char *)(param_1 + 0x1a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }" { (expression_statement "*(undefined4 *)(param_1 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" else (compound_statement "{\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" { (expression_statement "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);" (call_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x48) + 0x90)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x48) + 0x90)" * (cast_expression "(code **)(**(long **)(param_1 + 0x48) + 0x90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x48) + 0x90)" ( (binary_expression "**(long **)(param_1 + 0x48) + 0x90" (pointer_expression "**(long **)(param_1 + 0x48)" * (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x48),0,0)" ( (pointer_expression "*(long **)(param_1 + 0x48)" * (cast_expression "(long **)(param_1 + 0x48)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , number_literal , number_literal ))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x1a) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1a)" * (cast_expression "(char *)(param_1 + 0x1a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a)" ( (binary_expression "param_1 + 0x1a" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }" { (expression_statement "*(code **)(param_1 + 0x108) = FUN_0016e360;" (assignment_expression "*(code **)(param_1 + 0x108) = FUN_0016e360" (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0012f242;" goto statement_identifier ;) })) }))) (expression_statement "*(code **)(param_1 + 0x108) = FUN_0016e090;" (assignment_expression "*(code **)(param_1 + 0x108) = FUN_0016e090" (pointer_expression "*(code **)(param_1 + 0x108)" * (cast_expression "(code **)(param_1 + 0x108)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) = identifier) ;) })) (labeled_statement "LAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;" statement_identifier : (expression_statement "*(undefined8 *)(param_1 + 0x60) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x60) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x60)" * (cast_expression "(undefined8 *)(param_1 + 0x60)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined8 *)(param_1 + 0x68) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x68) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x68)" * (cast_expression "(undefined8 *)(param_1 + 0x68)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x68)" ( (binary_expression "param_1 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 0x17) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x17) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x17)" * (cast_expression "(undefined1 *)(param_1 + 0x17)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x17)" ( (binary_expression "param_1 + 0x17" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) )) (compound_statement { (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) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (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 IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_0012f1b0(long param_1)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0012f1b0(long param_1)" (identifier "FUN_0012f1b0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));\n  *(undefined8 *)(param_1 + 0x40) = 0;\n  FUN_0011ab90(param_1);\n  if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }\n  if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }\nLAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;\n  *(undefined8 *)(param_1 + 0x68) = 0;\n  *(undefined1 *)(param_1 + 0x17) = 0;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (expression_statement "FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));" (call_expression "FUN_0011aa90(*(undefined8 *)(param_1 + 0x40))" (identifier "FUN_0011aa90") (argument_list "(*(undefined8 *)(param_1 + 0x40))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0011ab90(param_1);" (call_expression "FUN_0011ab90(param_1)" (identifier "FUN_0011ab90") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x120) == 0) {\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }\n  else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x120) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x120) == 0" (pointer_expression "*(long *)(param_1 + 0x120)" (* "*") (cast_expression "(long *)(param_1 + 0x120)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x120)" (( "(") (binary_expression "param_1 + 0x120" (identifier "param_1") (+ "+") (number_literal "0x120")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n  }" ({ "{") (if_statement "if (*(char *)(param_1 + 8) == '\0') {\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 8) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 8) == '\0'" (pointer_expression "*(char *)(param_1 + 8)" (* "*") (cast_expression "(char *)(param_1 + 8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" ({ "{") (if_statement "if (**(long **)(param_1 + 0x48) == 0) {\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }\n      else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(**(long **)(param_1 + 0x48) == 0)" (( "(") (binary_expression "**(long **)(param_1 + 0x48) == 0" (pointer_expression "**(long **)(param_1 + 0x48)" (* "*") (pointer_expression "*(long **)(param_1 + 0x48)" (* "*") (cast_expression "(long **)(param_1 + 0x48)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        plVar4 = *(long **)(param_1 + 0x50);\n        lVar3 = *plVar4;\n        if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }\n      }" ({ "{") (expression_statement "plVar4 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x50)" (identifier "plVar4") (= "=") (pointer_expression "*(long **)(param_1 + 0x50)" (* "*") (cast_expression "(long **)(param_1 + 0x50)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "lVar3 = *plVar4;" (assignment_expression "lVar3 = *plVar4" (identifier "lVar3") (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";")) (if_statement "if (lVar3 != 0) {\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);\n          *plVar4 = 0;\n          goto LAB_0012f2a4;\n        }" ({ "{") (labeled_statement "LAB_0012f296:\n          (**(code **)(lVar3 + 8))(plVar4);" (statement_identifier "LAB_0012f296") (: ":") (expression_statement "(**(code **)(lVar3 + 8))(plVar4);" (call_expression "(**(code **)(lVar3 + 8))(plVar4)" (parenthesized_expression "(**(code **)(lVar3 + 8))" (( "(") (pointer_expression "**(code **)(lVar3 + 8)" (* "*") (pointer_expression "*(code **)(lVar3 + 8)" (* "*") (cast_expression "(code **)(lVar3 + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")"))) (; ";"))) (expression_statement "*plVar4 = 0;" (assignment_expression "*plVar4 = 0" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0012f2a4;" (goto "goto") (statement_identifier "LAB_0012f2a4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" (else "else") (compound_statement "{\n        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();\n        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }\nLAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);\n        if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }\n      }" ({ "{") (expression_statement "uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();" (assignment_expression "uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))()" (identifier "uVar2") (= "=") (call_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x60))()" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x60))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x48) + 0x60)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x48) + 0x60)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x48) + 0x60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x48) + 0x60)" (( "(") (binary_expression "**(long **)(param_1 + 0x48) + 0x60" (pointer_expression "**(long **)(param_1 + 0x48)" (* "*") (pointer_expression "*(long **)(param_1 + 0x48)" (* "*") (cast_expression "(long **)(param_1 + 0x48)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (+ "+") (number_literal "0x60")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }" (if "if") (parenthesized_expression "(((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1))" (( "(") (binary_expression "((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)" (parenthesized_expression "((uVar2 & 0x800) == 0)" (( "(") (binary_expression "(uVar2 & 0x800) == 0" (parenthesized_expression "(uVar2 & 0x800)" (( "(") (binary_expression "uVar2 & 0x800" (identifier "uVar2") (& "&") (number_literal "0x800")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_1 + 9) & 5) != 1)" (( "(") (binary_expression "(*(byte *)(param_1 + 9) & 5) != 1" (parenthesized_expression "(*(byte *)(param_1 + 9) & 5)" (( "(") (binary_expression "*(byte *)(param_1 + 9) & 5" (pointer_expression "*(byte *)(param_1 + 9)" (* "*") (cast_expression "(byte *)(param_1 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 9)" (( "(") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n          plVar4 = *(long **)(param_1 + 0x50);\n          lVar3 = *plVar4;\n          if (lVar3 != 0) goto LAB_0012f296;\n        }" ({ "{") (expression_statement "plVar4 = *(long **)(param_1 + 0x50);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x50)" (identifier "plVar4") (= "=") (pointer_expression "*(long **)(param_1 + 0x50)" (* "*") (cast_expression "(long **)(param_1 + 0x50)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "lVar3 = *plVar4;" (assignment_expression "lVar3 = *plVar4" (identifier "lVar3") (= "=") (pointer_expression "*plVar4" (* "*") (identifier "plVar4"))) (; ";")) (if_statement "if (lVar3 != 0) goto LAB_0012f296;" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012f296;" (goto "goto") (statement_identifier "LAB_0012f296") (; ";"))) (} "}"))) (labeled_statement "LAB_0012f2a4:\n        lVar3 = **(long **)(param_1 + 0x48);" (statement_identifier "LAB_0012f2a4") (: ":") (expression_statement "lVar3 = **(long **)(param_1 + 0x48);" (assignment_expression "lVar3 = **(long **)(param_1 + 0x48)" (identifier "lVar3") (= "=") (pointer_expression "**(long **)(param_1 + 0x48)" (* "*") (pointer_expression "*(long **)(param_1 + 0x48)" (* "*") (cast_expression "(long **)(param_1 + 0x48)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))))) (; ";"))) (if_statement "if (lVar3 != 0) {\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }" (if "if") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }\n        }" ({ "{") (if_statement "if (*(char *)(param_1 + 0x11) == '\0') {\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }\n          else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x11) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x11) == '\0'" (pointer_expression "*(char *)(param_1 + 0x11)" (* "*") (cast_expression "(char *)(param_1 + 0x11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11)" (( "(") (binary_expression "param_1 + 0x11" (identifier "param_1") (+ "+") (number_literal "0x11")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);\n            if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }\n            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }\n          }" ({ "{") (expression_statement "iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);" (assignment_expression "iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0)" (identifier "iVar1") (= "=") (call_expression "(**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0)" (parenthesized_expression "(**(code **)(lVar3 + 0x40))" (( "(") (pointer_expression "**(code **)(lVar3 + 0x40)" (* "*") (pointer_expression "*(code **)(lVar3 + 0x40)" (* "*") (cast_expression "(code **)(lVar3 + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar3 + 0x40)" (( "(") (binary_expression "lVar3 + 0x40" (identifier "lVar3") (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(*(long **)(param_1 + 0x48),0)" (( "(") (pointer_expression "*(long **)(param_1 + 0x48)" (* "*") (cast_expression "(long **)(param_1 + 0x48)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x15) != '\x05') {\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x15) != '\x05')" (( "(") (binary_expression "*(char *)(param_1 + 0x15) != '\x05'" (pointer_expression "*(char *)(param_1 + 0x15)" (* "*") (cast_expression "(char *)(param_1 + 0x15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x15)" (( "(") (binary_expression "param_1 + 0x15" (identifier "param_1") (+ "+") (number_literal "0x15")) () ")")))) (!= "!=") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n              *(undefined1 *)(param_1 + 0x15) = 0;\n            }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x15)" (( "(") (binary_expression "param_1 + 0x15" (identifier "param_1") (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }" (if "if") (parenthesized_expression "((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06'))" (( "(") (binary_expression "(iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')" (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x14) == '\x06')" (( "(") (binary_expression "*(char *)(param_1 + 0x14) == '\x06'" (pointer_expression "*(char *)(param_1 + 0x14)" (* "*") (cast_expression "(char *)(param_1 + 0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (char_literal "'\x06'" (' "'") (escape_sequence "\x06") (' "'"))) () ")"))) () ")")) (compound_statement "{\n              *(undefined1 *)(param_1 + 0x15) = 5;\n            }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x15) = 5;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 5" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x15)" (( "(") (binary_expression "param_1 + 0x15" (identifier "param_1") (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "5")) (; ";")) (} "}"))) (} "}")) (else_clause "else if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" (else "else") (if_statement "if (*(char *)(param_1 + 0x15) != '\x05') {\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x15) != '\x05')" (( "(") (binary_expression "*(char *)(param_1 + 0x15) != '\x05'" (pointer_expression "*(char *)(param_1 + 0x15)" (* "*") (cast_expression "(char *)(param_1 + 0x15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x15)" (( "(") (binary_expression "param_1 + 0x15" (identifier "param_1") (+ "+") (number_literal "0x15")) () ")")))) (!= "!=") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")")) (compound_statement "{\n            *(undefined1 *)(param_1 + 0x15) = 0;\n          }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0x15) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x15) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x15)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x15)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x15)" (( "(") (binary_expression "param_1 + 0x15" (identifier "param_1") (+ "+") (number_literal "0x15")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))))) (} "}"))) (} "}")))) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x16)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x16)" (( "(") (binary_expression "param_1 + 0x16" (identifier "param_1") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" (else "else") (compound_statement "{\n    FUN_0011f5e0();\n    *(undefined1 *)(param_1 + 0x14) = 0;\n  }" ({ "{") (expression_statement "FUN_0011f5e0();" (call_expression "FUN_0011f5e0()" (identifier "FUN_0011f5e0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (*(int *)(param_1 + 0x2c) != 0) {\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x2c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x2c) != 0" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }\n    if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }\n    *(code **)(param_1 + 0x108) = FUN_0016e090;\n  }" ({ "{") (if_statement "if (*(char *)(param_1 + 0x10) == '\0') {\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }\n    else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x10) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x10) == '\0'" (pointer_expression "*(char *)(param_1 + 0x10)" (* "*") (cast_expression "(char *)(param_1 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_0011e520(param_1);\n      *(undefined1 *)(param_1 + 0x16) = 0;\n      *(undefined1 *)(param_1 + 0x14) = 0;\n    }" ({ "{") (expression_statement "FUN_0011e520(param_1);" (call_expression "FUN_0011e520(param_1)" (identifier "FUN_0011e520") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x16)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x16)" (( "(") (binary_expression "param_1 + 0x16" (identifier "param_1") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" (else "else") (compound_statement "{\n      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;\n    }" ({ "{") (expression_statement "*(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;" (assignment_expression "*(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0" (pointer_expression "*(bool *)(param_1 + 0x14)" (* "*") (cast_expression "(bool *)(param_1 + 0x14)" (( "(") (type_descriptor "bool *" (primitive_type "bool") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "**(long **)(param_1 + 0x50) == 0" (pointer_expression "**(long **)(param_1 + 0x50)" (* "*") (pointer_expression "*(long **)(param_1 + 0x50)" (* "*") (cast_expression "(long **)(param_1 + 0x50)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (== "==") (number_literal "0"))) (; ";")) (} "}")))) (if_statement "if (*(char *)(param_1 + 0x1a) == '\0') {\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }\n    else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x1a) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x1a) == '\0'" (pointer_expression "*(char *)(param_1 + 0x1a)" (* "*") (cast_expression "(char *)(param_1 + 0x1a)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a)" (( "(") (binary_expression "param_1 + 0x1a" (identifier "param_1") (+ "+") (number_literal "0x1a")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n    }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" (else "else") (compound_statement "{\n      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);\n      *(undefined4 *)(param_1 + 0x2c) = 0;\n      if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }\n    }" ({ "{") (expression_statement "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);" (call_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x48) + 0x90))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x48) + 0x90)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x48) + 0x90)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x48) + 0x90)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x48) + 0x90)" (( "(") (binary_expression "**(long **)(param_1 + 0x48) + 0x90" (pointer_expression "**(long **)(param_1 + 0x48)" (* "*") (pointer_expression "*(long **)(param_1 + 0x48)" (* "*") (cast_expression "(long **)(param_1 + 0x48)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (+ "+") (number_literal "0x90")) () ")"))))) () ")")) (argument_list "(*(long **)(param_1 + 0x48),0,0)" (( "(") (pointer_expression "*(long **)(param_1 + 0x48)" (* "*") (cast_expression "(long **)(param_1 + 0x48)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x2c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x2c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(param_1 + 0x1a) != '\0') {\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x1a) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x1a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1a)" (* "*") (cast_expression "(char *)(param_1 + 0x1a)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a)" (( "(") (binary_expression "param_1 + 0x1a" (identifier "param_1") (+ "+") (number_literal "0x1a")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        *(code **)(param_1 + 0x108) = FUN_0016e360;\n        goto LAB_0012f242;\n      }" ({ "{") (expression_statement "*(code **)(param_1 + 0x108) = FUN_0016e360;" (assignment_expression "*(code **)(param_1 + 0x108) = FUN_0016e360" (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "FUN_0016e360")) (; ";")) (goto_statement "goto LAB_0012f242;" (goto "goto") (statement_identifier "LAB_0012f242") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(code **)(param_1 + 0x108) = FUN_0016e090;" (assignment_expression "*(code **)(param_1 + 0x108) = FUN_0016e090" (pointer_expression "*(code **)(param_1 + 0x108)" (* "*") (cast_expression "(code **)(param_1 + 0x108)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) (= "=") (identifier "FUN_0016e090")) (; ";")) (} "}"))) (labeled_statement "LAB_0012f242:\n  *(undefined8 *)(param_1 + 0x60) = 0;" (statement_identifier "LAB_0012f242") (: ":") (expression_statement "*(undefined8 *)(param_1 + 0x60) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x60) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x60)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x60)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined8 *)(param_1 + 0x68) = 0;" (assignment_expression "*(undefined8 *)(param_1 + 0x68) = 0" (pointer_expression "*(undefined8 *)(param_1 + 0x68)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x68)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x68)" (( "(") (binary_expression "param_1 + 0x68" (identifier "param_1") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x17) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x17) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x17)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x17)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x17)" (( "(") (binary_expression "param_1 + 0x17" (identifier "param_1") (+ "+") (number_literal "0x17")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pPager)

{
  type_2 var_4;
  int var_5;
  type_3 *var_3;
  type_4 *psVar4;
  
  var_1(pPager->pInJournal);
  pPager->pInJournal = (type_5 *)0x0;
  var_2(pPager);
  if (pPager->pWal == (type_6 *)0x0) {
    if (pPager->exclusiveMode == '\0') {
      var_3 = pPager->fd->pMethods;
      if (var_3 == (type_3 *)0x0) {
        psVar4 = pPager->jfd;
        var_3 = psVar4->pMethods;
        if (var_3 != (type_3 *)0x0) {
LAB_0012f296:
          (*var_3->xClose)(psVar4);
          psVar4->pMethods = (type_3 *)0x0;
          goto LAB_0012f2a4;
        }
      }
      else {
        var_4 = (*var_3->xDeviceCharacteristics)(pPager->fd);
        if (((var_4 & 0x800) == 0) || ((pPager->journalMode & 5) != 1)) {
          psVar4 = pPager->jfd;
          var_3 = psVar4->pMethods;
          if (var_3 != (type_3 *)0x0) goto LAB_0012f296;
        }
LAB_0012f2a4:
        var_3 = pPager->fd->pMethods;
        if (var_3 != (type_3 *)0x0) {
          if (pPager->noLock == '\0') {
            var_5 = (*var_3->xUnlock)(pPager->fd,0);
            if (pPager->eLock != '\x05') {
              pPager->eLock = '\0';
            }
            if ((var_5 != 0) && (pPager->eState == '\x06')) {
              pPager->eLock = '\x05';
            }
          }
          else if (pPager->eLock != '\x05') {
            pPager->eLock = '\0';
          }
        }
      }
      pPager->changeCountDone = '\0';
      pPager->eState = '\0';
    }
  }
  else {
    var_6(pPager->pWal);
    pPager->eState = '\0';
  }
  if (pPager->errCode != 0) {
    if (pPager->tempFile == '\0') {
      var_7(pPager);
      pPager->changeCountDone = '\0';
      pPager->eState = '\0';
    }
    else {
      pPager->eState = pPager->jfd->pMethods == (type_3 *)0x0;
    }
    if (pPager->bUseFetch == '\0') {
      pPager->errCode = 0;
    }
    else {
      (*pPager->fd->pMethods->xUnfetch)(pPager->fd,0,(void *)0x0);
      pPager->errCode = 0;
      if (pPager->bUseFetch != '\0') {
        pPager->xGet = getPageMMap;
        goto LAB_0012f242;
      }
    }
    pPager->xGet = getPageNormal;
  }
LAB_0012f242:
  pPager->journalOff = 0;
  pPager->journalHdr = 0;
  pPager->setMaster = '\0';
  return;
}


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

void MASKED(long param_1)

{
  int iVar1;
  ulong uVar2;
  long lVar3;
  long *plVar4;
  
  FUN_0011aa90(*(undefined8 *)(param_1 + 0x40));
  *(undefined8 *)(param_1 + 0x40) = 0;
  FUN_0011ab90(param_1);
  if (*(long *)(param_1 + 0x120) == 0) {
    if (*(char *)(param_1 + 8) == '\0') {
      if (**(long **)(param_1 + 0x48) == 0) {
        plVar4 = *(long **)(param_1 + 0x50);
        lVar3 = *plVar4;
        if (lVar3 != 0) {
LAB_0012f296:
          (**(code **)(lVar3 + 8))(plVar4);
          *plVar4 = 0;
          goto LAB_0012f2a4;
        }
      }
      else {
        uVar2 = (**(code **)(**(long **)(param_1 + 0x48) + 0x60))();
        if (((uVar2 & 0x800) == 0) || ((*(byte *)(param_1 + 9) & 5) != 1)) {
          plVar4 = *(long **)(param_1 + 0x50);
          lVar3 = *plVar4;
          if (lVar3 != 0) goto LAB_0012f296;
        }
LAB_0012f2a4:
        lVar3 = **(long **)(param_1 + 0x48);
        if (lVar3 != 0) {
          if (*(char *)(param_1 + 0x11) == '\0') {
            iVar1 = (**(code **)(lVar3 + 0x40))(*(long **)(param_1 + 0x48),0);
            if (*(char *)(param_1 + 0x15) != '\x05') {
              *(undefined1 *)(param_1 + 0x15) = 0;
            }
            if ((iVar1 != 0) && (*(char *)(param_1 + 0x14) == '\x06')) {
              *(undefined1 *)(param_1 + 0x15) = 5;
            }
          }
          else if (*(char *)(param_1 + 0x15) != '\x05') {
            *(undefined1 *)(param_1 + 0x15) = 0;
          }
        }
      }
      *(undefined1 *)(param_1 + 0x16) = 0;
      *(undefined1 *)(param_1 + 0x14) = 0;
    }
  }
  else {
    FUN_0011f5e0();
    *(undefined1 *)(param_1 + 0x14) = 0;
  }
  if (*(int *)(param_1 + 0x2c) != 0) {
    if (*(char *)(param_1 + 0x10) == '\0') {
      FUN_0011e520(param_1);
      *(undefined1 *)(param_1 + 0x16) = 0;
      *(undefined1 *)(param_1 + 0x14) = 0;
    }
    else {
      *(bool *)(param_1 + 0x14) = **(long **)(param_1 + 0x50) == 0;
    }
    if (*(char *)(param_1 + 0x1a) == '\0') {
      *(undefined4 *)(param_1 + 0x2c) = 0;
    }
    else {
      (**(code **)(**(long **)(param_1 + 0x48) + 0x90))(*(long **)(param_1 + 0x48),0,0);
      *(undefined4 *)(param_1 + 0x2c) = 0;
      if (*(char *)(param_1 + 0x1a) != '\0') {
        *(code **)(param_1 + 0x108) = FUN_0016e360;
        goto LAB_0012f242;
      }
    }
    *(code **)(param_1 + 0x108) = FUN_0016e090;
  }
LAB_0012f242:
  *(undefined8 *)(param_1 + 0x60) = 0;
  *(undefined8 *)(param_1 + 0x68) = 0;
  *(undefined1 *)(param_1 + 0x17) = 0;
  return;
}

