
/* DWARF original prototype: Trigger * sqlite3TriggerList(Parse * pParse, Table * pTab, Parse *
   pParse) */

Trigger * sqlite3TriggerList(Parse *pParse,Table *pTab,Parse *pParse_1)

{
  sqlite3_vfs **ppsVar1;
  undefined *puVar2;
  Schema *pSVar3;
  Trigger *pTVar4;
  Schema *pSVar5;
  HashElem *pHVar6;
  byte *pbVar7;
  sqlite3 *psVar8;
  uint uVar9;
  Trigger *pTVar10;
  
  puVar2 = PTR_DAT_0015b694;
  pSVar3 = *(Schema **)(*(int *)&pParse->colNamesSet + 0x1c);
  if (pTab != (Table *)0x0) {
    return (Trigger *)0x0;
  }
  pSVar5 = (Schema *)(pParse_1->constraintName).z;
  if ((pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)) {
    pTVar4 = (Trigger *)0x0;
    do {
      pTVar10 = (Trigger *)pHVar6->data;
      if (pTVar10->pTabSchema == pSVar5) {
        pbVar7 = (byte *)pTVar10->table;
        psVar8 = pParse_1->db;
        uVar9 = (uint)*pbVar7;
        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {
          do {
            pbVar7 = pbVar7 + 1;
            if (uVar9 == 0) {
              if (pTVar4 == (Trigger *)0x0) {
                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;
              }
              else {
                pTVar10->pNext = pTVar4;
              }
              pHVar6 = pHVar6->next;
              pTVar4 = pTVar10;
              goto joined_r0x0003a4a8;
            }
            ppsVar1 = &psVar8->pVfs;
            uVar9 = (uint)*pbVar7;
            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);
          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);
          goto LAB_0003a41c;
        }
        pHVar6 = pHVar6->next;
      }
      else {
LAB_0003a41c:
        pHVar6 = pHVar6->next;
      }
joined_r0x0003a4a8:
      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;
      pSVar5 = (Schema *)(pParse_1->constraintName).z;
    } while( true );
  }
LAB_0003a4c0:
  return (Trigger *)pParse_1->pConstExpr;
LAB_0003a4b0:
  if (pTVar4 != (Trigger *)0x0) {
    return pTVar4;
  }
  goto LAB_0003a4c0;
}



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

{
  byte *pbVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  int iVar9;
  
  puVar2 = PTR_DAT_0015b694;
  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);
  if (param_2 != 0) {
    return 0;
  }
  iVar4 = param_3[0x12];
  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {
    iVar3 = 0;
    do {
      iVar9 = piVar5[2];
      if (*(int *)(iVar9 + 0x18) == iVar4) {
        pbVar6 = *(byte **)(iVar9 + 4);
        pbVar7 = (byte *)*param_3;
        uVar8 = (uint)*pbVar6;
        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {
          do {
            pbVar6 = pbVar6 + 1;
            if (uVar8 == 0) {
              if (iVar3 == 0) {
                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];
              }
              else {
                *(int *)(iVar9 + 0x20) = iVar3;
              }
              piVar5 = (int *)*piVar5;
              iVar3 = iVar9;
              goto joined_r0x0003a4a8;
            }
            pbVar1 = pbVar7 + 1;
            uVar8 = (uint)*pbVar6;
            pbVar7 = pbVar7 + 1;
          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);
          goto LAB_0003a41c;
        }
        piVar5 = (int *)*piVar5;
      }
      else {
LAB_0003a41c:
        piVar5 = (int *)*piVar5;
      }
joined_r0x0003a4a8:
      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;
      iVar4 = param_3[0x12];
    } while( true );
  }
LAB_0003a4c0:
  return param_3[0x11];
LAB_0003a4b0:
  if (iVar3 != 0) {
    return iVar3;
  }
  goto LAB_0003a4c0;
}


lui gp,0x13
addiu gp,gp,-0x6e2c
addu gp,gp,t9
lw v0,0x10(a0)
bne a1,zero,0x0003a4d8
_lw v0,0x1c(v0)
lw v1,0x48(a2)
beq v0,v1,0x0003a4c0
_nop
lw a0,0x30(v0)
beq a0,zero,0x0003a4c0
_nop
lw t1,-0x7f1c(gp)
or v0,zero,zero
b 0x0003a42c
_addiu t1,t1,-0x7a28
lw a0,0x0(a0)
beq a0,zero,0x0003a4b0
_nop
lw v1,0x48(a2)
lw t3,0x8(a0)
lw a1,0x18(t3)
bne a1,v1,0x0003a41c
_nop
lw a1,0x4(t3)
lw a3,0x0(a2)
lbu t0,0x0(a1)
lbu v1,0x0(a3)
addu t2,t1,t0
addu v1,t1,v1
lbu t2,0x0(t2)
lbu v1,0x0(v1)
beq v1,t2,0x0003a48c
_nop
b 0x0003a420
_lw a0,0x0(a0)
lbu v1,0x1(a3)
lbu t0,0x0(a1)
addu v1,t1,v1
addu t2,t1,t0
lbu v1,0x0(v1)
lbu t2,0x0(t2)
bne t2,v1,0x0003a41c
_addiu a3,a3,0x1
bne t0,zero,0x0003a46c
_addiu a1,a1,0x1
beq v0,zero,0x0003a4c8
_addiu a1,a1,-0x1
sw v0,0x20(t3)
or v0,t3,zero
lw a0,0x0(a0)
bne a0,zero,0x0003a428
_nop
beq v0,zero,0x0003a4c0
_nop
jr ra
_nop
jr ra
_lw v0,0x44(a2)
lw v0,0x44(a2)
sw v0,0x20(t3)
b 0x0003a4a4
_or v0,t3,zero
jr ra
_or v0,zero,zero
(translation_unit "int FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)\n\n{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}\n\n" (function_definition "int FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)\n\n{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}" primitive_type (function_declarator "FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "puVar2 = PTR_DAT_0015b694;" (assignment_expression "puVar2 = PTR_DAT_0015b694" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);" (assignment_expression "iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0x1c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x10) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (param_2 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = param_3[0x12];" (assignment_expression "iVar4 = param_3[0x12]" identifier = (subscript_expression "param_3[0x12]" identifier [ number_literal ])) ;) (if_statement "if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }" if (parenthesized_expression "((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0))" ( (binary_expression "(iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)" (parenthesized_expression "(iVar3 != iVar4)" ( (binary_expression "iVar3 != iVar4" identifier != identifier) )) && (parenthesized_expression "(piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)" ( (comma_expression "piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0" (assignment_expression "piVar5 = *(int **)(iVar3 + 0x30)" identifier = (pointer_expression "*(int **)(iVar3 + 0x30)" * (cast_expression "(int **)(iVar3 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x30)" ( (binary_expression "iVar3 + 0x30" identifier + number_literal) ))))) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );" do (compound_statement "{\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    }" { (expression_statement "iVar9 = piVar5[2];" (assignment_expression "iVar9 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" if (parenthesized_expression "(*(int *)(iVar9 + 0x18) == iVar4)" ( (binary_expression "*(int *)(iVar9 + 0x18) == iVar4" (pointer_expression "*(int *)(iVar9 + 0x18)" * (cast_expression "(int *)(iVar9 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x18)" ( (binary_expression "iVar9 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }" { (expression_statement "pbVar6 = *(byte **)(iVar9 + 4);" (assignment_expression "pbVar6 = *(byte **)(iVar9 + 4)" identifier = (pointer_expression "*(byte **)(iVar9 + 4)" * (cast_expression "(byte **)(iVar9 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)*param_3;" (assignment_expression "pbVar7 = (byte *)*param_3" identifier = (cast_expression "(byte *)*param_3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "uVar8 = (uint)*pbVar6;" (assignment_expression "uVar8 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }" if (parenthesized_expression "(puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28])" ( (binary_expression "puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]" (subscript_expression "puVar2[*pbVar7 - 0x7a28]" identifier [ (binary_expression "*pbVar7 - 0x7a28" (pointer_expression "*pbVar7" * identifier) - number_literal) ]) == (subscript_expression "puVar2[uVar8 - 0x7a28]" identifier [ (binary_expression "uVar8 - 0x7a28" identifier - number_literal) ])) )) (compound_statement "{\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }" { (do_statement "do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);" do (compound_statement "{\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }" { (if_statement "if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }" { (expression_statement "*(undefined4 *)(iVar9 + 0x20) = param_3[0x11];" (assignment_expression "*(undefined4 *)(iVar9 + 0x20) = param_3[0x11]" (pointer_expression "*(undefined4 *)(iVar9 + 0x20)" * (cast_expression "(undefined4 *)(iVar9 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) }) (else_clause "else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" else (compound_statement "{\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" { (expression_statement "*(int *)(iVar9 + 0x20) = iVar3;" (assignment_expression "*(int *)(iVar9 + 0x20) = iVar3" (pointer_expression "*(int *)(iVar9 + 0x20)" * (cast_expression "(int *)(iVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" identifier = identifier) ;) (goto_statement "goto joined_r0x0003a4a8;" goto statement_identifier ;) })) (expression_statement "pbVar1 = pbVar7 + 1;" (assignment_expression "pbVar1 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)*pbVar6;" (assignment_expression "uVar8 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28])" ( (binary_expression "puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]" (subscript_expression "puVar2[uVar8 - 0x7a28]" identifier [ (binary_expression "uVar8 - 0x7a28" identifier - number_literal) ]) == (subscript_expression "puVar2[*pbVar1 - 0x7a28]" identifier [ (binary_expression "*pbVar1 - 0x7a28" (pointer_expression "*pbVar1" * identifier) - number_literal) ])) )) ;) (goto_statement "goto LAB_0003a41c;" goto statement_identifier ;) })) (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }) (else_clause "else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" else (compound_statement "{\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" { (labeled_statement "LAB_0003a41c:\n        piVar5 = (int *)*piVar5;" statement_identifier : (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;)) }))) (labeled_statement "joined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;" statement_identifier : (if_statement "if (piVar5 == (int *)0x0) goto LAB_0003a4b0;" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003a4b0;" goto statement_identifier ;))) (expression_statement "iVar4 = param_3[0x12];" (assignment_expression "iVar4 = param_3[0x12]" identifier = (subscript_expression "param_3[0x12]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0003a4c0:\n  return param_3[0x11];" statement_identifier : (return_statement "return param_3[0x11];" return (subscript_expression "param_3[0x11]" identifier [ number_literal ]) ;)) (labeled_statement "LAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }" statement_identifier : (if_statement "if (iVar3 != 0) {\n    return iVar3;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) }))) (goto_statement "goto LAB_0003a4c0;" goto statement_identifier ;) })))
(translation_unit "/* DWARF original prototype: Trigger * sqlite3TriggerList(Parse * pParse, Table * pTab, Parse *\n   pParse) */\n\nTrigger * sqlite3TriggerList(Parse *pParse,Table *pTab,Parse *pParse_1)\n\n{\n  sqlite3_vfs **ppsVar1;\n  undefined *puVar2;\n  Schema *pSVar3;\n  Trigger *pTVar4;\n  Schema *pSVar5;\n  HashElem *pHVar6;\n  byte *pbVar7;\n  sqlite3 *psVar8;\n  uint uVar9;\n  Trigger *pTVar10;\n  \n  puVar2 = PTR_DAT_0015b694;\n  pSVar3 = *(Schema **)(*(int *)&pParse->colNamesSet + 0x1c);\n  if (pTab != (Table *)0x0) {\n    return (Trigger *)0x0;\n  }\n  pSVar5 = (Schema *)(pParse_1->constraintName).z;\n  if ((pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)) {\n    pTVar4 = (Trigger *)0x0;\n    do {\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    } while( true );\n  }\nLAB_0003a4c0:\n  return (Trigger *)pParse_1->pConstExpr;\nLAB_0003a4b0:\n  if (pTVar4 != (Trigger *)0x0) {\n    return pTVar4;\n  }\n  goto LAB_0003a4c0;\n}\n\n" comment (function_definition "Trigger * sqlite3TriggerList(Parse *pParse,Table *pTab,Parse *pParse_1)\n\n{\n  sqlite3_vfs **ppsVar1;\n  undefined *puVar2;\n  Schema *pSVar3;\n  Trigger *pTVar4;\n  Schema *pSVar5;\n  HashElem *pHVar6;\n  byte *pbVar7;\n  sqlite3 *psVar8;\n  uint uVar9;\n  Trigger *pTVar10;\n  \n  puVar2 = PTR_DAT_0015b694;\n  pSVar3 = *(Schema **)(*(int *)&pParse->colNamesSet + 0x1c);\n  if (pTab != (Table *)0x0) {\n    return (Trigger *)0x0;\n  }\n  pSVar5 = (Schema *)(pParse_1->constraintName).z;\n  if ((pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)) {\n    pTVar4 = (Trigger *)0x0;\n    do {\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    } while( true );\n  }\nLAB_0003a4c0:\n  return (Trigger *)pParse_1->pConstExpr;\nLAB_0003a4b0:\n  if (pTVar4 != (Trigger *)0x0) {\n    return pTVar4;\n  }\n  goto LAB_0003a4c0;\n}" type_identifier (pointer_declarator "* sqlite3TriggerList(Parse *pParse,Table *pTab,Parse *pParse_1)" * (function_declarator "sqlite3TriggerList(Parse *pParse,Table *pTab,Parse *pParse_1)" identifier (parameter_list "(Parse *pParse,Table *pTab,Parse *pParse_1)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "Parse *pParse_1" type_identifier (pointer_declarator "*pParse_1" * identifier)) )))) (compound_statement "{\n  sqlite3_vfs **ppsVar1;\n  undefined *puVar2;\n  Schema *pSVar3;\n  Trigger *pTVar4;\n  Schema *pSVar5;\n  HashElem *pHVar6;\n  byte *pbVar7;\n  sqlite3 *psVar8;\n  uint uVar9;\n  Trigger *pTVar10;\n  \n  puVar2 = PTR_DAT_0015b694;\n  pSVar3 = *(Schema **)(*(int *)&pParse->colNamesSet + 0x1c);\n  if (pTab != (Table *)0x0) {\n    return (Trigger *)0x0;\n  }\n  pSVar5 = (Schema *)(pParse_1->constraintName).z;\n  if ((pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)) {\n    pTVar4 = (Trigger *)0x0;\n    do {\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    } while( true );\n  }\nLAB_0003a4c0:\n  return (Trigger *)pParse_1->pConstExpr;\nLAB_0003a4b0:\n  if (pTVar4 != (Trigger *)0x0) {\n    return pTVar4;\n  }\n  goto LAB_0003a4c0;\n}" { (declaration "sqlite3_vfs **ppsVar1;" type_identifier (pointer_declarator "**ppsVar1" * (pointer_declarator "*ppsVar1" * identifier)) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Schema *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "Trigger *pTVar4;" type_identifier (pointer_declarator "*pTVar4" * identifier) ;) (declaration "Schema *pSVar5;" type_identifier (pointer_declarator "*pSVar5" * identifier) ;) (declaration "HashElem *pHVar6;" type_identifier (pointer_declarator "*pHVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "sqlite3 *psVar8;" type_identifier (pointer_declarator "*psVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "Trigger *pTVar10;" type_identifier (pointer_declarator "*pTVar10" * identifier) ;) (expression_statement "puVar2 = PTR_DAT_0015b694;" (assignment_expression "puVar2 = PTR_DAT_0015b694" identifier = identifier) ;) (expression_statement "pSVar3 = *(Schema **)(*(int *)&pParse->colNamesSet + 0x1c);" (assignment_expression "pSVar3 = *(Schema **)(*(int *)&pParse->colNamesSet + 0x1c)" identifier = (pointer_expression "*(Schema **)(*(int *)&pParse->colNamesSet + 0x1c)" * (cast_expression "(Schema **)(*(int *)&pParse->colNamesSet + 0x1c)" ( (type_descriptor "Schema **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)&pParse->colNamesSet + 0x1c)" ( (binary_expression "*(int *)&pParse->colNamesSet + 0x1c" (pointer_expression "*(int *)&pParse->colNamesSet" * (cast_expression "(int *)&pParse->colNamesSet" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pParse->colNamesSet" & (field_expression "pParse->colNamesSet" identifier -> field_identifier)))) + number_literal) ))))) ;) (if_statement "if (pTab != (Table *)0x0) {\n    return (Trigger *)0x0;\n  }" if (parenthesized_expression "(pTab != (Table *)0x0)" ( (binary_expression "pTab != (Table *)0x0" identifier != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (Trigger *)0x0;\n  }" { (return_statement "return (Trigger *)0x0;" return (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pSVar5 = (Schema *)(pParse_1->constraintName).z;" (assignment_expression "pSVar5 = (Schema *)(pParse_1->constraintName).z" identifier = (cast_expression "(Schema *)(pParse_1->constraintName).z" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pParse_1->constraintName).z" (parenthesized_expression "(pParse_1->constraintName)" ( (field_expression "pParse_1->constraintName" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if ((pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)) {\n    pTVar4 = (Trigger *)0x0;\n    do {\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    } while( true );\n  }" if (parenthesized_expression "((pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0))" ( (binary_expression "(pSVar3 != pSVar5) && (pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)" (parenthesized_expression "(pSVar3 != pSVar5)" ( (binary_expression "pSVar3 != pSVar5" identifier != identifier) )) && (parenthesized_expression "(pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0)" ( (comma_expression "pHVar6 = (pSVar3->trigHash).first, pHVar6 != (HashElem *)0x0" (assignment_expression "pHVar6 = (pSVar3->trigHash).first" identifier = (field_expression "(pSVar3->trigHash).first" (parenthesized_expression "(pSVar3->trigHash)" ( (field_expression "pSVar3->trigHash" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "pHVar6 != (HashElem *)0x0" identifier != (cast_expression "(HashElem *)0x0" ( (type_descriptor "HashElem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    pTVar4 = (Trigger *)0x0;\n    do {\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    } while( true );\n  }" { (expression_statement "pTVar4 = (Trigger *)0x0;" (assignment_expression "pTVar4 = (Trigger *)0x0" identifier = (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    } while( true );" do (compound_statement "{\n      pTVar10 = (Trigger *)pHVar6->data;\n      if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }\njoined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;\n      pSVar5 = (Schema *)(pParse_1->constraintName).z;\n    }" { (expression_statement "pTVar10 = (Trigger *)pHVar6->data;" (assignment_expression "pTVar10 = (Trigger *)pHVar6->data" identifier = (cast_expression "(Trigger *)pHVar6->data" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pHVar6->data" identifier -> field_identifier))) ;) (if_statement "if (pTVar10->pTabSchema == pSVar5) {\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }\n      else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }" if (parenthesized_expression "(pTVar10->pTabSchema == pSVar5)" ( (binary_expression "pTVar10->pTabSchema == pSVar5" (field_expression "pTVar10->pTabSchema" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        pbVar7 = (byte *)pTVar10->table;\n        psVar8 = pParse_1->db;\n        uVar9 = (uint)*pbVar7;\n        if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        pHVar6 = pHVar6->next;\n      }" { (expression_statement "pbVar7 = (byte *)pTVar10->table;" (assignment_expression "pbVar7 = (byte *)pTVar10->table" identifier = (cast_expression "(byte *)pTVar10->table" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pTVar10->table" identifier -> field_identifier))) ;) (expression_statement "psVar8 = pParse_1->db;" (assignment_expression "psVar8 = pParse_1->db" identifier = (field_expression "pParse_1->db" identifier -> field_identifier)) ;) (expression_statement "uVar9 = (uint)*pbVar7;" (assignment_expression "uVar9 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]) {\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }" if (parenthesized_expression "(puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28])" ( (binary_expression "puVar2[*(byte *)&psVar8->pVfs - 0x7a28] == puVar2[uVar9 - 0x7a28]" (subscript_expression "puVar2[*(byte *)&psVar8->pVfs - 0x7a28]" identifier [ (binary_expression "*(byte *)&psVar8->pVfs - 0x7a28" (pointer_expression "*(byte *)&psVar8->pVfs" * (cast_expression "(byte *)&psVar8->pVfs" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar8->pVfs" & (field_expression "psVar8->pVfs" identifier -> field_identifier)))) - number_literal) ]) == (subscript_expression "puVar2[uVar9 - 0x7a28]" identifier [ (binary_expression "uVar9 - 0x7a28" identifier - number_literal) ])) )) (compound_statement "{\n          do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);\n          goto LAB_0003a41c;\n        }" { (do_statement "do {\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          } while (puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]);" do (compound_statement "{\n            pbVar7 = pbVar7 + 1;\n            if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }\n            ppsVar1 = &psVar8->pVfs;\n            uVar9 = (uint)*pbVar7;\n            psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);\n          }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (if_statement "if (uVar9 == 0) {\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n              if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }\n              pHVar6 = pHVar6->next;\n              pTVar4 = pTVar10;\n              goto joined_r0x0003a4a8;\n            }" { (if_statement "if (pTVar4 == (Trigger *)0x0) {\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }\n              else {\n                pTVar10->pNext = pTVar4;\n              }" if (parenthesized_expression "(pTVar4 == (Trigger *)0x0)" ( (binary_expression "pTVar4 == (Trigger *)0x0" identifier == (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;\n              }" { (expression_statement "pTVar10->pNext = (Trigger *)pParse_1->pConstExpr;" (assignment_expression "pTVar10->pNext = (Trigger *)pParse_1->pConstExpr" (field_expression "pTVar10->pNext" identifier -> field_identifier) = (cast_expression "(Trigger *)pParse_1->pConstExpr" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse_1->pConstExpr" identifier -> field_identifier))) ;) }) (else_clause "else {\n                pTVar10->pNext = pTVar4;\n              }" else (compound_statement "{\n                pTVar10->pNext = pTVar4;\n              }" { (expression_statement "pTVar10->pNext = pTVar4;" (assignment_expression "pTVar10->pNext = pTVar4" (field_expression "pTVar10->pNext" identifier -> field_identifier) = identifier) ;) }))) (expression_statement "pHVar6 = pHVar6->next;" (assignment_expression "pHVar6 = pHVar6->next" identifier = (field_expression "pHVar6->next" identifier -> field_identifier)) ;) (expression_statement "pTVar4 = pTVar10;" (assignment_expression "pTVar4 = pTVar10" identifier = identifier) ;) (goto_statement "goto joined_r0x0003a4a8;" goto statement_identifier ;) })) (expression_statement "ppsVar1 = &psVar8->pVfs;" (assignment_expression "ppsVar1 = &psVar8->pVfs" identifier = (pointer_expression "&psVar8->pVfs" & (field_expression "psVar8->pVfs" identifier -> field_identifier))) ;) (expression_statement "uVar9 = (uint)*pbVar7;" (assignment_expression "uVar9 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1);" (assignment_expression "psVar8 = (sqlite3 *)((int)&psVar8->pVfs + 1)" identifier = (cast_expression "(sqlite3 *)((int)&psVar8->pVfs + 1)" ( (type_descriptor "sqlite3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&psVar8->pVfs + 1)" ( (binary_expression "(int)&psVar8->pVfs + 1" (cast_expression "(int)&psVar8->pVfs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&psVar8->pVfs" & (field_expression "psVar8->pVfs" identifier -> field_identifier))) + number_literal) )))) ;) }) while (parenthesized_expression "(puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28])" ( (binary_expression "puVar2[uVar9 - 0x7a28] == puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]" (subscript_expression "puVar2[uVar9 - 0x7a28]" identifier [ (binary_expression "uVar9 - 0x7a28" identifier - number_literal) ]) == (subscript_expression "puVar2[*(byte *)((int)ppsVar1 + 1) - 0x7a28]" identifier [ (binary_expression "*(byte *)((int)ppsVar1 + 1) - 0x7a28" (pointer_expression "*(byte *)((int)ppsVar1 + 1)" * (cast_expression "(byte *)((int)ppsVar1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppsVar1 + 1)" ( (binary_expression "(int)ppsVar1 + 1" (cast_expression "(int)ppsVar1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) - number_literal) ])) )) ;) (goto_statement "goto LAB_0003a41c;" goto statement_identifier ;) })) (expression_statement "pHVar6 = pHVar6->next;" (assignment_expression "pHVar6 = pHVar6->next" identifier = (field_expression "pHVar6->next" identifier -> field_identifier)) ;) }) (else_clause "else {\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }" else (compound_statement "{\nLAB_0003a41c:\n        pHVar6 = pHVar6->next;\n      }" { (labeled_statement "LAB_0003a41c:\n        pHVar6 = pHVar6->next;" statement_identifier : (expression_statement "pHVar6 = pHVar6->next;" (assignment_expression "pHVar6 = pHVar6->next" identifier = (field_expression "pHVar6->next" identifier -> field_identifier)) ;)) }))) (labeled_statement "joined_r0x0003a4a8:\n      if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;" statement_identifier : (if_statement "if (pHVar6 == (HashElem *)0x0) goto LAB_0003a4b0;" 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)) )) (goto_statement "goto LAB_0003a4b0;" goto statement_identifier ;))) (expression_statement "pSVar5 = (Schema *)(pParse_1->constraintName).z;" (assignment_expression "pSVar5 = (Schema *)(pParse_1->constraintName).z" identifier = (cast_expression "(Schema *)(pParse_1->constraintName).z" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pParse_1->constraintName).z" (parenthesized_expression "(pParse_1->constraintName)" ( (field_expression "pParse_1->constraintName" identifier -> field_identifier) )) . field_identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0003a4c0:\n  return (Trigger *)pParse_1->pConstExpr;" statement_identifier : (return_statement "return (Trigger *)pParse_1->pConstExpr;" return (cast_expression "(Trigger *)pParse_1->pConstExpr" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse_1->pConstExpr" identifier -> field_identifier)) ;)) (labeled_statement "LAB_0003a4b0:\n  if (pTVar4 != (Trigger *)0x0) {\n    return pTVar4;\n  }" statement_identifier : (if_statement "if (pTVar4 != (Trigger *)0x0) {\n    return pTVar4;\n  }" if (parenthesized_expression "(pTVar4 != (Trigger *)0x0)" ( (binary_expression "pTVar4 != (Trigger *)0x0" identifier != (cast_expression "(Trigger *)0x0" ( (type_descriptor "Trigger *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return pTVar4;\n  }" { (return_statement "return pTVar4;" return identifier ;) }))) (goto_statement "goto LAB_0003a4c0;" goto statement_identifier ;) })))
(translation_unit "int FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)\n\n{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}\n\n" (function_definition "int FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)\n\n{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}" primitive_type (function_declarator "FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(int param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}" { (declaration "byte *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "puVar2 = PTR_DAT_0015b694;" (assignment_expression "puVar2 = PTR_DAT_0015b694" identifier = identifier) ;) (expression_statement "iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);" (assignment_expression "iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0x1c)" * (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0x1c)" ( (binary_expression "*(int *)(param_1 + 0x10) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (param_2 != 0) {\n    return 0;\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = param_3[0x12];" (assignment_expression "iVar4 = param_3[0x12]" identifier = (subscript_expression "param_3[0x12]" identifier [ number_literal ])) ;) (if_statement "if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }" if (parenthesized_expression "((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0))" ( (binary_expression "(iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)" (parenthesized_expression "(iVar3 != iVar4)" ( (binary_expression "iVar3 != iVar4" identifier != identifier) )) && (parenthesized_expression "(piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)" ( (comma_expression "piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0" (assignment_expression "piVar5 = *(int **)(iVar3 + 0x30)" identifier = (pointer_expression "*(int **)(iVar3 + 0x30)" * (cast_expression "(int **)(iVar3 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x30)" ( (binary_expression "iVar3 + 0x30" identifier + number_literal) ))))) , (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );" do (compound_statement "{\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    }" { (expression_statement "iVar9 = piVar5[2];" (assignment_expression "iVar9 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" if (parenthesized_expression "(*(int *)(iVar9 + 0x18) == iVar4)" ( (binary_expression "*(int *)(iVar9 + 0x18) == iVar4" (pointer_expression "*(int *)(iVar9 + 0x18)" * (cast_expression "(int *)(iVar9 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x18)" ( (binary_expression "iVar9 + 0x18" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }" { (expression_statement "pbVar6 = *(byte **)(iVar9 + 4);" (assignment_expression "pbVar6 = *(byte **)(iVar9 + 4)" identifier = (pointer_expression "*(byte **)(iVar9 + 4)" * (cast_expression "(byte **)(iVar9 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + 4)" ( (binary_expression "iVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "pbVar7 = (byte *)*param_3;" (assignment_expression "pbVar7 = (byte *)*param_3" identifier = (cast_expression "(byte *)*param_3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "uVar8 = (uint)*pbVar6;" (assignment_expression "uVar8 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }" if (parenthesized_expression "(puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28])" ( (binary_expression "puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]" (subscript_expression "puVar2[*pbVar7 - 0x7a28]" identifier [ (binary_expression "*pbVar7 - 0x7a28" (pointer_expression "*pbVar7" * identifier) - number_literal) ]) == (subscript_expression "puVar2[uVar8 - 0x7a28]" identifier [ (binary_expression "uVar8 - 0x7a28" identifier - number_literal) ])) )) (compound_statement "{\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }" { (do_statement "do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);" do (compound_statement "{\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          }" { (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }" { (if_statement "if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }" { (expression_statement "*(undefined4 *)(iVar9 + 0x20) = param_3[0x11];" (assignment_expression "*(undefined4 *)(iVar9 + 0x20) = param_3[0x11]" (pointer_expression "*(undefined4 *)(iVar9 + 0x20)" * (cast_expression "(undefined4 *)(iVar9 + 0x20)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) = (subscript_expression "param_3[0x11]" identifier [ number_literal ])) ;) }) (else_clause "else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" else (compound_statement "{\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" { (expression_statement "*(int *)(iVar9 + 0x20) = iVar3;" (assignment_expression "*(int *)(iVar9 + 0x20) = iVar3" (pointer_expression "*(int *)(iVar9 + 0x20)" * (cast_expression "(int *)(iVar9 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x20)" ( (binary_expression "iVar9 + 0x20" identifier + number_literal) )))) = identifier) ;) }))) (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" identifier = identifier) ;) (goto_statement "goto joined_r0x0003a4a8;" goto statement_identifier ;) })) (expression_statement "pbVar1 = pbVar7 + 1;" (assignment_expression "pbVar1 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)*pbVar6;" (assignment_expression "uVar8 = (uint)*pbVar6" identifier = (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28])" ( (binary_expression "puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]" (subscript_expression "puVar2[uVar8 - 0x7a28]" identifier [ (binary_expression "uVar8 - 0x7a28" identifier - number_literal) ]) == (subscript_expression "puVar2[*pbVar1 - 0x7a28]" identifier [ (binary_expression "*pbVar1 - 0x7a28" (pointer_expression "*pbVar1" * identifier) - number_literal) ])) )) ;) (goto_statement "goto LAB_0003a41c;" goto statement_identifier ;) })) (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;) }) (else_clause "else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" else (compound_statement "{\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" { (labeled_statement "LAB_0003a41c:\n        piVar5 = (int *)*piVar5;" statement_identifier : (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" identifier = (cast_expression "(int *)*piVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier))) ;)) }))) (labeled_statement "joined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;" statement_identifier : (if_statement "if (piVar5 == (int *)0x0) goto LAB_0003a4b0;" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0003a4b0;" goto statement_identifier ;))) (expression_statement "iVar4 = param_3[0x12];" (assignment_expression "iVar4 = param_3[0x12]" identifier = (subscript_expression "param_3[0x12]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (labeled_statement "LAB_0003a4c0:\n  return param_3[0x11];" statement_identifier : (return_statement "return param_3[0x11];" return (subscript_expression "param_3[0x11]" identifier [ number_literal ]) ;)) (labeled_statement "LAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }" statement_identifier : (if_statement "if (iVar3 != 0) {\n    return iVar3;\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    return iVar3;\n  }" { (return_statement "return iVar3;" return identifier ;) }))) (goto_statement "goto LAB_0003a4c0;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (pointer_expression * IDENT) - LIT) ]) == (subscript_expression IDENT [ (binary_expression IDENT - LIT) ])) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == (subscript_expression IDENT [ (binary_expression (pointer_expression * IDENT) - LIT) ])) )) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (labeled_statement statement_identifier : (return_statement return (subscript_expression IDENT [ LIT ]) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) }))) (goto_statement goto statement_identifier ;) })))
(function_definition "int FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)\n\n{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}" (primitive_type "int") (function_declarator "FUN_0003a3dc(int param_1,int param_2,undefined4 *param_3)" (identifier "FUN_0003a3dc") (parameter_list "(int param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte *pbVar1;\n  undefined *puVar2;\n  int iVar3;\n  int iVar4;\n  int *piVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  uint uVar8;\n  int iVar9;\n  \n  puVar2 = PTR_DAT_0015b694;\n  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);\n  if (param_2 != 0) {\n    return 0;\n  }\n  iVar4 = param_3[0x12];\n  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }\nLAB_0003a4c0:\n  return param_3[0x11];\nLAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }\n  goto LAB_0003a4c0;\n}" ({ "{") (declaration "byte *pbVar1;" (type_identifier "byte") (pointer_declarator "*pbVar1" (* "*") (identifier "pbVar1")) (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (expression_statement "puVar2 = PTR_DAT_0015b694;" (assignment_expression "puVar2 = PTR_DAT_0015b694" (identifier "puVar2") (= "=") (identifier "PTR_DAT_0015b694")) (; ";")) (expression_statement "iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);" (assignment_expression "iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x10) + 0x1c)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x10) + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x10) + 0x1c)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) + 0x1c" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (param_2 != 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = param_3[0x12];" (assignment_expression "iVar4 = param_3[0x12]" (identifier "iVar4") (= "=") (subscript_expression "param_3[0x12]" (identifier "param_3") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (if_statement "if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }" (if "if") (parenthesized_expression "((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0))" (( "(") (binary_expression "(iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)" (parenthesized_expression "(iVar3 != iVar4)" (( "(") (binary_expression "iVar3 != iVar4" (identifier "iVar3") (!= "!=") (identifier "iVar4")) () ")")) (&& "&&") (parenthesized_expression "(piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)" (( "(") (comma_expression "piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0" (assignment_expression "piVar5 = *(int **)(iVar3 + 0x30)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(iVar3 + 0x30)" (* "*") (cast_expression "(int **)(iVar3 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x30)" (( "(") (binary_expression "iVar3 + 0x30" (identifier "iVar3") (+ "+") (number_literal "0x30")) () ")"))))) (, ",") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    iVar3 = 0;\n    do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );\n  }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    } while( true );" (do "do") (compound_statement "{\n      iVar9 = piVar5[2];\n      if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }\njoined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;\n      iVar4 = param_3[0x12];\n    }" ({ "{") (expression_statement "iVar9 = piVar5[2];" (assignment_expression "iVar9 = piVar5[2]" (identifier "iVar9") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar9 + 0x18) == iVar4) {\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }\n      else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar9 + 0x18) == iVar4)" (( "(") (binary_expression "*(int *)(iVar9 + 0x18) == iVar4" (pointer_expression "*(int *)(iVar9 + 0x18)" (* "*") (cast_expression "(int *)(iVar9 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x18)" (( "(") (binary_expression "iVar9 + 0x18" (identifier "iVar9") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "iVar4")) () ")")) (compound_statement "{\n        pbVar6 = *(byte **)(iVar9 + 4);\n        pbVar7 = (byte *)*param_3;\n        uVar8 = (uint)*pbVar6;\n        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }\n        piVar5 = (int *)*piVar5;\n      }" ({ "{") (expression_statement "pbVar6 = *(byte **)(iVar9 + 4);" (assignment_expression "pbVar6 = *(byte **)(iVar9 + 4)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(iVar9 + 4)" (* "*") (cast_expression "(byte **)(iVar9 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + 4)" (( "(") (binary_expression "iVar9 + 4" (identifier "iVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pbVar7 = (byte *)*param_3;" (assignment_expression "pbVar7 = (byte *)*param_3" (identifier "pbVar7") (= "=") (cast_expression "(byte *)*param_3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "uVar8 = (uint)*pbVar6;" (assignment_expression "uVar8 = (uint)*pbVar6" (identifier "uVar8") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (if_statement "if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }" (if "if") (parenthesized_expression "(puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28])" (( "(") (binary_expression "puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]" (subscript_expression "puVar2[*pbVar7 - 0x7a28]" (identifier "puVar2") ([ "[") (binary_expression "*pbVar7 - 0x7a28" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (- "-") (number_literal "0x7a28")) (] "]")) (== "==") (subscript_expression "puVar2[uVar8 - 0x7a28]" (identifier "puVar2") ([ "[") (binary_expression "uVar8 - 0x7a28" (identifier "uVar8") (- "-") (number_literal "0x7a28")) (] "]"))) () ")")) (compound_statement "{\n          do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);\n          goto LAB_0003a41c;\n        }" ({ "{") (do_statement "do {\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);" (do "do") (compound_statement "{\n            pbVar6 = pbVar6 + 1;\n            if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }\n            pbVar1 = pbVar7 + 1;\n            uVar8 = (uint)*pbVar6;\n            pbVar7 = pbVar7 + 1;\n          }" ({ "{") (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar8 == 0) {\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }\n              piVar5 = (int *)*piVar5;\n              iVar3 = iVar9;\n              goto joined_r0x0003a4a8;\n            }" ({ "{") (if_statement "if (iVar3 == 0) {\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }\n              else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];\n              }" ({ "{") (expression_statement "*(undefined4 *)(iVar9 + 0x20) = param_3[0x11];" (assignment_expression "*(undefined4 *)(iVar9 + 0x20) = param_3[0x11]" (pointer_expression "*(undefined4 *)(iVar9 + 0x20)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0x20)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x20)" (( "(") (binary_expression "iVar9 + 0x20" (identifier "iVar9") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" (else "else") (compound_statement "{\n                *(int *)(iVar9 + 0x20) = iVar3;\n              }" ({ "{") (expression_statement "*(int *)(iVar9 + 0x20) = iVar3;" (assignment_expression "*(int *)(iVar9 + 0x20) = iVar3" (pointer_expression "*(int *)(iVar9 + 0x20)" (* "*") (cast_expression "(int *)(iVar9 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x20)" (( "(") (binary_expression "iVar9 + 0x20" (identifier "iVar9") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (} "}")))) (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" (identifier "piVar5") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (expression_statement "iVar3 = iVar9;" (assignment_expression "iVar3 = iVar9" (identifier "iVar3") (= "=") (identifier "iVar9")) (; ";")) (goto_statement "goto joined_r0x0003a4a8;" (goto "goto") (statement_identifier "joined_r0x0003a4a8") (; ";")) (} "}"))) (expression_statement "pbVar1 = pbVar7 + 1;" (assignment_expression "pbVar1 = pbVar7 + 1" (identifier "pbVar1") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = (uint)*pbVar6;" (assignment_expression "uVar8 = (uint)*pbVar6" (identifier "uVar8") (= "=") (binary_expression "(uint)*pbVar6" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28])" (( "(") (binary_expression "puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]" (subscript_expression "puVar2[uVar8 - 0x7a28]" (identifier "puVar2") ([ "[") (binary_expression "uVar8 - 0x7a28" (identifier "uVar8") (- "-") (number_literal "0x7a28")) (] "]")) (== "==") (subscript_expression "puVar2[*pbVar1 - 0x7a28]" (identifier "puVar2") ([ "[") (binary_expression "*pbVar1 - 0x7a28" (pointer_expression "*pbVar1" (* "*") (identifier "pbVar1")) (- "-") (number_literal "0x7a28")) (] "]"))) () ")")) (; ";")) (goto_statement "goto LAB_0003a41c;" (goto "goto") (statement_identifier "LAB_0003a41c") (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" (identifier "piVar5") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";")) (} "}")) (else_clause "else {\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" (else "else") (compound_statement "{\nLAB_0003a41c:\n        piVar5 = (int *)*piVar5;\n      }" ({ "{") (labeled_statement "LAB_0003a41c:\n        piVar5 = (int *)*piVar5;" (statement_identifier "LAB_0003a41c") (: ":") (expression_statement "piVar5 = (int *)*piVar5;" (assignment_expression "piVar5 = (int *)*piVar5" (identifier "piVar5") (= "=") (cast_expression "(int *)*piVar5" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")))) (; ";"))) (} "}")))) (labeled_statement "joined_r0x0003a4a8:\n      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;" (statement_identifier "joined_r0x0003a4a8") (: ":") (if_statement "if (piVar5 == (int *)0x0) goto LAB_0003a4b0;" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0003a4b0;" (goto "goto") (statement_identifier "LAB_0003a4b0") (; ";")))) (expression_statement "iVar4 = param_3[0x12];" (assignment_expression "iVar4 = param_3[0x12]" (identifier "iVar4") (= "=") (subscript_expression "param_3[0x12]" (identifier "param_3") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_0003a4c0:\n  return param_3[0x11];" (statement_identifier "LAB_0003a4c0") (: ":") (return_statement "return param_3[0x11];" (return "return") (subscript_expression "param_3[0x11]" (identifier "param_3") ([ "[") (number_literal "0x11") (] "]")) (; ";"))) (labeled_statement "LAB_0003a4b0:\n  if (iVar3 != 0) {\n    return iVar3;\n  }" (statement_identifier "LAB_0003a4b0") (: ":") (if_statement "if (iVar3 != 0) {\n    return iVar3;\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return iVar3;\n  }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))) (goto_statement "goto LAB_0003a4c0;" (goto "goto") (statement_identifier "LAB_0003a4c0") (; ";")) (} "}")))

/* DWARF original prototype: Trigger * sqlite3TriggerList(Parse * pParse, Table * pTab, Parse *
   pParse) */

type_1 * function_1(type_2 *pParse,type_3 *var_1,type_2 *pParse_1)

{
  type_4 **ppsVar1;
  type_5 *puVar2;
  type_6 *var_2;
  type_1 *var_7;
  type_6 *var_3;
  type_7 *var_4;
  type_8 *var_5;
  type_9 *psVar8;
  type_10 var_6;
  type_1 *pTVar10;
  
  puVar2 = PTR_DAT_0015b694;
  var_2 = *(type_6 **)(*(int *)&pParse->colNamesSet + 0x1c);
  if (var_1 != (type_3 *)0x0) {
    return (type_1 *)0x0;
  }
  var_3 = (type_6 *)(pParse_1->constraintName).z;
  if ((var_2 != var_3) && (var_4 = (var_2->trigHash).first, var_4 != (type_7 *)0x0)) {
    var_7 = (type_1 *)0x0;
    do {
      pTVar10 = (type_1 *)var_4->data;
      if (pTVar10->pTabSchema == var_3) {
        var_5 = (type_8 *)pTVar10->table;
        psVar8 = pParse_1->db;
        var_6 = (type_10)*var_5;
        if (puVar2[*(type_8 *)&psVar8->pVfs - 0x7a28] == puVar2[var_6 - 0x7a28]) {
          do {
            var_5 = var_5 + 1;
            if (var_6 == 0) {
              if (var_7 == (type_1 *)0x0) {
                pTVar10->pNext = (type_1 *)pParse_1->pConstExpr;
              }
              else {
                pTVar10->pNext = var_7;
              }
              var_4 = var_4->next;
              var_7 = pTVar10;
              goto joined_r0x0003a4a8;
            }
            ppsVar1 = &psVar8->pVfs;
            var_6 = (type_10)*var_5;
            psVar8 = (type_9 *)((int)&psVar8->pVfs + 1);
          } while (puVar2[var_6 - 0x7a28] == puVar2[*(type_8 *)((int)ppsVar1 + 1) - 0x7a28]);
          goto LAB_0003a41c;
        }
        var_4 = var_4->next;
      }
      else {
LAB_0003a41c:
        var_4 = var_4->next;
      }
joined_r0x0003a4a8:
      if (var_4 == (type_7 *)0x0) goto LAB_0003a4b0;
      var_3 = (type_6 *)(pParse_1->constraintName).z;
    } while( true );
  }
LAB_0003a4c0:
  return (type_1 *)pParse_1->pConstExpr;
LAB_0003a4b0:
  if (var_7 != (type_1 *)0x0) {
    return var_7;
  }
  goto LAB_0003a4c0;
}


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

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

{
  byte *pbVar1;
  undefined *puVar2;
  int iVar3;
  int iVar4;
  int *piVar5;
  byte *pbVar6;
  byte *pbVar7;
  uint uVar8;
  int iVar9;
  
  puVar2 = PTR_DAT_0015b694;
  iVar3 = *(int *)(*(int *)(param_1 + 0x10) + 0x1c);
  if (param_2 != 0) {
    return 0;
  }
  iVar4 = param_3[0x12];
  if ((iVar3 != iVar4) && (piVar5 = *(int **)(iVar3 + 0x30), piVar5 != (int *)0x0)) {
    iVar3 = 0;
    do {
      iVar9 = piVar5[2];
      if (*(int *)(iVar9 + 0x18) == iVar4) {
        pbVar6 = *(byte **)(iVar9 + 4);
        pbVar7 = (byte *)*param_3;
        uVar8 = (uint)*pbVar6;
        if (puVar2[*pbVar7 - 0x7a28] == puVar2[uVar8 - 0x7a28]) {
          do {
            pbVar6 = pbVar6 + 1;
            if (uVar8 == 0) {
              if (iVar3 == 0) {
                *(undefined4 *)(iVar9 + 0x20) = param_3[0x11];
              }
              else {
                *(int *)(iVar9 + 0x20) = iVar3;
              }
              piVar5 = (int *)*piVar5;
              iVar3 = iVar9;
              goto joined_r0x0003a4a8;
            }
            pbVar1 = pbVar7 + 1;
            uVar8 = (uint)*pbVar6;
            pbVar7 = pbVar7 + 1;
          } while (puVar2[uVar8 - 0x7a28] == puVar2[*pbVar1 - 0x7a28]);
          goto LAB_0003a41c;
        }
        piVar5 = (int *)*piVar5;
      }
      else {
LAB_0003a41c:
        piVar5 = (int *)*piVar5;
      }
joined_r0x0003a4a8:
      if (piVar5 == (int *)0x0) goto LAB_0003a4b0;
      iVar4 = param_3[0x12];
    } while( true );
  }
LAB_0003a4c0:
  return param_3[0x11];
LAB_0003a4b0:
  if (iVar3 != 0) {
    return iVar3;
  }
  goto LAB_0003a4c0;
}

