
debug_type_conflict debug_find_tagged_type(void *handle,char *name,debug_type_kind kind)

{
  int iVar1;
  debug_handle *info;
  int *piVar2;
  uint *puVar3;
  debug_type_conflict pdVar4;
  
                    /* WARNING: Load size is inaccurate */
  pdVar4 = *handle;
  if (pdVar4 != (debug_type_conflict)0x0) {
    do {
      puVar3 = (uint *)pdVar4->size;
      if (puVar3 == (uint *)0x0) {
        pdVar4 = (debug_type_conflict)pdVar4->kind;
      }
      else {
        do {
          if ((int *)puVar3[2] == (int *)0x0) {
LAB_00022b30:
            puVar3 = (uint *)*puVar3;
          }
          else {
            piVar2 = *(int **)puVar3[2];
            if (piVar2 != (int *)0x0) {
              do {
                if (((piVar2[3] == 1) &&
                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&
                     (*(char *)piVar2[1] == *name)))) &&
                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {
                  return (debug_type_conflict)piVar2[6];
                }
                piVar2 = (int *)*piVar2;
              } while (piVar2 != (int *)0x0);
              goto LAB_00022b30;
            }
            puVar3 = (uint *)*puVar3;
          }
        } while (puVar3 != (uint *)0x0);
        pdVar4 = (debug_type_conflict)pdVar4->kind;
      }
    } while (pdVar4 != (debug_type_conflict)0x0);
    pdVar4 = (debug_type_conflict)0x0;
  }
  return pdVar4;
}



undefined4 * debug_find_tagged_type(int *param_1,char *param_2,int param_3)

{
  int iVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)*param_1;
  if (puVar4 != (undefined4 *)0x0) {
    do {
      puVar3 = (undefined4 *)puVar4[1];
      if (puVar3 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)*puVar4;
      }
      else {
        do {
          if ((int *)puVar3[2] == (int *)0x0) {
LAB_00022b30:
            puVar3 = (undefined4 *)*puVar3;
          }
          else {
            piVar2 = *(int **)puVar3[2];
            if (piVar2 != (int *)0x0) {
              do {
                if (((piVar2[3] == 1) &&
                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&
                     (*(char *)piVar2[1] == *param_2)))) &&
                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))
                {
                  return (undefined4 *)piVar2[6];
                }
                piVar2 = (int *)*piVar2;
              } while (piVar2 != (int *)0x0);
              goto LAB_00022b30;
            }
            puVar3 = (undefined4 *)*puVar3;
          }
        } while (puVar3 != (undefined4 *)0x0);
        puVar4 = (undefined4 *)*puVar4;
      }
    } while (puVar4 != (undefined4 *)0x0);
    puVar4 = (undefined4 *)0x0;
  }
  return puVar4;
}


lui gp,0x3
addiu gp,gp,0x2d98
addu gp,gp,t9
addiu sp,sp,-0x38
sw s4,0x2c(sp)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
lw s4,0x0(a0)
beq s4,zero,0x00022bb4
_li s1,0x1
or s3,a2,zero
or s5,a1,zero
lw s2,0x4(s4)
bne s2,zero,0x00022b3c
_nop
b 0x00022be0
_lw s4,0x0(s4)
lw s2,0x0(s2)
beq s2,zero,0x00022bdc
_nop
lw v0,0x8(s2)
beq v0,zero,0x00022b30
_nop
lw s0,0x0(v0)
bne s0,zero,0x00022b68
_nop
b 0x00022b34
_lw s2,0x0(s2)
lw s0,0x0(s0)
beq s0,zero,0x00022b30
_nop
lw v0,0xc(s0)
bne v0,s1,0x00022b5c
_nop
beq s3,zero,0x00022b8c
_nop
lw v0,0x18(s0)
lw v0,0x0(v0)
bne v0,s3,0x00022b5c
_nop
lw a0,0x4(s0)
lb v0,0x0(s5)
lb v1,0x0(a0)
bne v1,v0,0x00022b5c
_lw t9,-0x7bcc(gp)
jalr t9
_or a1,s5,zero
bne v0,zero,0x00022b5c
_lw gp,0x10(sp)
lw s4,0x18(s0)
lw ra,0x34(sp)
or v0,s4,zero
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x38
lw s4,0x0(s4)
bne s4,zero,0x00022b1c
_lw ra,0x34(sp)
b 0x00022bbc
_or v0,s4,zero
(translation_unit "undefined4 * debug_find_tagged_type(int *param_1,char *param_2,int param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}\n\n" (function_definition "undefined4 * debug_find_tagged_type(int *param_1,char *param_2,int param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}" type_identifier (pointer_declarator "* debug_find_tagged_type(int *param_1,char *param_2,int param_3)" * (function_declarator "debug_find_tagged_type(int *param_1,char *param_2,int param_3)" identifier (parameter_list "(int *param_1,char *param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }" { (do_statement "do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);" do (compound_statement "{\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    }" { (expression_statement "puVar3 = (undefined4 *)puVar4[1];" (assignment_expression "puVar3 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" if (parenthesized_expression "(puVar3 == (undefined4 *)0x0)" ( (binary_expression "puVar3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar4 = (undefined4 *)*puVar4;\n      }" { (expression_statement "puVar4 = (undefined4 *)*puVar4;" (assignment_expression "puVar4 = (undefined4 *)*puVar4" identifier = (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) }) (else_clause "else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" else (compound_statement "{\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" { (do_statement "do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);" do (compound_statement "{\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        }" { (if_statement "if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" if (parenthesized_expression "((int *)puVar3[2] == (int *)0x0)" ( (binary_expression "(int *)puVar3[2] == (int *)0x0" (cast_expression "(int *)puVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }" { (labeled_statement "LAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;" statement_identifier : (expression_statement "puVar3 = (undefined4 *)*puVar3;" (assignment_expression "puVar3 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;)) }) (else_clause "else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" else (compound_statement "{\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" { (expression_statement "piVar2 = *(int **)puVar3[2];" (assignment_expression "piVar2 = *(int **)puVar3[2]" identifier = (pointer_expression "*(int **)puVar3[2]" * (cast_expression "(int **)puVar3[2]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" { (do_statement "do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);" do (compound_statement "{\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              }" { (if_statement "if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }" if (parenthesized_expression "(((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))" ( (binary_expression "((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0)" (parenthesized_expression "((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2))))" ( (binary_expression "(piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))" (parenthesized_expression "(piVar2[3] == 1)" ( (binary_expression "piVar2[3] == 1" (subscript_expression "piVar2[3]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))" ( (parenthesized_expression "((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2))" ( (binary_expression "(param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)" (parenthesized_expression "(param_3 == 0 || (*(int *)piVar2[6] == param_3))" ( (binary_expression "param_3 == 0 || (*(int *)piVar2[6] == param_3)" (binary_expression "param_3 == 0" identifier == number_literal) || (parenthesized_expression "(*(int *)piVar2[6] == param_3)" ( (binary_expression "*(int *)piVar2[6] == param_3" (pointer_expression "*(int *)piVar2[6]" * (cast_expression "(int *)piVar2[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[6]" identifier [ number_literal ]))) == identifier) ))) )) && (parenthesized_expression "(*(char *)piVar2[1] == *param_2)" ( (binary_expression "*(char *)piVar2[1] == *param_2" (pointer_expression "*(char *)piVar2[1]" * (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) == (pointer_expression "*param_2" * identifier)) ))) )) ))) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2)" identifier = (call_expression "(*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2)" (parenthesized_expression "(*(code *)PTR_strcmp_0004dca4)" ( (pointer_expression "*(code *)PTR_strcmp_0004dca4" * (cast_expression "(code *)PTR_strcmp_0004dca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((char *)piVar2[1],param_2)" ( (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                  return (undefined4 *)piVar2[6];\n                }" { (return_statement "return (undefined4 *)piVar2[6];" return (cast_expression "(undefined4 *)piVar2[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[6]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (goto_statement "goto LAB_00022b30;" goto statement_identifier ;) })) (expression_statement "puVar3 = (undefined4 *)*puVar3;" (assignment_expression "puVar3 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) }))) }) while (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" ( (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar4 = (undefined4 *)*puVar4;" (assignment_expression "puVar4 = (undefined4 *)*puVar4" identifier = (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) }))) }) while (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "debug_type_conflict debug_find_tagged_type(void *handle,char *name,debug_type_kind kind)\n\n{\n  int iVar1;\n  debug_handle *info;\n  int *piVar2;\n  uint *puVar3;\n  debug_type_conflict pdVar4;\n  \n                    /* WARNING: Load size is inaccurate */\n  pdVar4 = *handle;\n  if (pdVar4 != (debug_type_conflict)0x0) {\n    do {\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    } while (pdVar4 != (debug_type_conflict)0x0);\n    pdVar4 = (debug_type_conflict)0x0;\n  }\n  return pdVar4;\n}\n\n" (function_definition "debug_type_conflict debug_find_tagged_type(void *handle,char *name,debug_type_kind kind)\n\n{\n  int iVar1;\n  debug_handle *info;\n  int *piVar2;\n  uint *puVar3;\n  debug_type_conflict pdVar4;\n  \n                    /* WARNING: Load size is inaccurate */\n  pdVar4 = *handle;\n  if (pdVar4 != (debug_type_conflict)0x0) {\n    do {\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    } while (pdVar4 != (debug_type_conflict)0x0);\n    pdVar4 = (debug_type_conflict)0x0;\n  }\n  return pdVar4;\n}" type_identifier (function_declarator "debug_find_tagged_type(void *handle,char *name,debug_type_kind kind)" identifier (parameter_list "(void *handle,char *name,debug_type_kind kind)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "debug_type_kind kind" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  debug_handle *info;\n  int *piVar2;\n  uint *puVar3;\n  debug_type_conflict pdVar4;\n  \n                    /* WARNING: Load size is inaccurate */\n  pdVar4 = *handle;\n  if (pdVar4 != (debug_type_conflict)0x0) {\n    do {\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    } while (pdVar4 != (debug_type_conflict)0x0);\n    pdVar4 = (debug_type_conflict)0x0;\n  }\n  return pdVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "debug_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "debug_type_conflict pdVar4;" type_identifier identifier ;) comment (expression_statement "pdVar4 = *handle;" (assignment_expression "pdVar4 = *handle" identifier = (pointer_expression "*handle" * identifier)) ;) (if_statement "if (pdVar4 != (debug_type_conflict)0x0) {\n    do {\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    } while (pdVar4 != (debug_type_conflict)0x0);\n    pdVar4 = (debug_type_conflict)0x0;\n  }" if (parenthesized_expression "(pdVar4 != (debug_type_conflict)0x0)" ( (binary_expression "pdVar4 != (debug_type_conflict)0x0" identifier != (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n    do {\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    } while (pdVar4 != (debug_type_conflict)0x0);\n    pdVar4 = (debug_type_conflict)0x0;\n  }" { (do_statement "do {\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    } while (pdVar4 != (debug_type_conflict)0x0);" do (compound_statement "{\n      puVar3 = (uint *)pdVar4->size;\n      if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n    }" { (expression_statement "puVar3 = (uint *)pdVar4->size;" (assignment_expression "puVar3 = (uint *)pdVar4->size" identifier = (cast_expression "(uint *)pdVar4->size" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pdVar4->size" identifier -> field_identifier))) ;) (if_statement "if (puVar3 == (uint *)0x0) {\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }" if (parenthesized_expression "(puVar3 == (uint *)0x0)" ( (binary_expression "puVar3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }" { (expression_statement "pdVar4 = (debug_type_conflict)pdVar4->kind;" (assignment_expression "pdVar4 = (debug_type_conflict)pdVar4->kind" identifier = (cast_expression "(debug_type_conflict)pdVar4->kind" ( (type_descriptor "debug_type_conflict" type_identifier) ) (field_expression "pdVar4->kind" identifier -> field_identifier))) ;) }) (else_clause "else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }" else (compound_statement "{\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);\n        pdVar4 = (debug_type_conflict)pdVar4->kind;\n      }" { (do_statement "do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        } while (puVar3 != (uint *)0x0);" do (compound_statement "{\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }\n        }" { (if_statement "if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }" if (parenthesized_expression "((int *)puVar3[2] == (int *)0x0)" ( (binary_expression "(int *)puVar3[2] == (int *)0x0" (cast_expression "(int *)puVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00022b30:\n            puVar3 = (uint *)*puVar3;\n          }" { (labeled_statement "LAB_00022b30:\n            puVar3 = (uint *)*puVar3;" statement_identifier : (expression_statement "puVar3 = (uint *)*puVar3;" (assignment_expression "puVar3 = (uint *)*puVar3" identifier = (cast_expression "(uint *)*puVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;)) }) (else_clause "else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }" else (compound_statement "{\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (uint *)*puVar3;\n          }" { (expression_statement "piVar2 = *(int **)puVar3[2];" (assignment_expression "piVar2 = *(int **)puVar3[2]" identifier = (pointer_expression "*(int **)puVar3[2]" * (cast_expression "(int **)puVar3[2]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" { (do_statement "do {\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);" do (compound_statement "{\n                if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              }" { (if_statement "if (((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)) {\n                  return (debug_type_conflict)piVar2[6];\n                }" if (parenthesized_expression "(((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0))" ( (binary_expression "((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)" (parenthesized_expression "((piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name))))" ( (binary_expression "(piVar2[3] == 1) &&\n                    (((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))" (parenthesized_expression "(piVar2[3] == 1)" ( (binary_expression "piVar2[3] == 1" (subscript_expression "piVar2[3]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)))" ( (parenthesized_expression "((kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name))" ( (binary_expression "(kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)) &&\n                     (*(char *)piVar2[1] == *name)" (parenthesized_expression "(kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind))" ( (binary_expression "kind == DEBUG_KIND_ILLEGAL || (*(debug_type_kind *)piVar2[6] == kind)" (binary_expression "kind == DEBUG_KIND_ILLEGAL" identifier == identifier) || (parenthesized_expression "(*(debug_type_kind *)piVar2[6] == kind)" ( (binary_expression "*(debug_type_kind *)piVar2[6] == kind" (pointer_expression "*(debug_type_kind *)piVar2[6]" * (cast_expression "(debug_type_kind *)piVar2[6]" ( (type_descriptor "debug_type_kind *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[6]" identifier [ number_literal ]))) == identifier) ))) )) && (parenthesized_expression "(*(char *)piVar2[1] == *name)" ( (binary_expression "*(char *)piVar2[1] == *name" (pointer_expression "*(char *)piVar2[1]" * (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) == (pointer_expression "*name" * identifier)) ))) )) ))) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name)" identifier = (call_expression "(*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],name)" (parenthesized_expression "(*(code *)PTR_strcmp_0004dca4)" ( (pointer_expression "*(code *)PTR_strcmp_0004dca4" * (cast_expression "(code *)PTR_strcmp_0004dca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((char *)piVar2[1],name)" ( (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                  return (debug_type_conflict)piVar2[6];\n                }" { (return_statement "return (debug_type_conflict)piVar2[6];" return (cast_expression "(debug_type_conflict)piVar2[6]" ( (type_descriptor "debug_type_conflict" type_identifier) ) (subscript_expression "piVar2[6]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (goto_statement "goto LAB_00022b30;" goto statement_identifier ;) })) (expression_statement "puVar3 = (uint *)*puVar3;" (assignment_expression "puVar3 = (uint *)*puVar3" identifier = (cast_expression "(uint *)*puVar3" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) }))) }) while (parenthesized_expression "(puVar3 != (uint *)0x0)" ( (binary_expression "puVar3 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pdVar4 = (debug_type_conflict)pdVar4->kind;" (assignment_expression "pdVar4 = (debug_type_conflict)pdVar4->kind" identifier = (cast_expression "(debug_type_conflict)pdVar4->kind" ( (type_descriptor "debug_type_conflict" type_identifier) ) (field_expression "pdVar4->kind" identifier -> field_identifier))) ;) }))) }) while (parenthesized_expression "(pdVar4 != (debug_type_conflict)0x0)" ( (binary_expression "pdVar4 != (debug_type_conflict)0x0" identifier != (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) ;) (expression_statement "pdVar4 = (debug_type_conflict)0x0;" (assignment_expression "pdVar4 = (debug_type_conflict)0x0" identifier = (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) ;) })) (return_statement "return pdVar4;" return identifier ;) })))
(translation_unit "undefined4 * debug_find_tagged_type(int *param_1,char *param_2,int param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}\n\n" (function_definition "undefined4 * debug_find_tagged_type(int *param_1,char *param_2,int param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}" type_identifier (pointer_declarator "* debug_find_tagged_type(int *param_1,char *param_2,int param_3)" * (function_declarator "debug_find_tagged_type(int *param_1,char *param_2,int param_3)" identifier (parameter_list "(int *param_1,char *param_2,int param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) )))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" identifier = (cast_expression "(undefined4 *)*param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }" { (do_statement "do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);" do (compound_statement "{\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    }" { (expression_statement "puVar3 = (undefined4 *)puVar4[1];" (assignment_expression "puVar3 = (undefined4 *)puVar4[1]" identifier = (cast_expression "(undefined4 *)puVar4[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" if (parenthesized_expression "(puVar3 == (undefined4 *)0x0)" ( (binary_expression "puVar3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar4 = (undefined4 *)*puVar4;\n      }" { (expression_statement "puVar4 = (undefined4 *)*puVar4;" (assignment_expression "puVar4 = (undefined4 *)*puVar4" identifier = (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) }) (else_clause "else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" else (compound_statement "{\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" { (do_statement "do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);" do (compound_statement "{\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        }" { (if_statement "if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" if (parenthesized_expression "((int *)puVar3[2] == (int *)0x0)" ( (binary_expression "(int *)puVar3[2] == (int *)0x0" (cast_expression "(int *)puVar3[2]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }" { (labeled_statement "LAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;" statement_identifier : (expression_statement "puVar3 = (undefined4 *)*puVar3;" (assignment_expression "puVar3 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;)) }) (else_clause "else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" else (compound_statement "{\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" { (expression_statement "piVar2 = *(int **)puVar3[2];" (assignment_expression "piVar2 = *(int **)puVar3[2]" identifier = (pointer_expression "*(int **)puVar3[2]" * (cast_expression "(int **)puVar3[2]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar3[2]" identifier [ number_literal ])))) ;) (if_statement "if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" if (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" { (do_statement "do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);" do (compound_statement "{\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              }" { (if_statement "if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }" if (parenthesized_expression "(((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))" ( (binary_expression "((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0)" (parenthesized_expression "((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2))))" ( (binary_expression "(piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))" (parenthesized_expression "(piVar2[3] == 1)" ( (binary_expression "piVar2[3] == 1" (subscript_expression "piVar2[3]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))" ( (parenthesized_expression "((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2))" ( (binary_expression "(param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)" (parenthesized_expression "(param_3 == 0 || (*(int *)piVar2[6] == param_3))" ( (binary_expression "param_3 == 0 || (*(int *)piVar2[6] == param_3)" (binary_expression "param_3 == 0" identifier == number_literal) || (parenthesized_expression "(*(int *)piVar2[6] == param_3)" ( (binary_expression "*(int *)piVar2[6] == param_3" (pointer_expression "*(int *)piVar2[6]" * (cast_expression "(int *)piVar2[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[6]" identifier [ number_literal ]))) == identifier) ))) )) && (parenthesized_expression "(*(char *)piVar2[1] == *param_2)" ( (binary_expression "*(char *)piVar2[1] == *param_2" (pointer_expression "*(char *)piVar2[1]" * (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ]))) == (pointer_expression "*param_2" * identifier)) ))) )) ))) )) && (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0)" ( (comma_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2)" identifier = (call_expression "(*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2)" (parenthesized_expression "(*(code *)PTR_strcmp_0004dca4)" ( (pointer_expression "*(code *)PTR_strcmp_0004dca4" * (cast_expression "(code *)PTR_strcmp_0004dca4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((char *)piVar2[1],param_2)" ( (cast_expression "(char *)piVar2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                  return (undefined4 *)piVar2[6];\n                }" { (return_statement "return (undefined4 *)piVar2[6];" return (cast_expression "(undefined4 *)piVar2[6]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[6]" identifier [ number_literal ])) ;) })) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" identifier = (cast_expression "(int *)*piVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar2" * identifier))) ;) }) while (parenthesized_expression "(piVar2 != (int *)0x0)" ( (binary_expression "piVar2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (goto_statement "goto LAB_00022b30;" goto statement_identifier ;) })) (expression_statement "puVar3 = (undefined4 *)*puVar3;" (assignment_expression "puVar3 = (undefined4 *)*puVar3" identifier = (cast_expression "(undefined4 *)*puVar3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar3" * identifier))) ;) }))) }) while (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" ( (binary_expression "puVar3 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar4 = (undefined4 *)*puVar4;" (assignment_expression "puVar4 = (undefined4 *)*puVar4" identifier = (cast_expression "(undefined4 *)*puVar4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar4" * identifier))) ;) }))) }) while (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" ( (binary_expression "puVar4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) == IDENT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) == (pointer_expression * IDENT)) ))) )) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined4 * debug_find_tagged_type(int *param_1,char *param_2,int param_3)\n\n{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}" (type_identifier "undefined4") (pointer_declarator "* debug_find_tagged_type(int *param_1,char *param_2,int param_3)" (* "*") (function_declarator "debug_find_tagged_type(int *param_1,char *param_2,int param_3)" (identifier "debug_find_tagged_type") (parameter_list "(int *param_1,char *param_2,int param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")")))) (compound_statement "{\n  int iVar1;\n  int *piVar2;\n  undefined4 *puVar3;\n  undefined4 *puVar4;\n  \n  puVar4 = (undefined4 *)*param_1;\n  if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }\n  return puVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (expression_statement "puVar4 = (undefined4 *)*param_1;" (assignment_expression "puVar4 = (undefined4 *)*param_1" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)0x0) {\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);\n    puVar4 = (undefined4 *)0x0;\n  }" ({ "{") (do_statement "do {\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    } while (puVar4 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n      puVar3 = (undefined4 *)puVar4[1];\n      if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }\n    }" ({ "{") (expression_statement "puVar3 = (undefined4 *)puVar4[1];" (assignment_expression "puVar3 = (undefined4 *)puVar4[1]" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)puVar4[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (puVar3 == (undefined4 *)0x0) {\n        puVar4 = (undefined4 *)*puVar4;\n      }\n      else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" (if "if") (parenthesized_expression "(puVar3 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar3 == (undefined4 *)0x0" (identifier "puVar3") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar4 = (undefined4 *)*puVar4;\n      }" ({ "{") (expression_statement "puVar4 = (undefined4 *)*puVar4;" (assignment_expression "puVar4 = (undefined4 *)*puVar4" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*puVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")))) (; ";")) (} "}")) (else_clause "else {\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" (else "else") (compound_statement "{\n        do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);\n        puVar4 = (undefined4 *)*puVar4;\n      }" ({ "{") (do_statement "do {\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        } while (puVar3 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n          if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }\n        }" ({ "{") (if_statement "if ((int *)puVar3[2] == (int *)0x0) {\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }\n          else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" (if "if") (parenthesized_expression "((int *)puVar3[2] == (int *)0x0)" (( "(") (binary_expression "(int *)puVar3[2] == (int *)0x0" (cast_expression "(int *)puVar3[2]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]"))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;\n          }" ({ "{") (labeled_statement "LAB_00022b30:\n            puVar3 = (undefined4 *)*puVar3;" (statement_identifier "LAB_00022b30") (: ":") (expression_statement "puVar3 = (undefined4 *)*puVar3;" (assignment_expression "puVar3 = (undefined4 *)*puVar3" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)*puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";"))) (} "}")) (else_clause "else {\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" (else "else") (compound_statement "{\n            piVar2 = *(int **)puVar3[2];\n            if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }\n            puVar3 = (undefined4 *)*puVar3;\n          }" ({ "{") (expression_statement "piVar2 = *(int **)puVar3[2];" (assignment_expression "piVar2 = *(int **)puVar3[2]" (identifier "piVar2") (= "=") (pointer_expression "*(int **)puVar3[2]" (* "*") (cast_expression "(int **)puVar3[2]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (if_statement "if (piVar2 != (int *)0x0) {\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" (if "if") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);\n              goto LAB_00022b30;\n            }" ({ "{") (do_statement "do {\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              } while (piVar2 != (int *)0x0);" (do "do") (compound_statement "{\n                if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }\n                piVar2 = (int *)*piVar2;\n              }" ({ "{") (if_statement "if (((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))\n                {\n                  return (undefined4 *)piVar2[6];\n                }" (if "if") (parenthesized_expression "(((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))" (( "(") (binary_expression "((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))) &&\n                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0)" (parenthesized_expression "((piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2))))" (( "(") (binary_expression "(piVar2[3] == 1) &&\n                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))" (parenthesized_expression "(piVar2[3] == 1)" (( "(") (binary_expression "piVar2[3] == 1" (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)))" (( "(") (parenthesized_expression "((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2))" (( "(") (binary_expression "(param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&\n                     (*(char *)piVar2[1] == *param_2)" (parenthesized_expression "(param_3 == 0 || (*(int *)piVar2[6] == param_3))" (( "(") (binary_expression "param_3 == 0 || (*(int *)piVar2[6] == param_3)" (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(*(int *)piVar2[6] == param_3)" (( "(") (binary_expression "*(int *)piVar2[6] == param_3" (pointer_expression "*(int *)piVar2[6]" (* "*") (cast_expression "(int *)piVar2[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[6]" (identifier "piVar2") ([ "[") (number_literal "6") (] "]")))) (== "==") (identifier "param_3")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)piVar2[1] == *param_2)" (( "(") (binary_expression "*(char *)piVar2[1] == *param_2" (pointer_expression "*(char *)piVar2[1]" (* "*") (cast_expression "(char *)piVar2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]")))) (== "==") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0)" (( "(") (comma_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2)" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2)" (parenthesized_expression "(*(code *)PTR_strcmp_0004dca4)" (( "(") (pointer_expression "*(code *)PTR_strcmp_0004dca4" (* "*") (cast_expression "(code *)PTR_strcmp_0004dca4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcmp_0004dca4"))) () ")")) (argument_list "((char *)piVar2[1],param_2)" (( "(") (cast_expression "(char *)piVar2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                  return (undefined4 *)piVar2[6];\n                }" ({ "{") (return_statement "return (undefined4 *)piVar2[6];" (return "return") (cast_expression "(undefined4 *)piVar2[6]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[6]" (identifier "piVar2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}"))) (expression_statement "piVar2 = (int *)*piVar2;" (assignment_expression "piVar2 = (int *)*piVar2" (identifier "piVar2") (= "=") (cast_expression "(int *)*piVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 != (int *)0x0)" (( "(") (binary_expression "piVar2 != (int *)0x0" (identifier "piVar2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (goto_statement "goto LAB_00022b30;" (goto "goto") (statement_identifier "LAB_00022b30") (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined4 *)*puVar3;" (assignment_expression "puVar3 = (undefined4 *)*puVar3" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)*puVar3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(puVar3 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar3 != (undefined4 *)0x0" (identifier "puVar3") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar4 = (undefined4 *)*puVar4;" (assignment_expression "puVar4 = (undefined4 *)*puVar4" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)*puVar4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(puVar4 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar4 != (undefined4 *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar4 = (undefined4 *)0x0;" (assignment_expression "puVar4 = (undefined4 *)0x0" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))

type_1 function_1(void *handle,char *name,type_2 var_4)

{
  int var_6;
  type_3 *info;
  int *var_3;
  type_4 *var_2;
  type_1 var_1;
  
                    /* WARNING: Load size is inaccurate */
  var_1 = *handle;
  if (var_1 != (type_1)0x0) {
    do {
      var_2 = (type_4 *)var_1->size;
      if (var_2 == (type_4 *)0x0) {
        var_1 = (type_1)var_1->var_4;
      }
      else {
        do {
          if ((int *)var_2[2] == (int *)0x0) {
LAB_00022b30:
            var_2 = (type_4 *)*var_2;
          }
          else {
            var_3 = *(int **)var_2[2];
            if (var_3 != (int *)0x0) {
              do {
                if (((var_3[3] == 1) &&
                    (((var_4 == var_5 || (*(type_2 *)var_3[6] == var_4)) &&
                     (*(char *)var_3[1] == *name)))) &&
                   (var_6 = (*(type_5 *)PTR_strcmp_0004dca4)((char *)var_3[1],name), var_6 == 0)) {
                  return (type_1)var_3[6];
                }
                var_3 = (int *)*var_3;
              } while (var_3 != (int *)0x0);
              goto LAB_00022b30;
            }
            var_2 = (type_4 *)*var_2;
          }
        } while (var_2 != (type_4 *)0x0);
        var_1 = (type_1)var_1->var_4;
      }
    } while (var_1 != (type_1)0x0);
    var_1 = (type_1)0x0;
  }
  return var_1;
}


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

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

{
  int iVar1;
  int *piVar2;
  undefined4 *puVar3;
  undefined4 *puVar4;
  
  puVar4 = (undefined4 *)*param_1;
  if (puVar4 != (undefined4 *)0x0) {
    do {
      puVar3 = (undefined4 *)puVar4[1];
      if (puVar3 == (undefined4 *)0x0) {
        puVar4 = (undefined4 *)*puVar4;
      }
      else {
        do {
          if ((int *)puVar3[2] == (int *)0x0) {
LAB_00022b30:
            puVar3 = (undefined4 *)*puVar3;
          }
          else {
            piVar2 = *(int **)puVar3[2];
            if (piVar2 != (int *)0x0) {
              do {
                if (((piVar2[3] == 1) &&
                    (((param_3 == 0 || (*(int *)piVar2[6] == param_3)) &&
                     (*(char *)piVar2[1] == *param_2)))) &&
                   (iVar1 = (*(code *)PTR_strcmp_0004dca4)((char *)piVar2[1],param_2), iVar1 == 0))
                {
                  return (undefined4 *)piVar2[6];
                }
                piVar2 = (int *)*piVar2;
              } while (piVar2 != (int *)0x0);
              goto LAB_00022b30;
            }
            puVar3 = (undefined4 *)*puVar3;
          }
        } while (puVar3 != (undefined4 *)0x0);
        puVar4 = (undefined4 *)*puVar4;
      }
    } while (puVar4 != (undefined4 *)0x0);
    puVar4 = (undefined4 *)0x0;
  }
  return puVar4;
}

