
void sqlite3SelectPrep(Parse *pParse,Select *p,NameContext *pOuterNC)

{
  int iVar1;
  Window *pWVar2;
  int iVar3;
  Parse *pWalker;
  Select *pSVar4;
  undefined4 uVar5;
  HashElem *pHVar6;
  Window *pWVar7;
  undefined *puVar8;
  Walker w;
  
  iVar1 = *(int *)PTR___stack_chk_guard_000f6564;
  pWalker = pParse;
  pSVar4 = p;
  if ((pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0)) {
    w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);
    w.pParse = pParse;
    if (pParse->hasCompound != '\0') {
      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);
      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;
      sqlite3WalkSelect(&w,p);
    }
    w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);
    w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);
    w.eCode = 0;
    pWalker = (Parse *)&w;
    sqlite3WalkSelect((Walker *)pWalker,p);
    if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {
      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);
      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);
      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;
      pWalker = (Parse *)&w;
      pSVar4 = p;
      w.pParse = pParse;
      w.u.pNC = pOuterNC;
      sqlite3WalkSelect((Walker *)pWalker,p);
      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {
        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);
        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);
        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);
        pWalker = (Parse *)&w;
        w.pParse = pParse;
        sqlite3WalkSelect((Walker *)pWalker,p);
        pSVar4 = p;
      }
    }
  }
  if (iVar1 == *(int *)PTR___stack_chk_guard_000f6564) {
    return;
  }
  puVar8 = PTR___stack_chk_fail_000f653c;
  (*(code *)PTR___stack_chk_fail_000f653c)();
  pWVar2 = (Window *)pWalker->db->aDb[1].pSchema;
  if ((pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2)) {
    pHVar6 = (HashElem *)pWVar2->iEphCsr;
    pWVar2 = (Window *)0x0;
    if (pHVar6 != (HashElem *)0x0) {
      iVar1 = *(int *)(puVar8 + 0xd6008);
      do {
        pWVar7 = (Window *)pHVar6->data;
        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&
           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,
           uVar5._2_2_ = pSVar4->nSelectRow,
           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {
          if (pWVar2 == (Window *)0x0) {
            pWVar2 = pSVar4->pWin;
          }
          pWVar7->ppThis = (Window **)pWVar2;
          pWVar2 = pWVar7;
        }
        pHVar6 = pHVar6->next;
      } while (pHVar6 != (HashElem *)0x0);
    }
  }
  return;
}



/* WARNING: Type propagation algorithm not settling */

int ** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)

{
  int iVar1;
  int *******pppppppiVar2;
  undefined4 *puVar3;
  int ***pppiVar4;
  int **ppiVar5;
  int **ppiVar6;
  int iVar7;
  undefined *puVar8;
  int *******local_30;
  undefined *local_2c;
  undefined *local_28;
  undefined *local_24;
  undefined2 local_1c;
  undefined4 local_18;
  int **local_14;
  
  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;
  pppppppiVar2 = param_1;
  puVar3 = param_2;
  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {
    local_2c = PTR_LAB_000f62d8 + -0x37a4;
    local_30 = param_1;
    if (*(char *)((int)param_1 + 0x16) != '\0') {
      local_28 = PTR_LAB_000f62f0 + 0x644;
      local_24 = (undefined *)0x0;
      FUN_0001c238(&local_30);
    }
    local_28 = PTR_LAB_000f62ec + 0x3990;
    local_24 = PTR_LAB_000f62d8 + 0xac;
    local_1c = 0;
    pppppppiVar2 = (int *******)&local_30;
    FUN_0001c238();
    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {
      local_2c = PTR_LAB_000f62e0 + -0x3468;
      local_28 = PTR_LAB_000f62e8 + -0x3774;
      local_24 = (undefined *)0x0;
      pppppppiVar2 = (int *******)&local_30;
      puVar3 = param_2;
      local_30 = param_1;
      local_18 = param_3;
      FUN_0001c238();
      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {
        local_28 = PTR_LAB_000f62d8 + -0x379c;
        local_24 = PTR_LAB_000f62e8 + 0x492c;
        local_2c = PTR_LAB_000f62d8 + -0x37a4;
        pppppppiVar2 = (int *******)&local_30;
        local_30 = param_1;
        FUN_0001c238();
        puVar3 = param_2;
      }
    }
  }
  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {
    return *(int ***)PTR___stack_chk_guard_000f6564;
  }
  puVar8 = PTR___stack_chk_fail_000f653c;
  (*(code *)PTR___stack_chk_fail_000f653c)();
  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {
    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {
      pppiVar4 = (*pppppppiVar2)[4][7][0xc];
      ppiVar6 = (int **)0x0;
      if (pppiVar4 != (int ***)0x0) {
        iVar7 = *(int *)(puVar8 + 0xd6008);
        do {
          ppiVar5 = pppiVar4[2];
          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&
             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {
            if (ppiVar6 == (int **)0x0) {
              ppiVar6 = (int **)puVar3[0x11];
            }
            ppiVar5[8] = (int *)ppiVar6;
            ppiVar6 = ppiVar5;
          }
          pppiVar4 = (int ***)*pppiVar4;
        } while (pppiVar4 != (int ***)0x0);
        if (ppiVar6 != (int **)0x0) {
          return ppiVar6;
        }
      }
    }
    ppiVar6 = (int **)puVar3[0x11];
  }
  else {
    ppiVar6 = (int **)0x0;
  }
  return ppiVar6;
}


lui gp,0xe
addiu gp,gp,-0x1e58
addu gp,gp,t9
addiu sp,sp,-0x48
sw ra,0x44(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw s0,0x38(sp)
sw gp,0x10(sp)
lw v0,-0x7d3c(gp)
lw v0,0x0(v0)
sw v0,0x34(sp)
lw v0,0x0(a0)
lbu v0,0x51(v0)
bne v0,zero,0x00020150
_nop
or s0,a0,zero
or s1,a1,zero
lw v0,0x4(a1)
andi v0,v0,0x80
beq v0,zero,0x00020178
_or s2,a2,zero
lw v1,0x34(sp)
lw v0,-0x7d3c(gp)
lw v0,0x0(v0)
bne v1,v0,0x000202b4
_lw ra,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x48
lw v0,-0x7fc8(gp)
addiu v0,v0,-0x37a4
sw v0,0x1c(sp)
sw a0,0x18(sp)
lbu v0,0x16(a0)
bne v0,zero,0x00020288
_lw v0,-0x7fb0(gp)
lw v0,-0x7fb4(gp)
addiu v0,v0,0x3990
sw v0,0x20(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,0xac
sw v0,0x24(sp)
sh zero,0x2c(sp)
or a1,s1,zero
addiu a0,sp,0x18
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3dc8
bal 0x0001c238
_nop
lw gp,0x10(sp)
lw v0,0x24(s0)
bne v0,zero,0x00020150
_nop
lw v0,0x0(s0)
lbu v0,0x51(v0)
bne v0,zero,0x00020150
_lw v0,-0x7fc0(gp)
addiu v0,v0,-0x3468
sw v0,0x1c(sp)
lw v0,-0x7fb8(gp)
addiu v0,v0,-0x3774
sw v0,0x20(sp)
sw zero,0x24(sp)
sw s0,0x18(sp)
sw s2,0x30(sp)
or a1,s1,zero
addiu a0,sp,0x18
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3dc8
bal 0x0001c238
_nop
lw gp,0x10(sp)
lw v0,0x24(s0)
bne v0,zero,0x00020150
_nop
lw v0,0x0(s0)
lbu v0,0x51(v0)
bne v0,zero,0x00020150
_lw v0,-0x7fc8(gp)
addiu v0,v0,-0x379c
sw v0,0x20(sp)
lw v0,-0x7fb8(gp)
addiu v0,v0,0x492c
sw v0,0x24(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,-0x37a4
sw v0,0x1c(sp)
sw s0,0x18(sp)
or a1,s1,zero
addiu a0,sp,0x18
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3dc8
bal 0x0001c238
_nop
lw gp,0x10(sp)
b 0x00020150
_nop
addiu v0,v0,0x644
sw v0,0x20(sp)
sw zero,0x24(sp)
addiu a0,sp,0x18
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x3dc8
bal 0x0001c238
_nop
lw gp,0x10(sp)
b 0x00020198
_lw v0,-0x7fb4(gp)
lw t9,-0x7d64(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint ** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}\n\n" comment (function_definition "int ** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}" primitive_type (pointer_declarator "** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" * (pointer_declarator "* FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" * (function_declarator "FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" identifier (parameter_list "(int *******param_1,undefined4 *param_2,undefined4 param_3)" ( (parameter_declaration "int *******param_1" primitive_type (pointer_declarator "*******param_1" * (pointer_declarator "******param_1" * (pointer_declarator "*****param_1" * (pointer_declarator "****param_1" * (pointer_declarator "***param_1" * (pointer_declarator "**param_1" * (pointer_declarator "*param_1" * identifier)))))))) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))))) (compound_statement "{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *******pppppppiVar2;" primitive_type (pointer_declarator "*******pppppppiVar2" * (pointer_declarator "******pppppppiVar2" * (pointer_declarator "*****pppppppiVar2" * (pointer_declarator "****pppppppiVar2" * (pointer_declarator "***pppppppiVar2" * (pointer_declarator "**pppppppiVar2" * (pointer_declarator "*pppppppiVar2" * identifier))))))) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int ***pppiVar4;" primitive_type (pointer_declarator "***pppiVar4" * (pointer_declarator "**pppiVar4" * (pointer_declarator "*pppiVar4" * identifier))) ;) (declaration "int **ppiVar5;" primitive_type (pointer_declarator "**ppiVar5" * (pointer_declarator "*ppiVar5" * identifier)) ;) (declaration "int **ppiVar6;" primitive_type (pointer_declarator "**ppiVar6" * (pointer_declarator "*ppiVar6" * identifier)) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *******local_30;" primitive_type (pointer_declarator "*******local_30" * (pointer_declarator "******local_30" * (pointer_declarator "*****local_30" * (pointer_declarator "****local_30" * (pointer_declarator "***local_30" * (pointer_declarator "**local_30" * (pointer_declarator "*local_30" * identifier))))))) ;) (declaration "undefined *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined2 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "int **local_14;" primitive_type (pointer_declarator "**local_14" * (pointer_declarator "*local_14" * identifier)) ;) (expression_statement "local_14 = *(int ***)PTR___stack_chk_guard_000f6564;" (assignment_expression "local_14 = *(int ***)PTR___stack_chk_guard_000f6564" identifier = (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" * (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier))) ;) (expression_statement "pppppppiVar2 = param_1;" (assignment_expression "pppppppiVar2 = param_1" identifier = identifier) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (if_statement "if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }" if (parenthesized_expression "((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0))" ( (binary_expression "(*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)" (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" ( (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" * (cast_expression "(char *)((int)*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*param_1 + 0x51)" ( (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((param_2[1] & 0x80) == 0)" ( (binary_expression "(param_2[1] & 0x80) == 0" (parenthesized_expression "(param_2[1] & 0x80)" ( (binary_expression "param_2[1] & 0x80" (subscript_expression "param_2[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }" { (expression_statement "local_2c = PTR_LAB_000f62d8 + -0x37a4;" (assignment_expression "local_2c = PTR_LAB_000f62d8 + -0x37a4" identifier = (binary_expression "PTR_LAB_000f62d8 + -0x37a4" identifier + number_literal)) ;) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (if_statement "if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x16) != '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x16) != '\0'" (pointer_expression "*(char *)((int)param_1 + 0x16)" * (cast_expression "(char *)((int)param_1 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x16)" ( (binary_expression "(int)param_1 + 0x16" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }" { (expression_statement "local_28 = PTR_LAB_000f62f0 + 0x644;" (assignment_expression "local_28 = PTR_LAB_000f62f0 + 0x644" identifier = (binary_expression "PTR_LAB_000f62f0 + 0x644" identifier + number_literal)) ;) (expression_statement "local_24 = (undefined *)0x0;" (assignment_expression "local_24 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001c238(&local_30);" (call_expression "FUN_0001c238(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) })) (expression_statement "local_28 = PTR_LAB_000f62ec + 0x3990;" (assignment_expression "local_28 = PTR_LAB_000f62ec + 0x3990" identifier = (binary_expression "PTR_LAB_000f62ec + 0x3990" identifier + number_literal)) ;) (expression_statement "local_24 = PTR_LAB_000f62d8 + 0xac;" (assignment_expression "local_24 = PTR_LAB_000f62d8 + 0xac" identifier = (binary_expression "PTR_LAB_000f62d8 + 0xac" identifier + number_literal)) ;) (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" identifier = (cast_expression "(int *******)&local_30" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }" if (parenthesized_expression "((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0'))" ( (binary_expression "(param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')" (parenthesized_expression "(param_1[9] == (int ******)0x0)" ( (binary_expression "param_1[9] == (int ******)0x0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" ( (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" * (cast_expression "(char *)((int)*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*param_1 + 0x51)" ( (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }" { (expression_statement "local_2c = PTR_LAB_000f62e0 + -0x3468;" (assignment_expression "local_2c = PTR_LAB_000f62e0 + -0x3468" identifier = (binary_expression "PTR_LAB_000f62e0 + -0x3468" identifier + number_literal)) ;) (expression_statement "local_28 = PTR_LAB_000f62e8 + -0x3774;" (assignment_expression "local_28 = PTR_LAB_000f62e8 + -0x3774" identifier = (binary_expression "PTR_LAB_000f62e8 + -0x3774" identifier + number_literal)) ;) (expression_statement "local_24 = (undefined *)0x0;" (assignment_expression "local_24 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" identifier = (cast_expression "(int *******)&local_30" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (expression_statement "local_18 = param_3;" (assignment_expression "local_18 = param_3" identifier = identifier) ;) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }" if (parenthesized_expression "((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0'))" ( (binary_expression "(param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')" (parenthesized_expression "(param_1[9] == (int ******)0x0)" ( (binary_expression "param_1[9] == (int ******)0x0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" ( (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" * (cast_expression "(char *)((int)*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*param_1 + 0x51)" ( (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }" { (expression_statement "local_28 = PTR_LAB_000f62d8 + -0x379c;" (assignment_expression "local_28 = PTR_LAB_000f62d8 + -0x379c" identifier = (binary_expression "PTR_LAB_000f62d8 + -0x379c" identifier + number_literal)) ;) (expression_statement "local_24 = PTR_LAB_000f62e8 + 0x492c;" (assignment_expression "local_24 = PTR_LAB_000f62e8 + 0x492c" identifier = (binary_expression "PTR_LAB_000f62e8 + 0x492c" identifier + number_literal)) ;) (expression_statement "local_2c = PTR_LAB_000f62d8 + -0x37a4;" (assignment_expression "local_2c = PTR_LAB_000f62d8 + -0x37a4" identifier = (binary_expression "PTR_LAB_000f62d8 + -0x37a4" identifier + number_literal)) ;) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" identifier = (cast_expression "(int *******)&local_30" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) })) })) })) (if_statement "if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }" if (parenthesized_expression "(local_14 == *(int ***)PTR___stack_chk_guard_000f6564)" ( (binary_expression "local_14 == *(int ***)PTR___stack_chk_guard_000f6564" identifier == (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" * (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier))) )) (compound_statement "{\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }" { (return_statement "return *(int ***)PTR___stack_chk_guard_000f6564;" return (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" * (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) })) (expression_statement "puVar8 = PTR___stack_chk_fail_000f653c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000f653c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f653c)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f653c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f653c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f653c" * (cast_expression "(code *)PTR___stack_chk_fail_000f653c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }" if (parenthesized_expression "(*(char *)((int)pppppppiVar2 + 0x96) == '\0')" ( (binary_expression "*(char *)((int)pppppppiVar2 + 0x96) == '\0'" (pointer_expression "*(char *)((int)pppppppiVar2 + 0x96)" * (cast_expression "(char *)((int)pppppppiVar2 + 0x96)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppppppiVar2 + 0x96)" ( (binary_expression "(int)pppppppiVar2 + 0x96" (cast_expression "(int)pppppppiVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }" { (if_statement "if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }" if (parenthesized_expression "((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7])" ( (binary_expression "(int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]" (cast_expression "(int ****)puVar3[0x12]" ( (type_descriptor "int ****" primitive_type (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) (subscript_expression "puVar3[0x12]" identifier [ number_literal ])) != (subscript_expression "(*pppppppiVar2)[4][7]" (subscript_expression "(*pppppppiVar2)[4]" (parenthesized_expression "(*pppppppiVar2)" ( (pointer_expression "*pppppppiVar2" * identifier) )) [ number_literal ]) [ number_literal ])) )) (compound_statement "{\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }" { (expression_statement "pppiVar4 = (*pppppppiVar2)[4][7][0xc];" (assignment_expression "pppiVar4 = (*pppppppiVar2)[4][7][0xc]" identifier = (subscript_expression "(*pppppppiVar2)[4][7][0xc]" (subscript_expression "(*pppppppiVar2)[4][7]" (subscript_expression "(*pppppppiVar2)[4]" (parenthesized_expression "(*pppppppiVar2)" ( (pointer_expression "*pppppppiVar2" * identifier) )) [ number_literal ]) [ number_literal ]) [ number_literal ])) ;) (expression_statement "ppiVar6 = (int **)0x0;" (assignment_expression "ppiVar6 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }" if (parenthesized_expression "(pppiVar4 != (int ***)0x0)" ( (binary_expression "pppiVar4 != (int ***)0x0" identifier != (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (compound_statement "{\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }" { (expression_statement "iVar7 = *(int *)(puVar8 + 0xd6008);" (assignment_expression "iVar7 = *(int *)(puVar8 + 0xd6008)" identifier = (pointer_expression "*(int *)(puVar8 + 0xd6008)" * (cast_expression "(int *)(puVar8 + 0xd6008)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xd6008)" ( (binary_expression "puVar8 + 0xd6008" identifier + number_literal) ))))) ;) (do_statement "do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);" do (compound_statement "{\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        }" { (expression_statement "ppiVar5 = pppiVar4[2];" (assignment_expression "ppiVar5 = pppiVar4[2]" identifier = (subscript_expression "pppiVar4[2]" identifier [ number_literal ])) ;) (if_statement "if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }" if (parenthesized_expression "((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0))" ( (binary_expression "(ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)" (parenthesized_expression "(ppiVar5[6] == (int *)puVar3[0x12])" ( (binary_expression "ppiVar5[6] == (int *)puVar3[0x12]" (subscript_expression "ppiVar5[6]" identifier [ number_literal ]) == (cast_expression "(int *)puVar3[0x12]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[0x12]" identifier [ number_literal ]))) )) && (parenthesized_expression "(iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3)" identifier = (call_expression "(*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3)" (parenthesized_expression "(*(code *)(iVar7 + 0x6e6c))" ( (pointer_expression "*(code *)(iVar7 + 0x6e6c)" * (cast_expression "(code *)(iVar7 + 0x6e6c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x6e6c)" ( (binary_expression "iVar7 + 0x6e6c" identifier + number_literal) )))) )) (argument_list "(ppiVar5[1],*puVar3)" ( (subscript_expression "ppiVar5[1]" identifier [ number_literal ]) , (pointer_expression "*puVar3" * identifier) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }" { (if_statement "if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }" if (parenthesized_expression "(ppiVar6 == (int **)0x0)" ( (binary_expression "ppiVar6 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n              ppiVar6 = (int **)puVar3[0x11];\n            }" { (expression_statement "ppiVar6 = (int **)puVar3[0x11];" (assignment_expression "ppiVar6 = (int **)puVar3[0x11]" identifier = (cast_expression "(int **)puVar3[0x11]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[0x11]" identifier [ number_literal ]))) ;) })) (expression_statement "ppiVar5[8] = (int *)ppiVar6;" (assignment_expression "ppiVar5[8] = (int *)ppiVar6" (subscript_expression "ppiVar5[8]" identifier [ number_literal ]) = (cast_expression "(int *)ppiVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppiVar6 = ppiVar5;" (assignment_expression "ppiVar6 = ppiVar5" identifier = identifier) ;) })) (expression_statement "pppiVar4 = (int ***)*pppiVar4;" (assignment_expression "pppiVar4 = (int ***)*pppiVar4" identifier = (cast_expression "(int ***)*pppiVar4" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (pointer_expression "*pppiVar4" * identifier))) ;) }) while (parenthesized_expression "(pppiVar4 != (int ***)0x0)" ( (binary_expression "pppiVar4 != (int ***)0x0" identifier != (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) ;) (if_statement "if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }" if (parenthesized_expression "(ppiVar6 != (int **)0x0)" ( (binary_expression "ppiVar6 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n          return ppiVar6;\n        }" { (return_statement "return ppiVar6;" return identifier ;) })) })) })) (expression_statement "ppiVar6 = (int **)puVar3[0x11];" (assignment_expression "ppiVar6 = (int **)puVar3[0x11]" identifier = (cast_expression "(int **)puVar3[0x11]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[0x11]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    ppiVar6 = (int **)0x0;\n  }" else (compound_statement "{\n    ppiVar6 = (int **)0x0;\n  }" { (expression_statement "ppiVar6 = (int **)0x0;" (assignment_expression "ppiVar6 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }))) (return_statement "return ppiVar6;" return identifier ;) })))
(translation_unit "void sqlite3SelectPrep(Parse *pParse,Select *p,NameContext *pOuterNC)\n\n{\n  int iVar1;\n  Window *pWVar2;\n  int iVar3;\n  Parse *pWalker;\n  Select *pSVar4;\n  undefined4 uVar5;\n  HashElem *pHVar6;\n  Window *pWVar7;\n  undefined *puVar8;\n  Walker w;\n  \n  iVar1 = *(int *)PTR___stack_chk_guard_000f6564;\n  pWalker = pParse;\n  pSVar4 = p;\n  if ((pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0)) {\n    w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n    w.pParse = pParse;\n    if (pParse->hasCompound != '\0') {\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }\n    w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);\n    w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);\n    w.eCode = 0;\n    pWalker = (Parse *)&w;\n    sqlite3WalkSelect((Walker *)pWalker,p);\n    if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }\n  }\n  if (iVar1 == *(int *)PTR___stack_chk_guard_000f6564) {\n    return;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  pWVar2 = (Window *)pWalker->db->aDb[1].pSchema;\n  if ((pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2)) {\n    pHVar6 = (HashElem *)pWVar2->iEphCsr;\n    pWVar2 = (Window *)0x0;\n    if (pHVar6 != (HashElem *)0x0) {\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }\n  }\n  return;\n}\n\n" (function_definition "void sqlite3SelectPrep(Parse *pParse,Select *p,NameContext *pOuterNC)\n\n{\n  int iVar1;\n  Window *pWVar2;\n  int iVar3;\n  Parse *pWalker;\n  Select *pSVar4;\n  undefined4 uVar5;\n  HashElem *pHVar6;\n  Window *pWVar7;\n  undefined *puVar8;\n  Walker w;\n  \n  iVar1 = *(int *)PTR___stack_chk_guard_000f6564;\n  pWalker = pParse;\n  pSVar4 = p;\n  if ((pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0)) {\n    w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n    w.pParse = pParse;\n    if (pParse->hasCompound != '\0') {\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }\n    w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);\n    w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);\n    w.eCode = 0;\n    pWalker = (Parse *)&w;\n    sqlite3WalkSelect((Walker *)pWalker,p);\n    if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }\n  }\n  if (iVar1 == *(int *)PTR___stack_chk_guard_000f6564) {\n    return;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  pWVar2 = (Window *)pWalker->db->aDb[1].pSchema;\n  if ((pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2)) {\n    pHVar6 = (HashElem *)pWVar2->iEphCsr;\n    pWVar2 = (Window *)0x0;\n    if (pHVar6 != (HashElem *)0x0) {\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "sqlite3SelectPrep(Parse *pParse,Select *p,NameContext *pOuterNC)" identifier (parameter_list "(Parse *pParse,Select *p,NameContext *pOuterNC)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Select *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "NameContext *pOuterNC" type_identifier (pointer_declarator "*pOuterNC" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  Window *pWVar2;\n  int iVar3;\n  Parse *pWalker;\n  Select *pSVar4;\n  undefined4 uVar5;\n  HashElem *pHVar6;\n  Window *pWVar7;\n  undefined *puVar8;\n  Walker w;\n  \n  iVar1 = *(int *)PTR___stack_chk_guard_000f6564;\n  pWalker = pParse;\n  pSVar4 = p;\n  if ((pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0)) {\n    w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n    w.pParse = pParse;\n    if (pParse->hasCompound != '\0') {\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }\n    w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);\n    w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);\n    w.eCode = 0;\n    pWalker = (Parse *)&w;\n    sqlite3WalkSelect((Walker *)pWalker,p);\n    if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }\n  }\n  if (iVar1 == *(int *)PTR___stack_chk_guard_000f6564) {\n    return;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  pWVar2 = (Window *)pWalker->db->aDb[1].pSchema;\n  if ((pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2)) {\n    pHVar6 = (HashElem *)pWVar2->iEphCsr;\n    pWVar2 = (Window *)0x0;\n    if (pHVar6 != (HashElem *)0x0) {\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "Window *pWVar2;" type_identifier (pointer_declarator "*pWVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "Parse *pWalker;" type_identifier (pointer_declarator "*pWalker" * identifier) ;) (declaration "Select *pSVar4;" type_identifier (pointer_declarator "*pSVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "HashElem *pHVar6;" type_identifier (pointer_declarator "*pHVar6" * identifier) ;) (declaration "Window *pWVar7;" type_identifier (pointer_declarator "*pWVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "Walker w;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)PTR___stack_chk_guard_000f6564;" (assignment_expression "iVar1 = *(int *)PTR___stack_chk_guard_000f6564" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f6564" * (cast_expression "(int *)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pWalker = pParse;" (assignment_expression "pWalker = pParse" identifier = identifier) ;) (expression_statement "pSVar4 = p;" (assignment_expression "pSVar4 = p" identifier = identifier) ;) (if_statement "if ((pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0)) {\n    w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n    w.pParse = pParse;\n    if (pParse->hasCompound != '\0') {\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }\n    w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);\n    w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);\n    w.eCode = 0;\n    pWalker = (Parse *)&w;\n    sqlite3WalkSelect((Walker *)pWalker,p);\n    if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }\n  }" if (parenthesized_expression "((pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0))" ( (binary_expression "(pParse->db->mallocFailed == '\0') && ((p->selFlags & 0x80) == 0)" (parenthesized_expression "(pParse->db->mallocFailed == '\0')" ( (binary_expression "pParse->db->mallocFailed == '\0'" (field_expression "pParse->db->mallocFailed" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((p->selFlags & 0x80) == 0)" ( (binary_expression "(p->selFlags & 0x80) == 0" (parenthesized_expression "(p->selFlags & 0x80)" ( (binary_expression "p->selFlags & 0x80" (field_expression "p->selFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n    w.pParse = pParse;\n    if (pParse->hasCompound != '\0') {\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }\n    w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);\n    w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);\n    w.eCode = 0;\n    pWalker = (Parse *)&w;\n    sqlite3WalkSelect((Walker *)pWalker,p);\n    if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }\n  }" { (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x37a4)" ( (binary_expression "PTR_LAB_000f62d8 + -0x37a4" identifier + number_literal) )))) ;) (expression_statement "w.pParse = pParse;" (assignment_expression "w.pParse = pParse" (field_expression "w.pParse" identifier . field_identifier) = identifier) ;) (if_statement "if (pParse->hasCompound != '\0') {\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }" if (parenthesized_expression "(pParse->hasCompound != '\0')" ( (binary_expression "pParse->hasCompound != '\0'" (field_expression "pParse->hasCompound" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      sqlite3WalkSelect(&w,p);\n    }" { (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644);" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644)" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62f0 + 0x644)" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62f0 + 0x644)" ( (binary_expression "PTR_LAB_000f62f0 + 0x644" identifier + number_literal) )))) ;) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3WalkSelect(&w,p);" (call_expression "sqlite3WalkSelect(&w,p)" identifier (argument_list "(&w,p)" ( (pointer_expression "&w" & identifier) , identifier ))) ;) })) (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990);" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990)" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62ec + 0x3990)" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62ec + 0x3990)" ( (binary_expression "PTR_LAB_000f62ec + 0x3990" identifier + number_literal) )))) ;) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac);" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac)" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + 0xac)" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + 0xac)" ( (binary_expression "PTR_LAB_000f62d8 + 0xac" identifier + number_literal) )))) ;) (expression_statement "w.eCode = 0;" (assignment_expression "w.eCode = 0" (field_expression "w.eCode" identifier . field_identifier) = number_literal) ;) (expression_statement "pWalker = (Parse *)&w;" (assignment_expression "pWalker = (Parse *)&w" identifier = (cast_expression "(Parse *)&w" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&w" & identifier))) ;) (expression_statement "sqlite3WalkSelect((Walker *)pWalker,p);" (call_expression "sqlite3WalkSelect((Walker *)pWalker,p)" identifier (argument_list "((Walker *)pWalker,p)" ( (cast_expression "(Walker *)pWalker" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }" if (parenthesized_expression "((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0'))" ( (binary_expression "(pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')" (parenthesized_expression "(pParse->nErr == 0)" ( (binary_expression "pParse->nErr == 0" (field_expression "pParse->nErr" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pParse->db->mallocFailed == '\0')" ( (binary_expression "pParse->db->mallocFailed == '\0'" (field_expression "pParse->db->mallocFailed" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);\n      w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);\n      w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n      pWalker = (Parse *)&w;\n      pSVar4 = p;\n      w.pParse = pParse;\n      w.u.pNC = pOuterNC;\n      sqlite3WalkSelect((Walker *)pWalker,p);\n      if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }\n    }" { (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468);" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62e0 + -0x3468)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62e0 + -0x3468)" ( (binary_expression "PTR_LAB_000f62e0 + -0x3468" identifier + number_literal) )))) ;) (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774);" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774)" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + -0x3774)" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62e8 + -0x3774)" ( (binary_expression "PTR_LAB_000f62e8 + -0x3774" identifier + number_literal) )))) ;) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pWalker = (Parse *)&w;" (assignment_expression "pWalker = (Parse *)&w" identifier = (cast_expression "(Parse *)&w" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&w" & identifier))) ;) (expression_statement "pSVar4 = p;" (assignment_expression "pSVar4 = p" identifier = identifier) ;) (expression_statement "w.pParse = pParse;" (assignment_expression "w.pParse = pParse" (field_expression "w.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "w.u.pNC = pOuterNC;" (assignment_expression "w.u.pNC = pOuterNC" (field_expression "w.u.pNC" (field_expression "w.u" identifier . field_identifier) . field_identifier) = identifier) ;) (expression_statement "sqlite3WalkSelect((Walker *)pWalker,p);" (call_expression "sqlite3WalkSelect((Walker *)pWalker,p)" identifier (argument_list "((Walker *)pWalker,p)" ( (cast_expression "(Walker *)pWalker" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if ((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')) {\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }" if (parenthesized_expression "((pParse->nErr == 0) && (pParse->db->mallocFailed == '\0'))" ( (binary_expression "(pParse->nErr == 0) && (pParse->db->mallocFailed == '\0')" (parenthesized_expression "(pParse->nErr == 0)" ( (binary_expression "pParse->nErr == 0" (field_expression "pParse->nErr" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pParse->db->mallocFailed == '\0')" ( (binary_expression "pParse->db->mallocFailed == '\0'" (field_expression "pParse->db->mallocFailed" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);\n        w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);\n        w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);\n        pWalker = (Parse *)&w;\n        w.pParse = pParse;\n        sqlite3WalkSelect((Walker *)pWalker,p);\n        pSVar4 = p;\n      }" { (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c);" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c)" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)(PTR_LAB_000f62d8 + -0x379c)" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x379c)" ( (binary_expression "PTR_LAB_000f62d8 + -0x379c" identifier + number_literal) )))) ;) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c);" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c)" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)(PTR_LAB_000f62e8 + 0x492c)" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62e8 + 0x492c)" ( (binary_expression "PTR_LAB_000f62e8 + 0x492c" identifier + number_literal) )))) ;) (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4);" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_000f62d8 + -0x37a4)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x37a4)" ( (binary_expression "PTR_LAB_000f62d8 + -0x37a4" identifier + number_literal) )))) ;) (expression_statement "pWalker = (Parse *)&w;" (assignment_expression "pWalker = (Parse *)&w" identifier = (cast_expression "(Parse *)&w" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&w" & identifier))) ;) (expression_statement "w.pParse = pParse;" (assignment_expression "w.pParse = pParse" (field_expression "w.pParse" identifier . field_identifier) = identifier) ;) (expression_statement "sqlite3WalkSelect((Walker *)pWalker,p);" (call_expression "sqlite3WalkSelect((Walker *)pWalker,p)" identifier (argument_list "((Walker *)pWalker,p)" ( (cast_expression "(Walker *)pWalker" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "pSVar4 = p;" (assignment_expression "pSVar4 = p" identifier = identifier) ;) })) })) })) (if_statement "if (iVar1 == *(int *)PTR___stack_chk_guard_000f6564) {\n    return;\n  }" if (parenthesized_expression "(iVar1 == *(int *)PTR___stack_chk_guard_000f6564)" ( (binary_expression "iVar1 == *(int *)PTR___stack_chk_guard_000f6564" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000f6564" * (cast_expression "(int *)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar8 = PTR___stack_chk_fail_000f653c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000f653c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f653c)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f653c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f653c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f653c" * (cast_expression "(code *)PTR___stack_chk_fail_000f653c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pWVar2 = (Window *)pWalker->db->aDb[1].pSchema;" (assignment_expression "pWVar2 = (Window *)pWalker->db->aDb[1].pSchema" identifier = (cast_expression "(Window *)pWalker->db->aDb[1].pSchema" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWalker->db->aDb[1].pSchema" (subscript_expression "pWalker->db->aDb[1]" (field_expression "pWalker->db->aDb" (field_expression "pWalker->db" identifier -> field_identifier) -> field_identifier) [ number_literal ]) . field_identifier))) ;) (if_statement "if ((pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2)) {\n    pHVar6 = (HashElem *)pWVar2->iEphCsr;\n    pWVar2 = (Window *)0x0;\n    if (pHVar6 != (HashElem *)0x0) {\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }\n  }" if (parenthesized_expression "((pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2))" ( (binary_expression "(pWalker->disableTriggers == '\0') && (pSVar4->pWinDefn != pWVar2)" (parenthesized_expression "(pWalker->disableTriggers == '\0')" ( (binary_expression "pWalker->disableTriggers == '\0'" (field_expression "pWalker->disableTriggers" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pSVar4->pWinDefn != pWVar2)" ( (binary_expression "pSVar4->pWinDefn != pWVar2" (field_expression "pSVar4->pWinDefn" identifier -> field_identifier) != identifier) ))) )) (compound_statement "{\n    pHVar6 = (HashElem *)pWVar2->iEphCsr;\n    pWVar2 = (Window *)0x0;\n    if (pHVar6 != (HashElem *)0x0) {\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }\n  }" { (expression_statement "pHVar6 = (HashElem *)pWVar2->iEphCsr;" (assignment_expression "pHVar6 = (HashElem *)pWVar2->iEphCsr" identifier = (cast_expression "(HashElem *)pWVar2->iEphCsr" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWVar2->iEphCsr" identifier -> field_identifier))) ;) (expression_statement "pWVar2 = (Window *)0x0;" (assignment_expression "pWVar2 = (Window *)0x0" identifier = (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pHVar6 != (HashElem *)0x0) {\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }" if (parenthesized_expression "(pHVar6 != (HashElem *)0x0)" ( (binary_expression "pHVar6 != (HashElem *)0x0" identifier != (cast_expression "(HashElem *)0x0" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = *(int *)(puVar8 + 0xd6008);\n      do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);\n    }" { (expression_statement "iVar1 = *(int *)(puVar8 + 0xd6008);" (assignment_expression "iVar1 = *(int *)(puVar8 + 0xd6008)" identifier = (pointer_expression "*(int *)(puVar8 + 0xd6008)" * (cast_expression "(int *)(puVar8 + 0xd6008)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xd6008)" ( (binary_expression "puVar8 + 0xd6008" identifier + number_literal) ))))) ;) (do_statement "do {\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      } while (pHVar6 != (HashElem *)0x0);" do (compound_statement "{\n        pWVar7 = (Window *)pHVar6->data;\n        if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }\n        pHVar6 = pHVar6->next;\n      }" { (expression_statement "pWVar7 = (Window *)pHVar6->data;" (assignment_expression "pWVar7 = (Window *)pHVar6->data" identifier = (cast_expression "(Window *)pHVar6->data" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pHVar6->data" identifier -> field_identifier))) ;) (if_statement "if (((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)) {\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }" if (parenthesized_expression "(((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0))" ( (binary_expression "((Window *)pWVar7->pStart == pSVar4->pWinDefn) &&\n           (uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)" (parenthesized_expression "((Window *)pWVar7->pStart == pSVar4->pWinDefn)" ( (binary_expression "(Window *)pWVar7->pStart == pSVar4->pWinDefn" (cast_expression "(Window *)pWVar7->pStart" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWVar7->pStart" identifier -> field_identifier)) == (field_expression "pSVar4->pWinDefn" identifier -> field_identifier)) )) && (parenthesized_expression "(uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0)" ( (comma_expression "uVar5._0_1_ = pSVar4->op, uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0" (assignment_expression "uVar5._0_1_ = pSVar4->op" (field_expression "uVar5._0_1_" identifier . field_identifier) = (field_expression "pSVar4->op" identifier -> field_identifier)) , (comma_expression "uVar5._1_1_ = pSVar4->field_0x1,\n           uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0" (assignment_expression "uVar5._1_1_ = pSVar4->field_0x1" (field_expression "uVar5._1_1_" identifier . field_identifier) = (field_expression "pSVar4->field_0x1" identifier -> field_identifier)) , (comma_expression "uVar5._2_2_ = pSVar4->nSelectRow,\n           iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0" (assignment_expression "uVar5._2_2_ = pSVar4->nSelectRow" (field_expression "uVar5._2_2_" identifier . field_identifier) = (field_expression "pSVar4->nSelectRow" identifier -> field_identifier)) , (comma_expression "iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5), iVar3 == 0" (assignment_expression "iVar3 = (*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5)" identifier = (call_expression "(*(code *)(&DAT_00006e6c + iVar1))(pWVar7->zBase,uVar5)" (parenthesized_expression "(*(code *)(&DAT_00006e6c + iVar1))" ( (pointer_expression "*(code *)(&DAT_00006e6c + iVar1)" * (cast_expression "(code *)(&DAT_00006e6c + iVar1)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00006e6c + iVar1)" ( (binary_expression "&DAT_00006e6c + iVar1" (pointer_expression "&DAT_00006e6c" & identifier) + identifier) )))) )) (argument_list "(pWVar7->zBase,uVar5)" ( (field_expression "pWVar7->zBase" identifier -> field_identifier) , identifier )))) , (binary_expression "iVar3 == 0" identifier == number_literal))))) ))) )) (compound_statement "{\n          if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }\n          pWVar7->ppThis = (Window **)pWVar2;\n          pWVar2 = pWVar7;\n        }" { (if_statement "if (pWVar2 == (Window *)0x0) {\n            pWVar2 = pSVar4->pWin;\n          }" if (parenthesized_expression "(pWVar2 == (Window *)0x0)" ( (binary_expression "pWVar2 == (Window *)0x0" identifier == (cast_expression "(Window *)0x0" ( (type_descriptor "Window *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pWVar2 = pSVar4->pWin;\n          }" { (expression_statement "pWVar2 = pSVar4->pWin;" (assignment_expression "pWVar2 = pSVar4->pWin" identifier = (field_expression "pSVar4->pWin" identifier -> field_identifier)) ;) })) (expression_statement "pWVar7->ppThis = (Window **)pWVar2;" (assignment_expression "pWVar7->ppThis = (Window **)pWVar2" (field_expression "pWVar7->ppThis" identifier -> field_identifier) = (cast_expression "(Window **)pWVar2" ( (type_descriptor "Window **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "pWVar2 = pWVar7;" (assignment_expression "pWVar2 = pWVar7" identifier = identifier) ;) })) (expression_statement "pHVar6 = pHVar6->next;" (assignment_expression "pHVar6 = pHVar6->next" identifier = (field_expression "pHVar6->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pHVar6 != (HashElem *)0x0)" ( (binary_expression "pHVar6 != (HashElem *)0x0" identifier != (cast_expression "(HashElem *)0x0" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "int ** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}\n\n" (function_definition "int ** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}" primitive_type (pointer_declarator "** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" * (pointer_declarator "* FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" * (function_declarator "FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" identifier (parameter_list "(int *******param_1,undefined4 *param_2,undefined4 param_3)" ( (parameter_declaration "int *******param_1" primitive_type (pointer_declarator "*******param_1" * (pointer_declarator "******param_1" * (pointer_declarator "*****param_1" * (pointer_declarator "****param_1" * (pointer_declarator "***param_1" * (pointer_declarator "**param_1" * (pointer_declarator "*param_1" * identifier)))))))) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))))) (compound_statement "{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *******pppppppiVar2;" primitive_type (pointer_declarator "*******pppppppiVar2" * (pointer_declarator "******pppppppiVar2" * (pointer_declarator "*****pppppppiVar2" * (pointer_declarator "****pppppppiVar2" * (pointer_declarator "***pppppppiVar2" * (pointer_declarator "**pppppppiVar2" * (pointer_declarator "*pppppppiVar2" * identifier))))))) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int ***pppiVar4;" primitive_type (pointer_declarator "***pppiVar4" * (pointer_declarator "**pppiVar4" * (pointer_declarator "*pppiVar4" * identifier))) ;) (declaration "int **ppiVar5;" primitive_type (pointer_declarator "**ppiVar5" * (pointer_declarator "*ppiVar5" * identifier)) ;) (declaration "int **ppiVar6;" primitive_type (pointer_declarator "**ppiVar6" * (pointer_declarator "*ppiVar6" * identifier)) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int *******local_30;" primitive_type (pointer_declarator "*******local_30" * (pointer_declarator "******local_30" * (pointer_declarator "*****local_30" * (pointer_declarator "****local_30" * (pointer_declarator "***local_30" * (pointer_declarator "**local_30" * (pointer_declarator "*local_30" * identifier))))))) ;) (declaration "undefined *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined *local_28;" type_identifier (pointer_declarator "*local_28" * identifier) ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined2 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "int **local_14;" primitive_type (pointer_declarator "**local_14" * (pointer_declarator "*local_14" * identifier)) ;) (expression_statement "local_14 = *(int ***)PTR___stack_chk_guard_000f6564;" (assignment_expression "local_14 = *(int ***)PTR___stack_chk_guard_000f6564" identifier = (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" * (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier))) ;) (expression_statement "pppppppiVar2 = param_1;" (assignment_expression "pppppppiVar2 = param_1" identifier = identifier) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (if_statement "if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }" if (parenthesized_expression "((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0))" ( (binary_expression "(*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)" (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" ( (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" * (cast_expression "(char *)((int)*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*param_1 + 0x51)" ( (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((param_2[1] & 0x80) == 0)" ( (binary_expression "(param_2[1] & 0x80) == 0" (parenthesized_expression "(param_2[1] & 0x80)" ( (binary_expression "param_2[1] & 0x80" (subscript_expression "param_2[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }" { (expression_statement "local_2c = PTR_LAB_000f62d8 + -0x37a4;" (assignment_expression "local_2c = PTR_LAB_000f62d8 + -0x37a4" identifier = (binary_expression "PTR_LAB_000f62d8 + -0x37a4" identifier + number_literal)) ;) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (if_statement "if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }" if (parenthesized_expression "(*(char *)((int)param_1 + 0x16) != '\0')" ( (binary_expression "*(char *)((int)param_1 + 0x16) != '\0'" (pointer_expression "*(char *)((int)param_1 + 0x16)" * (cast_expression "(char *)((int)param_1 + 0x16)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x16)" ( (binary_expression "(int)param_1 + 0x16" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }" { (expression_statement "local_28 = PTR_LAB_000f62f0 + 0x644;" (assignment_expression "local_28 = PTR_LAB_000f62f0 + 0x644" identifier = (binary_expression "PTR_LAB_000f62f0 + 0x644" identifier + number_literal)) ;) (expression_statement "local_24 = (undefined *)0x0;" (assignment_expression "local_24 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "FUN_0001c238(&local_30);" (call_expression "FUN_0001c238(&local_30)" identifier (argument_list "(&local_30)" ( (pointer_expression "&local_30" & identifier) ))) ;) })) (expression_statement "local_28 = PTR_LAB_000f62ec + 0x3990;" (assignment_expression "local_28 = PTR_LAB_000f62ec + 0x3990" identifier = (binary_expression "PTR_LAB_000f62ec + 0x3990" identifier + number_literal)) ;) (expression_statement "local_24 = PTR_LAB_000f62d8 + 0xac;" (assignment_expression "local_24 = PTR_LAB_000f62d8 + 0xac" identifier = (binary_expression "PTR_LAB_000f62d8 + 0xac" identifier + number_literal)) ;) (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" identifier = (cast_expression "(int *******)&local_30" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }" if (parenthesized_expression "((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0'))" ( (binary_expression "(param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')" (parenthesized_expression "(param_1[9] == (int ******)0x0)" ( (binary_expression "param_1[9] == (int ******)0x0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" ( (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" * (cast_expression "(char *)((int)*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*param_1 + 0x51)" ( (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }" { (expression_statement "local_2c = PTR_LAB_000f62e0 + -0x3468;" (assignment_expression "local_2c = PTR_LAB_000f62e0 + -0x3468" identifier = (binary_expression "PTR_LAB_000f62e0 + -0x3468" identifier + number_literal)) ;) (expression_statement "local_28 = PTR_LAB_000f62e8 + -0x3774;" (assignment_expression "local_28 = PTR_LAB_000f62e8 + -0x3774" identifier = (binary_expression "PTR_LAB_000f62e8 + -0x3774" identifier + number_literal)) ;) (expression_statement "local_24 = (undefined *)0x0;" (assignment_expression "local_24 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" identifier = (cast_expression "(int *******)&local_30" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (expression_statement "local_18 = param_3;" (assignment_expression "local_18 = param_3" identifier = identifier) ;) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }" if (parenthesized_expression "((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0'))" ( (binary_expression "(param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')" (parenthesized_expression "(param_1[9] == (int ******)0x0)" ( (binary_expression "param_1[9] == (int ******)0x0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" ( (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" * (cast_expression "(char *)((int)*param_1 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)*param_1 + 0x51)" ( (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }" { (expression_statement "local_28 = PTR_LAB_000f62d8 + -0x379c;" (assignment_expression "local_28 = PTR_LAB_000f62d8 + -0x379c" identifier = (binary_expression "PTR_LAB_000f62d8 + -0x379c" identifier + number_literal)) ;) (expression_statement "local_24 = PTR_LAB_000f62e8 + 0x492c;" (assignment_expression "local_24 = PTR_LAB_000f62e8 + 0x492c" identifier = (binary_expression "PTR_LAB_000f62e8 + 0x492c" identifier + number_literal)) ;) (expression_statement "local_2c = PTR_LAB_000f62d8 + -0x37a4;" (assignment_expression "local_2c = PTR_LAB_000f62d8 + -0x37a4" identifier = (binary_expression "PTR_LAB_000f62d8 + -0x37a4" identifier + number_literal)) ;) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" identifier = (cast_expression "(int *******)&local_30" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_30" & identifier))) ;) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" identifier = identifier) ;) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" identifier = identifier) ;) })) })) })) (if_statement "if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }" if (parenthesized_expression "(local_14 == *(int ***)PTR___stack_chk_guard_000f6564)" ( (binary_expression "local_14 == *(int ***)PTR___stack_chk_guard_000f6564" identifier == (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" * (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier))) )) (compound_statement "{\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }" { (return_statement "return *(int ***)PTR___stack_chk_guard_000f6564;" return (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" * (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) identifier)) ;) })) (expression_statement "puVar8 = PTR___stack_chk_fail_000f653c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000f653c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000f653c)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f653c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f653c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f653c" * (cast_expression "(code *)PTR___stack_chk_fail_000f653c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }" if (parenthesized_expression "(*(char *)((int)pppppppiVar2 + 0x96) == '\0')" ( (binary_expression "*(char *)((int)pppppppiVar2 + 0x96) == '\0'" (pointer_expression "*(char *)((int)pppppppiVar2 + 0x96)" * (cast_expression "(char *)((int)pppppppiVar2 + 0x96)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pppppppiVar2 + 0x96)" ( (binary_expression "(int)pppppppiVar2 + 0x96" (cast_expression "(int)pppppppiVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }" { (if_statement "if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }" if (parenthesized_expression "((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7])" ( (binary_expression "(int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]" (cast_expression "(int ****)puVar3[0x12]" ( (type_descriptor "int ****" primitive_type (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))) ) (subscript_expression "puVar3[0x12]" identifier [ number_literal ])) != (subscript_expression "(*pppppppiVar2)[4][7]" (subscript_expression "(*pppppppiVar2)[4]" (parenthesized_expression "(*pppppppiVar2)" ( (pointer_expression "*pppppppiVar2" * identifier) )) [ number_literal ]) [ number_literal ])) )) (compound_statement "{\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }" { (expression_statement "pppiVar4 = (*pppppppiVar2)[4][7][0xc];" (assignment_expression "pppiVar4 = (*pppppppiVar2)[4][7][0xc]" identifier = (subscript_expression "(*pppppppiVar2)[4][7][0xc]" (subscript_expression "(*pppppppiVar2)[4][7]" (subscript_expression "(*pppppppiVar2)[4]" (parenthesized_expression "(*pppppppiVar2)" ( (pointer_expression "*pppppppiVar2" * identifier) )) [ number_literal ]) [ number_literal ]) [ number_literal ])) ;) (expression_statement "ppiVar6 = (int **)0x0;" (assignment_expression "ppiVar6 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }" if (parenthesized_expression "(pppiVar4 != (int ***)0x0)" ( (binary_expression "pppiVar4 != (int ***)0x0" identifier != (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) (compound_statement "{\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }" { (expression_statement "iVar7 = *(int *)(puVar8 + 0xd6008);" (assignment_expression "iVar7 = *(int *)(puVar8 + 0xd6008)" identifier = (pointer_expression "*(int *)(puVar8 + 0xd6008)" * (cast_expression "(int *)(puVar8 + 0xd6008)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0xd6008)" ( (binary_expression "puVar8 + 0xd6008" identifier + number_literal) ))))) ;) (do_statement "do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);" do (compound_statement "{\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        }" { (expression_statement "ppiVar5 = pppiVar4[2];" (assignment_expression "ppiVar5 = pppiVar4[2]" identifier = (subscript_expression "pppiVar4[2]" identifier [ number_literal ])) ;) (if_statement "if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }" if (parenthesized_expression "((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0))" ( (binary_expression "(ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)" (parenthesized_expression "(ppiVar5[6] == (int *)puVar3[0x12])" ( (binary_expression "ppiVar5[6] == (int *)puVar3[0x12]" (subscript_expression "ppiVar5[6]" identifier [ number_literal ]) == (cast_expression "(int *)puVar3[0x12]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[0x12]" identifier [ number_literal ]))) )) && (parenthesized_expression "(iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3)" identifier = (call_expression "(*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3)" (parenthesized_expression "(*(code *)(iVar7 + 0x6e6c))" ( (pointer_expression "*(code *)(iVar7 + 0x6e6c)" * (cast_expression "(code *)(iVar7 + 0x6e6c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x6e6c)" ( (binary_expression "iVar7 + 0x6e6c" identifier + number_literal) )))) )) (argument_list "(ppiVar5[1],*puVar3)" ( (subscript_expression "ppiVar5[1]" identifier [ number_literal ]) , (pointer_expression "*puVar3" * identifier) )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }" { (if_statement "if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }" if (parenthesized_expression "(ppiVar6 == (int **)0x0)" ( (binary_expression "ppiVar6 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n              ppiVar6 = (int **)puVar3[0x11];\n            }" { (expression_statement "ppiVar6 = (int **)puVar3[0x11];" (assignment_expression "ppiVar6 = (int **)puVar3[0x11]" identifier = (cast_expression "(int **)puVar3[0x11]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[0x11]" identifier [ number_literal ]))) ;) })) (expression_statement "ppiVar5[8] = (int *)ppiVar6;" (assignment_expression "ppiVar5[8] = (int *)ppiVar6" (subscript_expression "ppiVar5[8]" identifier [ number_literal ]) = (cast_expression "(int *)ppiVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "ppiVar6 = ppiVar5;" (assignment_expression "ppiVar6 = ppiVar5" identifier = identifier) ;) })) (expression_statement "pppiVar4 = (int ***)*pppiVar4;" (assignment_expression "pppiVar4 = (int ***)*pppiVar4" identifier = (cast_expression "(int ***)*pppiVar4" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (pointer_expression "*pppiVar4" * identifier))) ;) }) while (parenthesized_expression "(pppiVar4 != (int ***)0x0)" ( (binary_expression "pppiVar4 != (int ***)0x0" identifier != (cast_expression "(int ***)0x0" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) number_literal)) )) ;) (if_statement "if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }" if (parenthesized_expression "(ppiVar6 != (int **)0x0)" ( (binary_expression "ppiVar6 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n          return ppiVar6;\n        }" { (return_statement "return ppiVar6;" return identifier ;) })) })) })) (expression_statement "ppiVar6 = (int **)puVar3[0x11];" (assignment_expression "ppiVar6 = (int **)puVar3[0x11]" identifier = (cast_expression "(int **)puVar3[0x11]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[0x11]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n    ppiVar6 = (int **)0x0;\n  }" else (compound_statement "{\n    ppiVar6 = (int **)0x0;\n  }" { (expression_statement "ppiVar6 = (int **)0x0;" (assignment_expression "ppiVar6 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }))) (return_statement "return ppiVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))))) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression & IDENT))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT))) )) (compound_statement { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))) ) (subscript_expression IDENT [ LIT ])) != (subscript_expression (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ LIT ]) [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (subscript_expression (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ LIT ]) [ LIT ]) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (pointer_expression * IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) LIT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (return_statement return IDENT ;) })) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int ** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}" (primitive_type "int") (pointer_declarator "** FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" (* "*") (pointer_declarator "* FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" (* "*") (function_declarator "FUN_000200f8(int *******param_1,undefined4 *param_2,undefined4 param_3)" (identifier "FUN_000200f8") (parameter_list "(int *******param_1,undefined4 *param_2,undefined4 param_3)" (( "(") (parameter_declaration "int *******param_1" (primitive_type "int") (pointer_declarator "*******param_1" (* "*") (pointer_declarator "******param_1" (* "*") (pointer_declarator "*****param_1" (* "*") (pointer_declarator "****param_1" (* "*") (pointer_declarator "***param_1" (* "*") (pointer_declarator "**param_1" (* "*") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))))))))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))))) (compound_statement "{\n  int iVar1;\n  int *******pppppppiVar2;\n  undefined4 *puVar3;\n  int ***pppiVar4;\n  int **ppiVar5;\n  int **ppiVar6;\n  int iVar7;\n  undefined *puVar8;\n  int *******local_30;\n  undefined *local_2c;\n  undefined *local_28;\n  undefined *local_24;\n  undefined2 local_1c;\n  undefined4 local_18;\n  int **local_14;\n  \n  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;\n  pppppppiVar2 = param_1;\n  puVar3 = param_2;\n  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }\n  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }\n  puVar8 = PTR___stack_chk_fail_000f653c;\n  (*(code *)PTR___stack_chk_fail_000f653c)();\n  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }\n  return ppiVar6;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *******pppppppiVar2;" (primitive_type "int") (pointer_declarator "*******pppppppiVar2" (* "*") (pointer_declarator "******pppppppiVar2" (* "*") (pointer_declarator "*****pppppppiVar2" (* "*") (pointer_declarator "****pppppppiVar2" (* "*") (pointer_declarator "***pppppppiVar2" (* "*") (pointer_declarator "**pppppppiVar2" (* "*") (pointer_declarator "*pppppppiVar2" (* "*") (identifier "pppppppiVar2")))))))) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int ***pppiVar4;" (primitive_type "int") (pointer_declarator "***pppiVar4" (* "*") (pointer_declarator "**pppiVar4" (* "*") (pointer_declarator "*pppiVar4" (* "*") (identifier "pppiVar4")))) (; ";")) (declaration "int **ppiVar5;" (primitive_type "int") (pointer_declarator "**ppiVar5" (* "*") (pointer_declarator "*ppiVar5" (* "*") (identifier "ppiVar5"))) (; ";")) (declaration "int **ppiVar6;" (primitive_type "int") (pointer_declarator "**ppiVar6" (* "*") (pointer_declarator "*ppiVar6" (* "*") (identifier "ppiVar6"))) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int *******local_30;" (primitive_type "int") (pointer_declarator "*******local_30" (* "*") (pointer_declarator "******local_30" (* "*") (pointer_declarator "*****local_30" (* "*") (pointer_declarator "****local_30" (* "*") (pointer_declarator "***local_30" (* "*") (pointer_declarator "**local_30" (* "*") (pointer_declarator "*local_30" (* "*") (identifier "local_30")))))))) (; ";")) (declaration "undefined *local_2c;" (type_identifier "undefined") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "undefined *local_28;" (type_identifier "undefined") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "undefined *local_24;" (type_identifier "undefined") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined2 local_1c;" (type_identifier "undefined2") (identifier "local_1c") (; ";")) (declaration "undefined4 local_18;" (type_identifier "undefined4") (identifier "local_18") (; ";")) (declaration "int **local_14;" (primitive_type "int") (pointer_declarator "**local_14" (* "*") (pointer_declarator "*local_14" (* "*") (identifier "local_14"))) (; ";")) (expression_statement "local_14 = *(int ***)PTR___stack_chk_guard_000f6564;" (assignment_expression "local_14 = *(int ***)PTR___stack_chk_guard_000f6564" (identifier "local_14") (= "=") (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" (* "*") (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "PTR___stack_chk_guard_000f6564")))) (; ";")) (expression_statement "pppppppiVar2 = param_1;" (assignment_expression "pppppppiVar2 = param_1" (identifier "pppppppiVar2") (= "=") (identifier "param_1")) (; ";")) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" (identifier "puVar3") (= "=") (identifier "param_2")) (; ";")) (if_statement "if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0))" (( "(") (binary_expression "(*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)" (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" (* "*") (cast_expression "(char *)((int)*param_1 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*param_1 + 0x51)" (( "(") (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((param_2[1] & 0x80) == 0)" (( "(") (binary_expression "(param_2[1] & 0x80) == 0" (parenthesized_expression "(param_2[1] & 0x80)" (( "(") (binary_expression "param_2[1] & 0x80" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    local_2c = PTR_LAB_000f62d8 + -0x37a4;\n    local_30 = param_1;\n    if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }\n    local_28 = PTR_LAB_000f62ec + 0x3990;\n    local_24 = PTR_LAB_000f62d8 + 0xac;\n    local_1c = 0;\n    pppppppiVar2 = (int *******)&local_30;\n    FUN_0001c238();\n    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }\n  }" ({ "{") (expression_statement "local_2c = PTR_LAB_000f62d8 + -0x37a4;" (assignment_expression "local_2c = PTR_LAB_000f62d8 + -0x37a4" (identifier "local_2c") (= "=") (binary_expression "PTR_LAB_000f62d8 + -0x37a4" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x37a4"))) (; ";")) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" (identifier "local_30") (= "=") (identifier "param_1")) (; ";")) (if_statement "if (*(char *)((int)param_1 + 0x16) != '\0') {\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }" (if "if") (parenthesized_expression "(*(char *)((int)param_1 + 0x16) != '\0')" (( "(") (binary_expression "*(char *)((int)param_1 + 0x16) != '\0'" (pointer_expression "*(char *)((int)param_1 + 0x16)" (* "*") (cast_expression "(char *)((int)param_1 + 0x16)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x16)" (( "(") (binary_expression "(int)param_1 + 0x16" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x16")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_28 = PTR_LAB_000f62f0 + 0x644;\n      local_24 = (undefined *)0x0;\n      FUN_0001c238(&local_30);\n    }" ({ "{") (expression_statement "local_28 = PTR_LAB_000f62f0 + 0x644;" (assignment_expression "local_28 = PTR_LAB_000f62f0 + 0x644" (identifier "local_28") (= "=") (binary_expression "PTR_LAB_000f62f0 + 0x644" (identifier "PTR_LAB_000f62f0") (+ "+") (number_literal "0x644"))) (; ";")) (expression_statement "local_24 = (undefined *)0x0;" (assignment_expression "local_24 = (undefined *)0x0" (identifier "local_24") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_0001c238(&local_30);" (call_expression "FUN_0001c238(&local_30)" (identifier "FUN_0001c238") (argument_list "(&local_30)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_28 = PTR_LAB_000f62ec + 0x3990;" (assignment_expression "local_28 = PTR_LAB_000f62ec + 0x3990" (identifier "local_28") (= "=") (binary_expression "PTR_LAB_000f62ec + 0x3990" (identifier "PTR_LAB_000f62ec") (+ "+") (number_literal "0x3990"))) (; ";")) (expression_statement "local_24 = PTR_LAB_000f62d8 + 0xac;" (assignment_expression "local_24 = PTR_LAB_000f62d8 + 0xac" (identifier "local_24") (= "=") (binary_expression "PTR_LAB_000f62d8 + 0xac" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "0xac"))) (; ";")) (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" (identifier "local_1c") (= "=") (number_literal "0")) (; ";")) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" (identifier "pppppppiVar2") (= "=") (cast_expression "(int *******)&local_30" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "&local_30" (& "&") (identifier "local_30")))) (; ";")) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" (identifier "FUN_0001c238") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }" (if "if") (parenthesized_expression "((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0'))" (( "(") (binary_expression "(param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')" (parenthesized_expression "(param_1[9] == (int ******)0x0)" (( "(") (binary_expression "param_1[9] == (int ******)0x0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (cast_expression "(int ******)0x0" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" (* "*") (cast_expression "(char *)((int)*param_1 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*param_1 + 0x51)" (( "(") (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      local_2c = PTR_LAB_000f62e0 + -0x3468;\n      local_28 = PTR_LAB_000f62e8 + -0x3774;\n      local_24 = (undefined *)0x0;\n      pppppppiVar2 = (int *******)&local_30;\n      puVar3 = param_2;\n      local_30 = param_1;\n      local_18 = param_3;\n      FUN_0001c238();\n      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }\n    }" ({ "{") (expression_statement "local_2c = PTR_LAB_000f62e0 + -0x3468;" (assignment_expression "local_2c = PTR_LAB_000f62e0 + -0x3468" (identifier "local_2c") (= "=") (binary_expression "PTR_LAB_000f62e0 + -0x3468" (identifier "PTR_LAB_000f62e0") (+ "+") (number_literal "-0x3468"))) (; ";")) (expression_statement "local_28 = PTR_LAB_000f62e8 + -0x3774;" (assignment_expression "local_28 = PTR_LAB_000f62e8 + -0x3774" (identifier "local_28") (= "=") (binary_expression "PTR_LAB_000f62e8 + -0x3774" (identifier "PTR_LAB_000f62e8") (+ "+") (number_literal "-0x3774"))) (; ";")) (expression_statement "local_24 = (undefined *)0x0;" (assignment_expression "local_24 = (undefined *)0x0" (identifier "local_24") (= "=") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" (identifier "pppppppiVar2") (= "=") (cast_expression "(int *******)&local_30" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "&local_30" (& "&") (identifier "local_30")))) (; ";")) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" (identifier "puVar3") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" (identifier "local_30") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_18 = param_3;" (assignment_expression "local_18 = param_3" (identifier "local_18") (= "=") (identifier "param_3")) (; ";")) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" (identifier "FUN_0001c238") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }" (if "if") (parenthesized_expression "((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0'))" (( "(") (binary_expression "(param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')" (parenthesized_expression "(param_1[9] == (int ******)0x0)" (( "(") (binary_expression "param_1[9] == (int ******)0x0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (cast_expression "(int ******)0x0" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((int)*param_1 + 0x51) == '\0')" (( "(") (binary_expression "*(char *)((int)*param_1 + 0x51) == '\0'" (pointer_expression "*(char *)((int)*param_1 + 0x51)" (* "*") (cast_expression "(char *)((int)*param_1 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)*param_1 + 0x51)" (( "(") (binary_expression "(int)*param_1 + 0x51" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (+ "+") (number_literal "0x51")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        local_28 = PTR_LAB_000f62d8 + -0x379c;\n        local_24 = PTR_LAB_000f62e8 + 0x492c;\n        local_2c = PTR_LAB_000f62d8 + -0x37a4;\n        pppppppiVar2 = (int *******)&local_30;\n        local_30 = param_1;\n        FUN_0001c238();\n        puVar3 = param_2;\n      }" ({ "{") (expression_statement "local_28 = PTR_LAB_000f62d8 + -0x379c;" (assignment_expression "local_28 = PTR_LAB_000f62d8 + -0x379c" (identifier "local_28") (= "=") (binary_expression "PTR_LAB_000f62d8 + -0x379c" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x379c"))) (; ";")) (expression_statement "local_24 = PTR_LAB_000f62e8 + 0x492c;" (assignment_expression "local_24 = PTR_LAB_000f62e8 + 0x492c" (identifier "local_24") (= "=") (binary_expression "PTR_LAB_000f62e8 + 0x492c" (identifier "PTR_LAB_000f62e8") (+ "+") (number_literal "0x492c"))) (; ";")) (expression_statement "local_2c = PTR_LAB_000f62d8 + -0x37a4;" (assignment_expression "local_2c = PTR_LAB_000f62d8 + -0x37a4" (identifier "local_2c") (= "=") (binary_expression "PTR_LAB_000f62d8 + -0x37a4" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x37a4"))) (; ";")) (expression_statement "pppppppiVar2 = (int *******)&local_30;" (assignment_expression "pppppppiVar2 = (int *******)&local_30" (identifier "pppppppiVar2") (= "=") (cast_expression "(int *******)&local_30" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "&local_30" (& "&") (identifier "local_30")))) (; ";")) (expression_statement "local_30 = param_1;" (assignment_expression "local_30 = param_1" (identifier "local_30") (= "=") (identifier "param_1")) (; ";")) (expression_statement "FUN_0001c238();" (call_expression "FUN_0001c238()" (identifier "FUN_0001c238") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar3 = param_2;" (assignment_expression "puVar3 = param_2" (identifier "puVar3") (= "=") (identifier "param_2")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }" (if "if") (parenthesized_expression "(local_14 == *(int ***)PTR___stack_chk_guard_000f6564)" (( "(") (binary_expression "local_14 == *(int ***)PTR___stack_chk_guard_000f6564" (identifier "local_14") (== "==") (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" (* "*") (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "PTR___stack_chk_guard_000f6564")))) () ")")) (compound_statement "{\n    return *(int ***)PTR___stack_chk_guard_000f6564;\n  }" ({ "{") (return_statement "return *(int ***)PTR___stack_chk_guard_000f6564;" (return "return") (pointer_expression "*(int ***)PTR___stack_chk_guard_000f6564" (* "*") (cast_expression "(int ***)PTR___stack_chk_guard_000f6564" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (identifier "PTR___stack_chk_guard_000f6564"))) (; ";")) (} "}"))) (expression_statement "puVar8 = PTR___stack_chk_fail_000f653c;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000f653c" (identifier "puVar8") (= "=") (identifier "PTR___stack_chk_fail_000f653c")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000f653c)();" (call_expression "(*(code *)PTR___stack_chk_fail_000f653c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f653c)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000f653c" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000f653c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000f653c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }\n  else {\n    ppiVar6 = (int **)0x0;\n  }" (if "if") (parenthesized_expression "(*(char *)((int)pppppppiVar2 + 0x96) == '\0')" (( "(") (binary_expression "*(char *)((int)pppppppiVar2 + 0x96) == '\0'" (pointer_expression "*(char *)((int)pppppppiVar2 + 0x96)" (* "*") (cast_expression "(char *)((int)pppppppiVar2 + 0x96)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pppppppiVar2 + 0x96)" (( "(") (binary_expression "(int)pppppppiVar2 + 0x96" (cast_expression "(int)pppppppiVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppppppiVar2")) (+ "+") (number_literal "0x96")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }\n    ppiVar6 = (int **)puVar3[0x11];\n  }" ({ "{") (if_statement "if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7])" (( "(") (binary_expression "(int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]" (cast_expression "(int ****)puVar3[0x12]" (( "(") (type_descriptor "int ****" (primitive_type "int") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))) () ")") (subscript_expression "puVar3[0x12]" (identifier "puVar3") ([ "[") (number_literal "0x12") (] "]"))) (!= "!=") (subscript_expression "(*pppppppiVar2)[4][7]" (subscript_expression "(*pppppppiVar2)[4]" (parenthesized_expression "(*pppppppiVar2)" (( "(") (pointer_expression "*pppppppiVar2" (* "*") (identifier "pppppppiVar2")) () ")")) ([ "[") (number_literal "4") (] "]")) ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n      pppiVar4 = (*pppppppiVar2)[4][7][0xc];\n      ppiVar6 = (int **)0x0;\n      if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }\n    }" ({ "{") (expression_statement "pppiVar4 = (*pppppppiVar2)[4][7][0xc];" (assignment_expression "pppiVar4 = (*pppppppiVar2)[4][7][0xc]" (identifier "pppiVar4") (= "=") (subscript_expression "(*pppppppiVar2)[4][7][0xc]" (subscript_expression "(*pppppppiVar2)[4][7]" (subscript_expression "(*pppppppiVar2)[4]" (parenthesized_expression "(*pppppppiVar2)" (( "(") (pointer_expression "*pppppppiVar2" (* "*") (identifier "pppppppiVar2")) () ")")) ([ "[") (number_literal "4") (] "]")) ([ "[") (number_literal "7") (] "]")) ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "ppiVar6 = (int **)0x0;" (assignment_expression "ppiVar6 = (int **)0x0" (identifier "ppiVar6") (= "=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (pppiVar4 != (int ***)0x0) {\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }" (if "if") (parenthesized_expression "(pppiVar4 != (int ***)0x0)" (( "(") (binary_expression "pppiVar4 != (int ***)0x0" (identifier "pppiVar4") (!= "!=") (cast_expression "(int ***)0x0" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        iVar7 = *(int *)(puVar8 + 0xd6008);\n        do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);\n        if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }\n      }" ({ "{") (expression_statement "iVar7 = *(int *)(puVar8 + 0xd6008);" (assignment_expression "iVar7 = *(int *)(puVar8 + 0xd6008)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(puVar8 + 0xd6008)" (* "*") (cast_expression "(int *)(puVar8 + 0xd6008)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0xd6008)" (( "(") (binary_expression "puVar8 + 0xd6008" (identifier "puVar8") (+ "+") (number_literal "0xd6008")) () ")"))))) (; ";")) (do_statement "do {\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        } while (pppiVar4 != (int ***)0x0);" (do "do") (compound_statement "{\n          ppiVar5 = pppiVar4[2];\n          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }\n          pppiVar4 = (int ***)*pppiVar4;\n        }" ({ "{") (expression_statement "ppiVar5 = pppiVar4[2];" (assignment_expression "ppiVar5 = pppiVar4[2]" (identifier "ppiVar5") (= "=") (subscript_expression "pppiVar4[2]" (identifier "pppiVar4") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }" (if "if") (parenthesized_expression "((ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0))" (( "(") (binary_expression "(ppiVar5[6] == (int *)puVar3[0x12]) &&\n             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)" (parenthesized_expression "(ppiVar5[6] == (int *)puVar3[0x12])" (( "(") (binary_expression "ppiVar5[6] == (int *)puVar3[0x12]" (subscript_expression "ppiVar5[6]" (identifier "ppiVar5") ([ "[") (number_literal "6") (] "]")) (== "==") (cast_expression "(int *)puVar3[0x12]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[0x12]" (identifier "puVar3") ([ "[") (number_literal "0x12") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)" (( "(") (comma_expression "iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3)" (identifier "iVar1") (= "=") (call_expression "(*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3)" (parenthesized_expression "(*(code *)(iVar7 + 0x6e6c))" (( "(") (pointer_expression "*(code *)(iVar7 + 0x6e6c)" (* "*") (cast_expression "(code *)(iVar7 + 0x6e6c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x6e6c)" (( "(") (binary_expression "iVar7 + 0x6e6c" (identifier "iVar7") (+ "+") (number_literal "0x6e6c")) () ")")))) () ")")) (argument_list "(ppiVar5[1],*puVar3)" (( "(") (subscript_expression "ppiVar5[1]" (identifier "ppiVar5") ([ "[") (number_literal "1") (] "]")) (, ",") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n            if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }\n            ppiVar5[8] = (int *)ppiVar6;\n            ppiVar6 = ppiVar5;\n          }" ({ "{") (if_statement "if (ppiVar6 == (int **)0x0) {\n              ppiVar6 = (int **)puVar3[0x11];\n            }" (if "if") (parenthesized_expression "(ppiVar6 == (int **)0x0)" (( "(") (binary_expression "ppiVar6 == (int **)0x0" (identifier "ppiVar6") (== "==") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              ppiVar6 = (int **)puVar3[0x11];\n            }" ({ "{") (expression_statement "ppiVar6 = (int **)puVar3[0x11];" (assignment_expression "ppiVar6 = (int **)puVar3[0x11]" (identifier "ppiVar6") (= "=") (cast_expression "(int **)puVar3[0x11]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "puVar3[0x11]" (identifier "puVar3") ([ "[") (number_literal "0x11") (] "]")))) (; ";")) (} "}"))) (expression_statement "ppiVar5[8] = (int *)ppiVar6;" (assignment_expression "ppiVar5[8] = (int *)ppiVar6" (subscript_expression "ppiVar5[8]" (identifier "ppiVar5") ([ "[") (number_literal "8") (] "]")) (= "=") (cast_expression "(int *)ppiVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "ppiVar6"))) (; ";")) (expression_statement "ppiVar6 = ppiVar5;" (assignment_expression "ppiVar6 = ppiVar5" (identifier "ppiVar6") (= "=") (identifier "ppiVar5")) (; ";")) (} "}"))) (expression_statement "pppiVar4 = (int ***)*pppiVar4;" (assignment_expression "pppiVar4 = (int ***)*pppiVar4" (identifier "pppiVar4") (= "=") (cast_expression "(int ***)*pppiVar4" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (pointer_expression "*pppiVar4" (* "*") (identifier "pppiVar4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pppiVar4 != (int ***)0x0)" (( "(") (binary_expression "pppiVar4 != (int ***)0x0" (identifier "pppiVar4") (!= "!=") (cast_expression "(int ***)0x0" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (if_statement "if (ppiVar6 != (int **)0x0) {\n          return ppiVar6;\n        }" (if "if") (parenthesized_expression "(ppiVar6 != (int **)0x0)" (( "(") (binary_expression "ppiVar6 != (int **)0x0" (identifier "ppiVar6") (!= "!=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          return ppiVar6;\n        }" ({ "{") (return_statement "return ppiVar6;" (return "return") (identifier "ppiVar6") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "ppiVar6 = (int **)puVar3[0x11];" (assignment_expression "ppiVar6 = (int **)puVar3[0x11]" (identifier "ppiVar6") (= "=") (cast_expression "(int **)puVar3[0x11]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "puVar3[0x11]" (identifier "puVar3") ([ "[") (number_literal "0x11") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n    ppiVar6 = (int **)0x0;\n  }" (else "else") (compound_statement "{\n    ppiVar6 = (int **)0x0;\n  }" ({ "{") (expression_statement "ppiVar6 = (int **)0x0;" (assignment_expression "ppiVar6 = (int **)0x0" (identifier "ppiVar6") (= "=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (return_statement "return ppiVar6;" (return "return") (identifier "ppiVar6") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal))))) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (identifier))))) consequence: (compound_statement (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (subscript_expression argument: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (number_literal)) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (subscript_expression argument: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (number_literal)) index: (number_literal)) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (pointer_expression argument: (identifier))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (return_statement (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal))))))) (return_statement (identifier)))))

/* WARNING: Type propagation algorithm not settling */

int ** MASKED(int *******param_1,undefined4 *param_2,undefined4 param_3)

{
  int iVar1;
  int *******pppppppiVar2;
  undefined4 *puVar3;
  int ***pppiVar4;
  int **ppiVar5;
  int **ppiVar6;
  int iVar7;
  undefined *puVar8;
  int *******local_30;
  undefined *local_2c;
  undefined *local_28;
  undefined *local_24;
  undefined2 local_1c;
  undefined4 local_18;
  int **local_14;
  
  local_14 = *(int ***)PTR___stack_chk_guard_000f6564;
  pppppppiVar2 = param_1;
  puVar3 = param_2;
  if ((*(char *)((int)*param_1 + 0x51) == '\0') && ((param_2[1] & 0x80) == 0)) {
    local_2c = PTR_LAB_000f62d8 + -0x37a4;
    local_30 = param_1;
    if (*(char *)((int)param_1 + 0x16) != '\0') {
      local_28 = PTR_LAB_000f62f0 + 0x644;
      local_24 = (undefined *)0x0;
      FUN_0001c238(&local_30);
    }
    local_28 = PTR_LAB_000f62ec + 0x3990;
    local_24 = PTR_LAB_000f62d8 + 0xac;
    local_1c = 0;
    pppppppiVar2 = (int *******)&local_30;
    FUN_0001c238();
    if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {
      local_2c = PTR_LAB_000f62e0 + -0x3468;
      local_28 = PTR_LAB_000f62e8 + -0x3774;
      local_24 = (undefined *)0x0;
      pppppppiVar2 = (int *******)&local_30;
      puVar3 = param_2;
      local_30 = param_1;
      local_18 = param_3;
      FUN_0001c238();
      if ((param_1[9] == (int ******)0x0) && (*(char *)((int)*param_1 + 0x51) == '\0')) {
        local_28 = PTR_LAB_000f62d8 + -0x379c;
        local_24 = PTR_LAB_000f62e8 + 0x492c;
        local_2c = PTR_LAB_000f62d8 + -0x37a4;
        pppppppiVar2 = (int *******)&local_30;
        local_30 = param_1;
        FUN_0001c238();
        puVar3 = param_2;
      }
    }
  }
  if (local_14 == *(int ***)PTR___stack_chk_guard_000f6564) {
    return *(int ***)PTR___stack_chk_guard_000f6564;
  }
  puVar8 = PTR___stack_chk_fail_000f653c;
  (*(code *)PTR___stack_chk_fail_000f653c)();
  if (*(char *)((int)pppppppiVar2 + 0x96) == '\0') {
    if ((int ****)puVar3[0x12] != (*pppppppiVar2)[4][7]) {
      pppiVar4 = (*pppppppiVar2)[4][7][0xc];
      ppiVar6 = (int **)0x0;
      if (pppiVar4 != (int ***)0x0) {
        iVar7 = *(int *)(puVar8 + 0xd6008);
        do {
          ppiVar5 = pppiVar4[2];
          if ((ppiVar5[6] == (int *)puVar3[0x12]) &&
             (iVar1 = (*(code *)(iVar7 + 0x6e6c))(ppiVar5[1],*puVar3), iVar1 == 0)) {
            if (ppiVar6 == (int **)0x0) {
              ppiVar6 = (int **)puVar3[0x11];
            }
            ppiVar5[8] = (int *)ppiVar6;
            ppiVar6 = ppiVar5;
          }
          pppiVar4 = (int ***)*pppiVar4;
        } while (pppiVar4 != (int ***)0x0);
        if (ppiVar6 != (int **)0x0) {
          return ppiVar6;
        }
      }
    }
    ppiVar6 = (int **)puVar3[0x11];
  }
  else {
    ppiVar6 = (int **)0x0;
  }
  return ppiVar6;
}

