
char * lookupvar(char *name)

{
  char cVar1;
  byte bVar2;
  int iVar3;
  var *pvVar4;
  byte *name_00;
  uint uVar5;
  var **ppvVar6;
  char *pcVar7;
  byte *pbVar8;
  char *unaff_EBX;
  uint uVar9;
  int unaff_EDI;
  
  name_00 = (byte *)__x86_get_pc_thunk_di();
  bVar2 = *name_00;
  uVar9 = (uint)bVar2;
  uVar5 = uVar9 << 4;
  if ((bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d)) {
    while( true ) {
      uVar5 = uVar5 + uVar9;
      bVar2 = pbVar8[1];
      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;
      uVar9 = (uint)bVar2;
      pbVar8 = pbVar8 + 1;
    }
  }
  iVar3 = *(int *)(unaff_EDI + 0x7cb46);
  ppvVar6 = findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00);
  pvVar4 = *ppvVar6;
  if (pvVar4 != (var *)0x0) {
    uVar5 = pvVar4->flags;
    if ((uVar5 & 0x200) != 0) {
      (*pvVar4->var_func)(unaff_EBX);
      uVar5 = pvVar4->flags;
    }
    if ((uVar5 & 0x20) == 0) {
      pcVar7 = pvVar4->var_text;
      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {
        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),
               *(undefined4 *)(iVar3 + 0x158));
        pcVar7 = pvVar4->var_text;
      }
      do {
        cVar1 = *pcVar7;
        if (cVar1 == '\0') {
          return pcVar7;
        }
        pcVar7 = pcVar7 + 1;
      } while (cVar1 != '=');
      return pcVar7;
    }
  }
  return (char *)0x0;
}



char * FUN_00054bbe(void)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  int *piVar5;
  uint uVar6;
  int unaff_EDI;
  
  pcVar4 = (char *)FUN_00026ff3();
  cVar1 = *pcVar4;
  while ((cVar1 != '\0' && (cVar1 != '='))) {
    pcVar4 = pcVar4 + 1;
    cVar1 = *pcVar4;
  }
  iVar2 = *(int *)(unaff_EDI + 0x7cb46);
  piVar5 = (int *)FUN_0005213a();
  iVar3 = *piVar5;
  if (iVar3 != 0) {
    uVar6 = *(uint *)(iVar3 + 4);
    if ((uVar6 & 0x200) != 0) {
      (**(code **)(iVar3 + 0xc))();
      uVar6 = *(uint *)(iVar3 + 4);
    }
    if ((uVar6 & 0x20) == 0) {
      pcVar4 = *(char **)(iVar3 + 8);
      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {
        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));
        pcVar4 = *(char **)(iVar3 + 8);
      }
      do {
        cVar1 = *pcVar4;
        if (cVar1 == '\0') {
          return pcVar4;
        }
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '=');
      return pcVar4;
    }
  }
  return (char *)0x0;
}


PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00026ff3
ADD EDI,0x7be5a
MOV EBX,EAX
MOVZX ESI,byte ptr [EAX]
MOV ECX,ESI
MOV EAX,ESI
SHL EAX,0x4
TEST CL,CL
JZ 0x00054bf6
CMP CL,0x3d
JZ 0x00054bf6
MOV EDX,EBX
INC EDX
ADD EAX,ESI
MOV CL,byte ptr [EDX]
TEST CL,CL
JZ 0x00054bf6
CMP CL,0x3d
JZ 0x00054bf6
MOVZX ESI,CL
JMP 0x00054be3
LEA EDX,[EDI + 0xcec]
MOV ESI,dword ptr [EDX]
MOV ECX,0x27
XOR EDX,EDX
DIV ECX
LEA EAX,[ESI + EDX*0x4 + 0x1c]
MOV EDX,EBX
CALL 0x0005213a
MOV EBX,dword ptr [EAX]
TEST EBX,EBX
JNZ 0x00054c1e
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
RET
MOV EAX,dword ptr [EBX + 0x4]
TEST AH,0x2
JZ 0x00054c2e
XOR EAX,EAX
CALL dword ptr [EBX + 0xc]
MOV EAX,dword ptr [EBX + 0x4]
TEST AL,0x20
JNZ 0x00054c18
MOV EAX,dword ptr [EBX + 0x8]
LEA EDX,[ESI + 0x138]
CMP EBX,EDX
JNZ 0x00054c6a
LEA EDX,[ESI + 0x15c]
CMP EAX,EDX
JNZ 0x00054c6a
PUSH dword ptr [ESI + 0x158]
LEA EAX,[EDI + 0xffff6189]
PUSH EAX
PUSH 0xd
ADD ESI,0x163
PUSH ESI
CALL 0x00054b6e
MOV EAX,dword ptr [EBX + 0x8]
ADD ESP,0x10
MOV DL,byte ptr [EAX]
TEST DL,DL
JZ 0x00054c1a
INC EAX
CMP DL,0x3d
JNZ 0x00054c6a
POP EBX
POP ESI
POP EDI
RET
(translation_unit "char * FUN_00054bbe(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}\n\n" (function_definition "char * FUN_00054bbe(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}" primitive_type (pointer_declarator "* FUN_00054bbe(void)" * (function_declarator "FUN_00054bbe(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "pcVar4 = (char *)FUN_00026ff3();" (assignment_expression "pcVar4 = (char *)FUN_00026ff3()" identifier = (cast_expression "(char *)FUN_00026ff3()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00026ff3()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (while_statement "while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }" while (parenthesized_expression "((cVar1 != '\0' && (cVar1 != '=')))" ( (parenthesized_expression "(cVar1 != '\0' && (cVar1 != '='))" ( (binary_expression "cVar1 != '\0' && (cVar1 != '=')" (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(cVar1 != '=')" ( (binary_expression "cVar1 != '='" identifier != (char_literal "'='" ' character ')) ))) )) )) (compound_statement "{\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }" { (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) })) (expression_statement "iVar2 = *(int *)(unaff_EDI + 0x7cb46);" (assignment_expression "iVar2 = *(int *)(unaff_EDI + 0x7cb46)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x7cb46)" * (cast_expression "(int *)(unaff_EDI + 0x7cb46)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7cb46)" ( (binary_expression "unaff_EDI + 0x7cb46" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = (int *)FUN_0005213a();" (assignment_expression "piVar5 = (int *)FUN_0005213a()" identifier = (cast_expression "(int *)FUN_0005213a()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005213a()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar3 = *piVar5;" (assignment_expression "iVar3 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }" { (expression_statement "uVar6 = *(uint *)(iVar3 + 4);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 4)" identifier = (pointer_expression "*(uint *)(iVar3 + 4)" * (cast_expression "(uint *)(iVar3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }" if (parenthesized_expression "((uVar6 & 0x200) != 0)" ( (binary_expression "(uVar6 & 0x200) != 0" (parenthesized_expression "(uVar6 & 0x200)" ( (binary_expression "uVar6 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }" { (expression_statement "(**(code **)(iVar3 + 0xc))();" (call_expression "(**(code **)(iVar3 + 0xc))()" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar6 = *(uint *)(iVar3 + 4);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 4)" identifier = (pointer_expression "*(uint *)(iVar3 + 4)" * (cast_expression "(uint *)(iVar3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }" if (parenthesized_expression "((uVar6 & 0x20) == 0)" ( (binary_expression "(uVar6 & 0x20) == 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }" { (expression_statement "pcVar4 = *(char **)(iVar3 + 8);" (assignment_expression "pcVar4 = *(char **)(iVar3 + 8)" identifier = (pointer_expression "*(char **)(iVar3 + 8)" * (cast_expression "(char **)(iVar3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }" if (parenthesized_expression "((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c)))" ( (binary_expression "(iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))" (parenthesized_expression "(iVar3 == iVar2 + 0x138)" ( (binary_expression "iVar3 == iVar2 + 0x138" identifier == (binary_expression "iVar2 + 0x138" identifier + number_literal)) )) && (parenthesized_expression "(pcVar4 == (char *)(iVar2 + 0x15c))" ( (binary_expression "pcVar4 == (char *)(iVar2 + 0x15c)" identifier == (cast_expression "(char *)(iVar2 + 0x15c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x15c)" ( (binary_expression "iVar2 + 0x15c" identifier + number_literal) )))) ))) )) (compound_statement "{\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }" { (expression_statement "FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));" (call_expression "FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158))" identifier (argument_list "(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158))" ( (binary_expression "iVar2 + 0x163" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x71fe3" identifier + number_literal) , (pointer_expression "*(undefined4 *)(iVar2 + 0x158)" * (cast_expression "(undefined4 *)(iVar2 + 0x158)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x158)" ( (binary_expression "iVar2 + 0x158" identifier + number_literal) )))) ))) ;) (expression_statement "pcVar4 = *(char **)(iVar3 + 8);" (assignment_expression "pcVar4 = *(char **)(iVar3 + 8)" identifier = (pointer_expression "*(char **)(iVar3 + 8)" * (cast_expression "(char **)(iVar3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) })) (do_statement "do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');" do (compound_statement "{\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      }" { (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (if_statement "if (cVar1 == '\0') {\n          return pcVar4;\n        }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return pcVar4;\n        }" { (return_statement "return pcVar4;" return identifier ;) })) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '=')" ( (binary_expression "cVar1 != '='" identifier != (char_literal "'='" ' character ')) )) ;) (return_statement "return pcVar4;" return identifier ;) })) })) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "char * lookupvar(char *name)\n\n{\n  char cVar1;\n  byte bVar2;\n  int iVar3;\n  var *pvVar4;\n  byte *name_00;\n  uint uVar5;\n  var **ppvVar6;\n  char *pcVar7;\n  byte *pbVar8;\n  char *unaff_EBX;\n  uint uVar9;\n  int unaff_EDI;\n  \n  name_00 = (byte *)__x86_get_pc_thunk_di();\n  bVar2 = *name_00;\n  uVar9 = (uint)bVar2;\n  uVar5 = uVar9 << 4;\n  if ((bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d)) {\n    while( true ) {\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }\n  }\n  iVar3 = *(int *)(unaff_EDI + 0x7cb46);\n  ppvVar6 = findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00);\n  pvVar4 = *ppvVar6;\n  if (pvVar4 != (var *)0x0) {\n    uVar5 = pvVar4->flags;\n    if ((uVar5 & 0x200) != 0) {\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }\n    if ((uVar5 & 0x20) == 0) {\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }\n  }\n  return (char *)0x0;\n}\n\n" (function_definition "char * lookupvar(char *name)\n\n{\n  char cVar1;\n  byte bVar2;\n  int iVar3;\n  var *pvVar4;\n  byte *name_00;\n  uint uVar5;\n  var **ppvVar6;\n  char *pcVar7;\n  byte *pbVar8;\n  char *unaff_EBX;\n  uint uVar9;\n  int unaff_EDI;\n  \n  name_00 = (byte *)__x86_get_pc_thunk_di();\n  bVar2 = *name_00;\n  uVar9 = (uint)bVar2;\n  uVar5 = uVar9 << 4;\n  if ((bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d)) {\n    while( true ) {\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }\n  }\n  iVar3 = *(int *)(unaff_EDI + 0x7cb46);\n  ppvVar6 = findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00);\n  pvVar4 = *ppvVar6;\n  if (pvVar4 != (var *)0x0) {\n    uVar5 = pvVar4->flags;\n    if ((uVar5 & 0x200) != 0) {\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }\n    if ((uVar5 & 0x20) == 0) {\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }\n  }\n  return (char *)0x0;\n}" primitive_type (pointer_declarator "* lookupvar(char *name)" * (function_declarator "lookupvar(char *name)" identifier (parameter_list "(char *name)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  int iVar3;\n  var *pvVar4;\n  byte *name_00;\n  uint uVar5;\n  var **ppvVar6;\n  char *pcVar7;\n  byte *pbVar8;\n  char *unaff_EBX;\n  uint uVar9;\n  int unaff_EDI;\n  \n  name_00 = (byte *)__x86_get_pc_thunk_di();\n  bVar2 = *name_00;\n  uVar9 = (uint)bVar2;\n  uVar5 = uVar9 << 4;\n  if ((bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d)) {\n    while( true ) {\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }\n  }\n  iVar3 = *(int *)(unaff_EDI + 0x7cb46);\n  ppvVar6 = findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00);\n  pvVar4 = *ppvVar6;\n  if (pvVar4 != (var *)0x0) {\n    uVar5 = pvVar4->flags;\n    if ((uVar5 & 0x200) != 0) {\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }\n    if ((uVar5 & 0x20) == 0) {\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }\n  }\n  return (char *)0x0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "var *pvVar4;" type_identifier (pointer_declarator "*pvVar4" * identifier) ;) (declaration "byte *name_00;" type_identifier (pointer_declarator "*name_00" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "var **ppvVar6;" type_identifier (pointer_declarator "**ppvVar6" * (pointer_declarator "*ppvVar6" * identifier)) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "char *unaff_EBX;" primitive_type (pointer_declarator "*unaff_EBX" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "name_00 = (byte *)__x86_get_pc_thunk_di();" (assignment_expression "name_00 = (byte *)__x86_get_pc_thunk_di()" identifier = (cast_expression "(byte *)__x86_get_pc_thunk_di()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar2 = *name_00;" (assignment_expression "bVar2 = *name_00" identifier = (pointer_expression "*name_00" * identifier)) ;) (expression_statement "uVar9 = (uint)bVar2;" (assignment_expression "uVar9 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar9 << 4;" (assignment_expression "uVar5 = uVar9 << 4" identifier = (binary_expression "uVar9 << 4" identifier << number_literal)) ;) (if_statement "if ((bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d)) {\n    while( true ) {\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }\n  }" if (parenthesized_expression "((bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d))" ( (binary_expression "(bVar2 != 0) && (pbVar8 = name_00, bVar2 != 0x3d)" (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(pbVar8 = name_00, bVar2 != 0x3d)" ( (comma_expression "pbVar8 = name_00, bVar2 != 0x3d" (assignment_expression "pbVar8 = name_00" identifier = identifier) , (binary_expression "bVar2 != 0x3d" identifier != number_literal)) ))) )) (compound_statement "{\n    while( true ) {\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }\n  }" { (while_statement "while( true ) {\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar5 = uVar5 + uVar9;\n      bVar2 = pbVar8[1];\n      if ((bVar2 == 0) || (bVar2 == 0x3d)) break;\n      uVar9 = (uint)bVar2;\n      pbVar8 = pbVar8 + 1;\n    }" { (expression_statement "uVar5 = uVar5 + uVar9;" (assignment_expression "uVar5 = uVar5 + uVar9" identifier = (binary_expression "uVar5 + uVar9" identifier + identifier)) ;) (expression_statement "bVar2 = pbVar8[1];" (assignment_expression "bVar2 = pbVar8[1]" identifier = (subscript_expression "pbVar8[1]" identifier [ number_literal ])) ;) (if_statement "if ((bVar2 == 0) || (bVar2 == 0x3d)) break;" if (parenthesized_expression "((bVar2 == 0) || (bVar2 == 0x3d))" ( (binary_expression "(bVar2 == 0) || (bVar2 == 0x3d)" (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar2 == 0x3d)" ( (binary_expression "bVar2 == 0x3d" identifier == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "uVar9 = (uint)bVar2;" (assignment_expression "uVar9 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) })) })) (expression_statement "iVar3 = *(int *)(unaff_EDI + 0x7cb46);" (assignment_expression "iVar3 = *(int *)(unaff_EDI + 0x7cb46)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x7cb46)" * (cast_expression "(int *)(unaff_EDI + 0x7cb46)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7cb46)" ( (binary_expression "unaff_EDI + 0x7cb46" identifier + number_literal) ))))) ;) (expression_statement "ppvVar6 = findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00);" (assignment_expression "ppvVar6 = findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00)" identifier = (call_expression "findvar((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00)" identifier (argument_list "((var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4),(char *)name_00)" ( (cast_expression "(var **)(iVar3 + 0x1c + (uVar5 % 0x27) * 4)" ( (type_descriptor "var **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x1c + (uVar5 % 0x27) * 4)" ( (binary_expression "iVar3 + 0x1c + (uVar5 % 0x27) * 4" (binary_expression "iVar3 + 0x1c" identifier + number_literal) + (binary_expression "(uVar5 % 0x27) * 4" (parenthesized_expression "(uVar5 % 0x27)" ( (binary_expression "uVar5 % 0x27" identifier % number_literal) )) * number_literal)) ))) , (cast_expression "(char *)name_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pvVar4 = *ppvVar6;" (assignment_expression "pvVar4 = *ppvVar6" identifier = (pointer_expression "*ppvVar6" * identifier)) ;) (if_statement "if (pvVar4 != (var *)0x0) {\n    uVar5 = pvVar4->flags;\n    if ((uVar5 & 0x200) != 0) {\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }\n    if ((uVar5 & 0x20) == 0) {\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }\n  }" if (parenthesized_expression "(pvVar4 != (var *)0x0)" ( (binary_expression "pvVar4 != (var *)0x0" identifier != (cast_expression "(var *)0x0" ( (type_descriptor "var *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar5 = pvVar4->flags;\n    if ((uVar5 & 0x200) != 0) {\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }\n    if ((uVar5 & 0x20) == 0) {\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }\n  }" { (expression_statement "uVar5 = pvVar4->flags;" (assignment_expression "uVar5 = pvVar4->flags" identifier = (field_expression "pvVar4->flags" identifier -> field_identifier)) ;) (if_statement "if ((uVar5 & 0x200) != 0) {\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }" if (parenthesized_expression "((uVar5 & 0x200) != 0)" ( (binary_expression "(uVar5 & 0x200) != 0" (parenthesized_expression "(uVar5 & 0x200)" ( (binary_expression "uVar5 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      (*pvVar4->var_func)(unaff_EBX);\n      uVar5 = pvVar4->flags;\n    }" { (expression_statement "(*pvVar4->var_func)(unaff_EBX);" (call_expression "(*pvVar4->var_func)(unaff_EBX)" (parenthesized_expression "(*pvVar4->var_func)" ( (pointer_expression "*pvVar4->var_func" * (field_expression "pvVar4->var_func" identifier -> field_identifier)) )) (argument_list "(unaff_EBX)" ( identifier ))) ;) (expression_statement "uVar5 = pvVar4->flags;" (assignment_expression "uVar5 = pvVar4->flags" identifier = (field_expression "pvVar4->flags" identifier -> field_identifier)) ;) })) (if_statement "if ((uVar5 & 0x20) == 0) {\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }" if (parenthesized_expression "((uVar5 & 0x20) == 0)" ( (binary_expression "(uVar5 & 0x20) == 0" (parenthesized_expression "(uVar5 & 0x20)" ( (binary_expression "uVar5 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar7 = pvVar4->var_text;\n      if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }\n      do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');\n      return pcVar7;\n    }" { (expression_statement "pcVar7 = pvVar4->var_text;" (assignment_expression "pcVar7 = pvVar4->var_text" identifier = (field_expression "pvVar4->var_text" identifier -> field_identifier)) ;) (if_statement "if ((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))) {\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }" if (parenthesized_expression "((pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c)))" ( (binary_expression "(pvVar4 == (var *)(iVar3 + 0x138)) && (pcVar7 == (char *)(iVar3 + 0x15c))" (parenthesized_expression "(pvVar4 == (var *)(iVar3 + 0x138))" ( (binary_expression "pvVar4 == (var *)(iVar3 + 0x138)" identifier == (cast_expression "(var *)(iVar3 + 0x138)" ( (type_descriptor "var *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x138)" ( (binary_expression "iVar3 + 0x138" identifier + number_literal) )))) )) && (parenthesized_expression "(pcVar7 == (char *)(iVar3 + 0x15c))" ( (binary_expression "pcVar7 == (char *)(iVar3 + 0x15c)" identifier == (cast_expression "(char *)(iVar3 + 0x15c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x15c)" ( (binary_expression "iVar3 + 0x15c" identifier + number_literal) )))) ))) )) (compound_statement "{\n        fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));\n        pcVar7 = pvVar4->var_text;\n      }" { (expression_statement "fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158));" (call_expression "fmtstr((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158))" identifier (argument_list "((char *)(iVar3 + 0x163),0xd,(char *)(unaff_EDI + 0x71fe3),\n               *(undefined4 *)(iVar3 + 0x158))" ( (cast_expression "(char *)(iVar3 + 0x163)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x163)" ( (binary_expression "iVar3 + 0x163" identifier + number_literal) ))) , number_literal , (cast_expression "(char *)(unaff_EDI + 0x71fe3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x71fe3)" ( (binary_expression "unaff_EDI + 0x71fe3" identifier + number_literal) ))) , (pointer_expression "*(undefined4 *)(iVar3 + 0x158)" * (cast_expression "(undefined4 *)(iVar3 + 0x158)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x158)" ( (binary_expression "iVar3 + 0x158" identifier + number_literal) )))) ))) ;) (expression_statement "pcVar7 = pvVar4->var_text;" (assignment_expression "pcVar7 = pvVar4->var_text" identifier = (field_expression "pvVar4->var_text" identifier -> field_identifier)) ;) })) (do_statement "do {\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      } while (cVar1 != '=');" do (compound_statement "{\n        cVar1 = *pcVar7;\n        if (cVar1 == '\0') {\n          return pcVar7;\n        }\n        pcVar7 = pcVar7 + 1;\n      }" { (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (if_statement "if (cVar1 == '\0') {\n          return pcVar7;\n        }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return pcVar7;\n        }" { (return_statement "return pcVar7;" return identifier ;) })) (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '=')" ( (binary_expression "cVar1 != '='" identifier != (char_literal "'='" ' character ')) )) ;) (return_statement "return pcVar7;" return identifier ;) })) })) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "char * FUN_00054bbe(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}\n\n" (function_definition "char * FUN_00054bbe(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}" primitive_type (pointer_declarator "* FUN_00054bbe(void)" * (function_declarator "FUN_00054bbe(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "pcVar4 = (char *)FUN_00026ff3();" (assignment_expression "pcVar4 = (char *)FUN_00026ff3()" identifier = (cast_expression "(char *)FUN_00026ff3()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00026ff3()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (while_statement "while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }" while (parenthesized_expression "((cVar1 != '\0' && (cVar1 != '=')))" ( (parenthesized_expression "(cVar1 != '\0' && (cVar1 != '='))" ( (binary_expression "cVar1 != '\0' && (cVar1 != '=')" (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) && (parenthesized_expression "(cVar1 != '=')" ( (binary_expression "cVar1 != '='" identifier != (char_literal "'='" ' character ')) ))) )) )) (compound_statement "{\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }" { (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) })) (expression_statement "iVar2 = *(int *)(unaff_EDI + 0x7cb46);" (assignment_expression "iVar2 = *(int *)(unaff_EDI + 0x7cb46)" identifier = (pointer_expression "*(int *)(unaff_EDI + 0x7cb46)" * (cast_expression "(int *)(unaff_EDI + 0x7cb46)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x7cb46)" ( (binary_expression "unaff_EDI + 0x7cb46" identifier + number_literal) ))))) ;) (expression_statement "piVar5 = (int *)FUN_0005213a();" (assignment_expression "piVar5 = (int *)FUN_0005213a()" identifier = (cast_expression "(int *)FUN_0005213a()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005213a()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar3 = *piVar5;" (assignment_expression "iVar3 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (if_statement "if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }" { (expression_statement "uVar6 = *(uint *)(iVar3 + 4);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 4)" identifier = (pointer_expression "*(uint *)(iVar3 + 4)" * (cast_expression "(uint *)(iVar3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }" if (parenthesized_expression "((uVar6 & 0x200) != 0)" ( (binary_expression "(uVar6 & 0x200) != 0" (parenthesized_expression "(uVar6 & 0x200)" ( (binary_expression "uVar6 & 0x200" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }" { (expression_statement "(**(code **)(iVar3 + 0xc))();" (call_expression "(**(code **)(iVar3 + 0xc))()" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" ( (pointer_expression "**(code **)(iVar3 + 0xc)" * (pointer_expression "*(code **)(iVar3 + 0xc)" * (cast_expression "(code **)(iVar3 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar6 = *(uint *)(iVar3 + 4);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 4)" identifier = (pointer_expression "*(uint *)(iVar3 + 4)" * (cast_expression "(uint *)(iVar3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }" if (parenthesized_expression "((uVar6 & 0x20) == 0)" ( (binary_expression "(uVar6 & 0x20) == 0" (parenthesized_expression "(uVar6 & 0x20)" ( (binary_expression "uVar6 & 0x20" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }" { (expression_statement "pcVar4 = *(char **)(iVar3 + 8);" (assignment_expression "pcVar4 = *(char **)(iVar3 + 8)" identifier = (pointer_expression "*(char **)(iVar3 + 8)" * (cast_expression "(char **)(iVar3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }" if (parenthesized_expression "((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c)))" ( (binary_expression "(iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))" (parenthesized_expression "(iVar3 == iVar2 + 0x138)" ( (binary_expression "iVar3 == iVar2 + 0x138" identifier == (binary_expression "iVar2 + 0x138" identifier + number_literal)) )) && (parenthesized_expression "(pcVar4 == (char *)(iVar2 + 0x15c))" ( (binary_expression "pcVar4 == (char *)(iVar2 + 0x15c)" identifier == (cast_expression "(char *)(iVar2 + 0x15c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x15c)" ( (binary_expression "iVar2 + 0x15c" identifier + number_literal) )))) ))) )) (compound_statement "{\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }" { (expression_statement "FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));" (call_expression "FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158))" identifier (argument_list "(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158))" ( (binary_expression "iVar2 + 0x163" identifier + number_literal) , number_literal , (binary_expression "unaff_EDI + 0x71fe3" identifier + number_literal) , (pointer_expression "*(undefined4 *)(iVar2 + 0x158)" * (cast_expression "(undefined4 *)(iVar2 + 0x158)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x158)" ( (binary_expression "iVar2 + 0x158" identifier + number_literal) )))) ))) ;) (expression_statement "pcVar4 = *(char **)(iVar3 + 8);" (assignment_expression "pcVar4 = *(char **)(iVar3 + 8)" identifier = (pointer_expression "*(char **)(iVar3 + 8)" * (cast_expression "(char **)(iVar3 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) ))))) ;) })) (do_statement "do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');" do (compound_statement "{\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      }" { (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (if_statement "if (cVar1 == '\0') {\n          return pcVar4;\n        }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return pcVar4;\n        }" { (return_statement "return pcVar4;" return identifier ;) })) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '=')" ( (binary_expression "cVar1 != '='" identifier != (char_literal "'='" ' character ')) )) ;) (return_statement "return pcVar4;" return identifier ;) })) })) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (char_literal ' escape_sequence ')) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) ;) (return_statement return IDENT ;) })) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "char * FUN_00054bbe(void)\n\n{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}" (primitive_type "char") (pointer_declarator "* FUN_00054bbe(void)" (* "*") (function_declarator "FUN_00054bbe(void)" (identifier "FUN_00054bbe") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  int iVar3;\n  char *pcVar4;\n  int *piVar5;\n  uint uVar6;\n  int unaff_EDI;\n  \n  pcVar4 = (char *)FUN_00026ff3();\n  cVar1 = *pcVar4;\n  while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }\n  iVar2 = *(int *)(unaff_EDI + 0x7cb46);\n  piVar5 = (int *)FUN_0005213a();\n  iVar3 = *piVar5;\n  if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }\n  return (char *)0x0;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "pcVar4 = (char *)FUN_00026ff3();" (assignment_expression "pcVar4 = (char *)FUN_00026ff3()" (identifier "pcVar4") (= "=") (cast_expression "(char *)FUN_00026ff3()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00026ff3()" (identifier "FUN_00026ff3") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" (identifier "cVar1") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (while_statement "while ((cVar1 != '\0' && (cVar1 != '='))) {\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }" (while "while") (parenthesized_expression "((cVar1 != '\0' && (cVar1 != '=')))" (( "(") (parenthesized_expression "(cVar1 != '\0' && (cVar1 != '='))" (( "(") (binary_expression "cVar1 != '\0' && (cVar1 != '=')" (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (&& "&&") (parenthesized_expression "(cVar1 != '=')" (( "(") (binary_expression "cVar1 != '='" (identifier "cVar1") (!= "!=") (char_literal "'='" (' "'") (character "=") (' "'"))) () ")"))) () ")")) () ")")) (compound_statement "{\n    pcVar4 = pcVar4 + 1;\n    cVar1 = *pcVar4;\n  }" ({ "{") (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" (identifier "cVar1") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(unaff_EDI + 0x7cb46);" (assignment_expression "iVar2 = *(int *)(unaff_EDI + 0x7cb46)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(unaff_EDI + 0x7cb46)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x7cb46)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x7cb46)" (( "(") (binary_expression "unaff_EDI + 0x7cb46" (identifier "unaff_EDI") (+ "+") (number_literal "0x7cb46")) () ")"))))) (; ";")) (expression_statement "piVar5 = (int *)FUN_0005213a();" (assignment_expression "piVar5 = (int *)FUN_0005213a()" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_0005213a()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005213a()" (identifier "FUN_0005213a") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar3 = *piVar5;" (assignment_expression "iVar3 = *piVar5" (identifier "iVar3") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (if_statement "if (iVar3 != 0) {\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar6 = *(uint *)(iVar3 + 4);\n    if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }\n    if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }\n  }" ({ "{") (expression_statement "uVar6 = *(uint *)(iVar3 + 4);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar3 + 4)" (* "*") (cast_expression "(uint *)(iVar3 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((uVar6 & 0x200) != 0) {\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }" (if "if") (parenthesized_expression "((uVar6 & 0x200) != 0)" (( "(") (binary_expression "(uVar6 & 0x200) != 0" (parenthesized_expression "(uVar6 & 0x200)" (( "(") (binary_expression "uVar6 & 0x200" (identifier "uVar6") (& "&") (number_literal "0x200")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(iVar3 + 0xc))();\n      uVar6 = *(uint *)(iVar3 + 4);\n    }" ({ "{") (expression_statement "(**(code **)(iVar3 + 0xc))();" (call_expression "(**(code **)(iVar3 + 0xc))()" (parenthesized_expression "(**(code **)(iVar3 + 0xc))" (( "(") (pointer_expression "**(code **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(code **)(iVar3 + 0xc)" (* "*") (cast_expression "(code **)(iVar3 + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar6 = *(uint *)(iVar3 + 4);" (assignment_expression "uVar6 = *(uint *)(iVar3 + 4)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(iVar3 + 4)" (* "*") (cast_expression "(uint *)(iVar3 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((uVar6 & 0x20) == 0) {\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }" (if "if") (parenthesized_expression "((uVar6 & 0x20) == 0)" (( "(") (binary_expression "(uVar6 & 0x20) == 0" (parenthesized_expression "(uVar6 & 0x20)" (( "(") (binary_expression "uVar6 & 0x20" (identifier "uVar6") (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar4 = *(char **)(iVar3 + 8);\n      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }\n      do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');\n      return pcVar4;\n    }" ({ "{") (expression_statement "pcVar4 = *(char **)(iVar3 + 8);" (assignment_expression "pcVar4 = *(char **)(iVar3 + 8)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(iVar3 + 8)" (* "*") (cast_expression "(char **)(iVar3 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }" (if "if") (parenthesized_expression "((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c)))" (( "(") (binary_expression "(iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))" (parenthesized_expression "(iVar3 == iVar2 + 0x138)" (( "(") (binary_expression "iVar3 == iVar2 + 0x138" (identifier "iVar3") (== "==") (binary_expression "iVar2 + 0x138" (identifier "iVar2") (+ "+") (number_literal "0x138"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar4 == (char *)(iVar2 + 0x15c))" (( "(") (binary_expression "pcVar4 == (char *)(iVar2 + 0x15c)" (identifier "pcVar4") (== "==") (cast_expression "(char *)(iVar2 + 0x15c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x15c)" (( "(") (binary_expression "iVar2 + 0x15c" (identifier "iVar2") (+ "+") (number_literal "0x15c")) () ")")))) () ")"))) () ")")) (compound_statement "{\n        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));\n        pcVar4 = *(char **)(iVar3 + 8);\n      }" ({ "{") (expression_statement "FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));" (call_expression "FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158))" (identifier "FUN_00054b6e") (argument_list "(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158))" (( "(") (binary_expression "iVar2 + 0x163" (identifier "iVar2") (+ "+") (number_literal "0x163")) (, ",") (number_literal "0xd") (, ",") (binary_expression "unaff_EDI + 0x71fe3" (identifier "unaff_EDI") (+ "+") (number_literal "0x71fe3")) (, ",") (pointer_expression "*(undefined4 *)(iVar2 + 0x158)" (* "*") (cast_expression "(undefined4 *)(iVar2 + 0x158)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x158)" (( "(") (binary_expression "iVar2 + 0x158" (identifier "iVar2") (+ "+") (number_literal "0x158")) () ")")))) () ")"))) (; ";")) (expression_statement "pcVar4 = *(char **)(iVar3 + 8);" (assignment_expression "pcVar4 = *(char **)(iVar3 + 8)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(iVar3 + 8)" (* "*") (cast_expression "(char **)(iVar3 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (do_statement "do {\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      } while (cVar1 != '=');" (do "do") (compound_statement "{\n        cVar1 = *pcVar4;\n        if (cVar1 == '\0') {\n          return pcVar4;\n        }\n        pcVar4 = pcVar4 + 1;\n      }" ({ "{") (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" (identifier "cVar1") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (if_statement "if (cVar1 == '\0') {\n          return pcVar4;\n        }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return pcVar4;\n        }" ({ "{") (return_statement "return pcVar4;" (return "return") (identifier "pcVar4") (; ";")) (} "}"))) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '=')" (( "(") (binary_expression "cVar1 != '='" (identifier "cVar1") (!= "!=") (char_literal "'='" (' "'") (character "=") (' "'"))) () ")")) (; ";")) (return_statement "return pcVar4;" (return "return") (identifier "pcVar4") (; ";")) (} "}"))) (} "}"))) (return_statement "return (char *)0x0;" (return "return") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

char * function_1(char *name)

{
  char var_12;
  type_1 var_3;
  int var_8;
  type_2 *var_9;
  type_1 *name_00;
  type_3 var_4;
  type_2 **ppvVar6;
  char *var_10;
  type_1 *var_5;
  char *unaff_EBX;
  type_3 var_2;
  int var_6;
  
  name_00 = (type_1 *)var_1();
  var_3 = *name_00;
  var_2 = (type_3)var_3;
  var_4 = var_2 << 4;
  if ((var_3 != 0) && (var_5 = name_00, var_3 != 0x3d)) {
    while( true ) {
      var_4 = var_4 + var_2;
      var_3 = var_5[1];
      if ((var_3 == 0) || (var_3 == 0x3d)) break;
      var_2 = (type_3)var_3;
      var_5 = var_5 + 1;
    }
  }
  var_8 = *(int *)(var_6 + 0x7cb46);
  ppvVar6 = var_7((type_2 **)(var_8 + 0x1c + (var_4 % 0x27) * 4),(char *)name_00);
  var_9 = *ppvVar6;
  if (var_9 != (type_2 *)0x0) {
    var_4 = var_9->flags;
    if ((var_4 & 0x200) != 0) {
      (*var_9->var_func)(unaff_EBX);
      var_4 = var_9->flags;
    }
    if ((var_4 & 0x20) == 0) {
      var_10 = var_9->var_text;
      if ((var_9 == (type_2 *)(var_8 + 0x138)) && (var_10 == (char *)(var_8 + 0x15c))) {
        var_11((char *)(var_8 + 0x163),0xd,(char *)(var_6 + 0x71fe3),
               *(type_4 *)(var_8 + 0x158));
        var_10 = var_9->var_text;
      }
      do {
        var_12 = *var_10;
        if (var_12 == '\0') {
          return var_10;
        }
        var_10 = var_10 + 1;
      } while (var_12 != '=');
      return var_10;
    }
  }
  return (char *)0x0;
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (escape_sequence))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character))))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character))))) (return_statement (identifier)))))) (return_statement (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))

char * MASKED(void)

{
  char cVar1;
  int iVar2;
  int iVar3;
  char *pcVar4;
  int *piVar5;
  uint uVar6;
  int unaff_EDI;
  
  pcVar4 = (char *)FUN_00026ff3();
  cVar1 = *pcVar4;
  while ((cVar1 != '\0' && (cVar1 != '='))) {
    pcVar4 = pcVar4 + 1;
    cVar1 = *pcVar4;
  }
  iVar2 = *(int *)(unaff_EDI + 0x7cb46);
  piVar5 = (int *)FUN_0005213a();
  iVar3 = *piVar5;
  if (iVar3 != 0) {
    uVar6 = *(uint *)(iVar3 + 4);
    if ((uVar6 & 0x200) != 0) {
      (**(code **)(iVar3 + 0xc))();
      uVar6 = *(uint *)(iVar3 + 4);
    }
    if ((uVar6 & 0x20) == 0) {
      pcVar4 = *(char **)(iVar3 + 8);
      if ((iVar3 == iVar2 + 0x138) && (pcVar4 == (char *)(iVar2 + 0x15c))) {
        FUN_00054b6e(iVar2 + 0x163,0xd,unaff_EDI + 0x71fe3,*(undefined4 *)(iVar2 + 0x158));
        pcVar4 = *(char **)(iVar3 + 8);
      }
      do {
        cVar1 = *pcVar4;
        if (cVar1 == '\0') {
          return pcVar4;
        }
        pcVar4 = pcVar4 + 1;
      } while (cVar1 != '=');
      return pcVar4;
    }
  }
  return (char *)0x0;
}

