
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bfd_boolean __regparm3 match(Sym *pattern,Sym *sym)

{
  bfd_boolean bVar1;
  char *__s2;
  int iVar2;
  
  if ((pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file)) {
    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {
      return 0;
    }
    bVar1 = 1;
    if (pattern->name != (char *)0x0) {
      __s2 = sym->name;
      if (*__s2 != '\0') {
        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);
      }
      iVar2 = strcmp(pattern->name,__s2);
      return (uint)(iVar2 == 0);
    }
  }
  return bVar1;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool __regparm3 FUN_0001d720(int param_1,int param_2)

{
  bool bVar1;
  char *__s2;
  int iVar2;
  
  if ((*(int *)(param_1 + 0x14) == 0) ||
     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {
    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {
      return false;
    }
    bVar1 = true;
    if (*(char **)(param_1 + 0x10) != (char *)0x0) {
      __s2 = *(char **)(param_2 + 0x10);
      if (*__s2 != '\0') {
        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));
      }
      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);
      return iVar2 == 0;
    }
  }
  return bVar1;
}


PUSH ESI
MOV ECX,EAX
PUSH EBX
CALL 0x00013030
ADD EBX,0xf8d7
SUB ESP,0x4
MOV ESI,dword ptr [EAX + 0x14]
TEST ESI,ESI
JZ 0x0001d750
XOR EAX,EAX
CMP ESI,dword ptr [EDX + 0x14]
JZ 0x0001d750
ADD ESP,0x4
POP EBX
POP ESI
RET
MOV ESI,dword ptr [ECX + 0x18]
TEST ESI,ESI
JNZ 0x0001d7a0
MOV ECX,dword ptr [ECX + 0x10]
MOV EAX,0x1
TEST ECX,ECX
JZ 0x0001d740
MOV EAX,dword ptr [EDX + 0x10]
MOVZX EDX,byte ptr [EAX]
TEST DL,DL
JZ 0x0001d783
LEA ESI,[EBX + 0x14ec]
MOV ESI,dword ptr [ESI]
MOV ESI,dword ptr [ESI + 0x4]
CMP DL,byte ptr [ESI + 0x18]
SETZ DL
MOVZX EDX,DL
ADD EAX,EDX
SUB ESP,0x8
PUSH EAX
PUSH ECX
CALL 0x00012060
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
ADD ESP,0x4
MOVZX EAX,AL
POP EBX
POP ESI
RET
XOR EAX,EAX
CMP ESI,dword ptr [EDX + 0x18]
JZ 0x0001d757
ADD ESP,0x4
POP EBX
POP ESI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool __regparm3 FUN_0001d720(int param_1,int param_2)\n\n{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}\n\n" comment (function_definition "bool __regparm3 FUN_0001d720(int param_1,int param_2)\n\n{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001d720(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)))" ( (binary_expression "(*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))" (parenthesized_expression "(*(int *)(param_1 + 0x14) == 0)" ( (binary_expression "*(int *)(param_1 + 0x14) == 0" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))" ( (comma_expression "bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)" (assignment_expression "bVar1 = false" identifier = false) , (binary_expression "*(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_2 + 0x14)" * (cast_expression "(int *)(param_2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))))) ))) )) (compound_statement "{\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }" { (if_statement "if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }" if (parenthesized_expression "((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18)))" ( (binary_expression "(*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))" (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" ( (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))" ( (binary_expression "*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }" if (parenthesized_expression "(*(char **)(param_1 + 0x10) != (char *)0x0)" ( (binary_expression "*(char **)(param_1 + 0x10) != (char *)0x0" (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }" { (expression_statement "__s2 = *(char **)(param_2 + 0x10);" (assignment_expression "__s2 = *(char **)(param_2 + 0x10)" identifier = (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }" if (parenthesized_expression "(*__s2 != '\0')" ( (binary_expression "*__s2 != '\0'" (pointer_expression "*__s2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }" { (expression_statement "__s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));" (assignment_expression "__s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" identifier = (binary_expression "__s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" identifier + (parenthesized_expression "(*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" ( (binary_expression "*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" (pointer_expression "*__s2" * identifier) == (pointer_expression "*(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" * (cast_expression "(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x18)" ( (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x18" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" * (cast_expression "(int *)(DAT_0002e4ec + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4ec + 4)" ( (binary_expression "DAT_0002e4ec + 4" identifier + number_literal) )))) + number_literal) ))))) )))) ;) })) (expression_statement "iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);" (assignment_expression "iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2)" identifier = (call_expression "strcmp(*(char **)(param_1 + 0x10),__s2)" identifier (argument_list "(*(char **)(param_1 + 0x10),__s2)" ( (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (return_statement "return iVar2 == 0;" return (binary_expression "iVar2 == 0" identifier == number_literal) ;) })) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd_boolean __regparm3 match(Sym *pattern,Sym *sym)\n\n{\n  bfd_boolean bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file)) {\n    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {\n      return 0;\n    }\n    bVar1 = 1;\n    if (pattern->name != (char *)0x0) {\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }\n  }\n  return bVar1;\n}\n\n" comment (function_definition "bfd_boolean __regparm3 match(Sym *pattern,Sym *sym)\n\n{\n  bfd_boolean bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file)) {\n    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {\n      return 0;\n    }\n    bVar1 = 1;\n    if (pattern->name != (char *)0x0) {\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }\n  }\n  return bVar1;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "match(Sym *pattern,Sym *sym)" identifier (parameter_list "(Sym *pattern,Sym *sym)" ( (parameter_declaration "Sym *pattern" type_identifier (pointer_declarator "*pattern" * identifier)) , (parameter_declaration "Sym *sym" type_identifier (pointer_declarator "*sym" * identifier)) ))) (compound_statement "{\n  bfd_boolean bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file)) {\n    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {\n      return 0;\n    }\n    bVar1 = 1;\n    if (pattern->name != (char *)0x0) {\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }\n  }\n  return bVar1;\n}" { (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if ((pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file)) {\n    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {\n      return 0;\n    }\n    bVar1 = 1;\n    if (pattern->name != (char *)0x0) {\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }\n  }" if (parenthesized_expression "((pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file))" ( (binary_expression "(pattern->file == (Source_File *)0x0) || (bVar1 = 0, pattern->file == sym->file)" (parenthesized_expression "(pattern->file == (Source_File *)0x0)" ( (binary_expression "pattern->file == (Source_File *)0x0" (field_expression "pattern->file" identifier -> field_identifier) == (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(bVar1 = 0, pattern->file == sym->file)" ( (comma_expression "bVar1 = 0, pattern->file == sym->file" (assignment_expression "bVar1 = 0" identifier = number_literal) , (binary_expression "pattern->file == sym->file" (field_expression "pattern->file" identifier -> field_identifier) == (field_expression "sym->file" identifier -> field_identifier))) ))) )) (compound_statement "{\n    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {\n      return 0;\n    }\n    bVar1 = 1;\n    if (pattern->name != (char *)0x0) {\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }\n  }" { (if_statement "if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {\n      return 0;\n    }" if (parenthesized_expression "((pattern->line_num != 0) && (pattern->line_num != sym->line_num))" ( (binary_expression "(pattern->line_num != 0) && (pattern->line_num != sym->line_num)" (parenthesized_expression "(pattern->line_num != 0)" ( (binary_expression "pattern->line_num != 0" (field_expression "pattern->line_num" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "(pattern->line_num != sym->line_num)" ( (binary_expression "pattern->line_num != sym->line_num" (field_expression "pattern->line_num" identifier -> field_identifier) != (field_expression "sym->line_num" identifier -> field_identifier)) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = 1;" (assignment_expression "bVar1 = 1" identifier = number_literal) ;) (if_statement "if (pattern->name != (char *)0x0) {\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }" if (parenthesized_expression "(pattern->name != (char *)0x0)" ( (binary_expression "pattern->name != (char *)0x0" (field_expression "pattern->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __s2 = sym->name;\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }\n      iVar2 = strcmp(pattern->name,__s2);\n      return (uint)(iVar2 == 0);\n    }" { (expression_statement "__s2 = sym->name;" (assignment_expression "__s2 = sym->name" identifier = (field_expression "sym->name" identifier -> field_identifier)) ;) (if_statement "if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }" if (parenthesized_expression "(*__s2 != '\0')" ( (binary_expression "*__s2 != '\0'" (pointer_expression "*__s2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        __s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);\n      }" { (expression_statement "__s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char);" (assignment_expression "__s2 = __s2 + (*__s2 == core_bfd->xvec->symbol_leading_char)" identifier = (binary_expression "__s2 + (*__s2 == core_bfd->xvec->symbol_leading_char)" identifier + (parenthesized_expression "(*__s2 == core_bfd->xvec->symbol_leading_char)" ( (binary_expression "*__s2 == core_bfd->xvec->symbol_leading_char" (pointer_expression "*__s2" * identifier) == (field_expression "core_bfd->xvec->symbol_leading_char" (field_expression "core_bfd->xvec" identifier -> field_identifier) -> field_identifier)) )))) ;) })) (expression_statement "iVar2 = strcmp(pattern->name,__s2);" (assignment_expression "iVar2 = strcmp(pattern->name,__s2)" identifier = (call_expression "strcmp(pattern->name,__s2)" identifier (argument_list "(pattern->name,__s2)" ( (field_expression "pattern->name" identifier -> field_identifier) , identifier )))) ;) (return_statement "return (uint)(iVar2 == 0);" return (call_expression "(uint)(iVar2 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) ))) ;) })) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit "bool __regparm3 FUN_0001d720(int param_1,int param_2)\n\n{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}\n\n" (function_definition "bool __regparm3 FUN_0001d720(int param_1,int param_2)\n\n{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0001d720(int param_1,int param_2)" identifier (parameter_list "(int param_1,int param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (if_statement "if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)))" ( (binary_expression "(*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))" (parenthesized_expression "(*(int *)(param_1 + 0x14) == 0)" ( (binary_expression "*(int *)(param_1 + 0x14) == 0" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))" ( (comma_expression "bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)" (assignment_expression "bVar1 = false" identifier = false) , (binary_expression "*(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) == (pointer_expression "*(int *)(param_2 + 0x14)" * (cast_expression "(int *)(param_2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))))) ))) )) (compound_statement "{\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }" { (if_statement "if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }" if (parenthesized_expression "((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18)))" ( (binary_expression "(*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))" (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" ( (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))" ( (binary_expression "*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18)" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }" if (parenthesized_expression "(*(char **)(param_1 + 0x10) != (char *)0x0)" ( (binary_expression "*(char **)(param_1 + 0x10) != (char *)0x0" (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }" { (expression_statement "__s2 = *(char **)(param_2 + 0x10);" (assignment_expression "__s2 = *(char **)(param_2 + 0x10)" identifier = (pointer_expression "*(char **)(param_2 + 0x10)" * (cast_expression "(char **)(param_2 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }" if (parenthesized_expression "(*__s2 != '\0')" ( (binary_expression "*__s2 != '\0'" (pointer_expression "*__s2" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }" { (expression_statement "__s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));" (assignment_expression "__s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" identifier = (binary_expression "__s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" identifier + (parenthesized_expression "(*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" ( (binary_expression "*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" (pointer_expression "*__s2" * identifier) == (pointer_expression "*(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" * (cast_expression "(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x18)" ( (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x18" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" * (cast_expression "(int *)(DAT_0002e4ec + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0002e4ec + 4)" ( (binary_expression "DAT_0002e4ec + 4" identifier + number_literal) )))) + number_literal) ))))) )))) ;) })) (expression_statement "iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);" (assignment_expression "iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2)" identifier = (call_expression "strcmp(*(char **)(param_1 + 0x10),__s2)" identifier (argument_list "(*(char **)(param_1 + 0x10),__s2)" ( (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , identifier )))) ;) (return_statement "return iVar2 == 0;" return (binary_expression "iVar2 == 0" identifier == number_literal) ;) })) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (return_statement return (binary_expression IDENT == LIT) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "bool __regparm3 FUN_0001d720(int param_1,int param_2)\n\n{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}" (primitive_type "bool") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0001d720(int param_1,int param_2)" (identifier "FUN_0001d720") (parameter_list "(int param_1,int param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  char *__s2;\n  int iVar2;\n  \n  if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }\n  return bVar1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (if_statement "if ((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)))" (( "(") (binary_expression "(*(int *)(param_1 + 0x14) == 0) ||\n     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))" (parenthesized_expression "(*(int *)(param_1 + 0x14) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x14) == 0" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))" (( "(") (comma_expression "bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (, ",") (binary_expression "*(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14)" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (pointer_expression "*(int *)(param_2 + 0x14)" (* "*") (cast_expression "(int *)(param_2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")")))))) () ")"))) () ")")) (compound_statement "{\n    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }\n    bVar1 = true;\n    if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }\n  }" ({ "{") (if_statement "if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {\n      return false;\n    }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18)))" (( "(") (binary_expression "(*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))" (parenthesized_expression "(*(int *)(param_1 + 0x18) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) != 0" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))" (( "(") (binary_expression "*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18)" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (pointer_expression "*(int *)(param_2 + 0x18)" (* "*") (cast_expression "(int *)(param_2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (if_statement "if (*(char **)(param_1 + 0x10) != (char *)0x0) {\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }" (if "if") (parenthesized_expression "(*(char **)(param_1 + 0x10) != (char *)0x0)" (( "(") (binary_expression "*(char **)(param_1 + 0x10) != (char *)0x0" (pointer_expression "*(char **)(param_1 + 0x10)" (* "*") (cast_expression "(char **)(param_1 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      __s2 = *(char **)(param_2 + 0x10);\n      if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }\n      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);\n      return iVar2 == 0;\n    }" ({ "{") (expression_statement "__s2 = *(char **)(param_2 + 0x10);" (assignment_expression "__s2 = *(char **)(param_2 + 0x10)" (identifier "__s2") (= "=") (pointer_expression "*(char **)(param_2 + 0x10)" (* "*") (cast_expression "(char **)(param_2 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (*__s2 != '\0') {\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }" (if "if") (parenthesized_expression "(*__s2 != '\0')" (( "(") (binary_expression "*__s2 != '\0'" (pointer_expression "*__s2" (* "*") (identifier "__s2")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));\n      }" ({ "{") (expression_statement "__s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));" (assignment_expression "__s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" (identifier "__s2") (= "=") (binary_expression "__s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" (identifier "__s2") (+ "+") (parenthesized_expression "(*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18))" (( "(") (binary_expression "*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" (pointer_expression "*__s2" (* "*") (identifier "__s2")) (== "==") (pointer_expression "*(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" (* "*") (cast_expression "(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0002e4ec + 4) + 0x18)" (( "(") (binary_expression "*(int *)(DAT_0002e4ec + 4) + 0x18" (pointer_expression "*(int *)(DAT_0002e4ec + 4)" (* "*") (cast_expression "(int *)(DAT_0002e4ec + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0002e4ec + 4)" (( "(") (binary_expression "DAT_0002e4ec + 4" (identifier "DAT_0002e4ec") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);" (assignment_expression "iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2)" (identifier "iVar2") (= "=") (call_expression "strcmp(*(char **)(param_1 + 0x10),__s2)" (identifier "strcmp") (argument_list "(*(char **)(param_1 + 0x10),__s2)" (( "(") (pointer_expression "*(char **)(param_1 + 0x10)" (* "*") (cast_expression "(char **)(param_1 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (identifier "__s2") () ")")))) (; ";")) (return_statement "return iVar2 == 0;" (return "return") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (return_statement "return bVar1;" (return "return") (identifier "bVar1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

type_1 __regparm3 function_1(type_2 *pattern,type_2 *sym)

{
  type_1 bVar1;
  char *var_1;
  int var_3;
  
  if ((pattern->file == (type_3 *)0x0) || (bVar1 = 0, pattern->file == sym->file)) {
    if ((pattern->line_num != 0) && (pattern->line_num != sym->line_num)) {
      return 0;
    }
    bVar1 = 1;
    if (pattern->name != (char *)0x0) {
      var_1 = sym->name;
      if (*var_1 != '\0') {
        var_1 = var_1 + (*var_1 == core_bfd->xvec->symbol_leading_char);
      }
      var_3 = var_2(pattern->name,var_1);
      return (uint)(var_3 == 0);
    }
  }
  return bVar1;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (false)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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)))))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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))))))))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier))))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool __regparm3 MASKED(int param_1,int param_2)

{
  bool bVar1;
  char *__s2;
  int iVar2;
  
  if ((*(int *)(param_1 + 0x14) == 0) ||
     (bVar1 = false, *(int *)(param_1 + 0x14) == *(int *)(param_2 + 0x14))) {
    if ((*(int *)(param_1 + 0x18) != 0) && (*(int *)(param_1 + 0x18) != *(int *)(param_2 + 0x18))) {
      return false;
    }
    bVar1 = true;
    if (*(char **)(param_1 + 0x10) != (char *)0x0) {
      __s2 = *(char **)(param_2 + 0x10);
      if (*__s2 != '\0') {
        __s2 = __s2 + (*__s2 == *(char *)(*(int *)(DAT_0002e4ec + 4) + 0x18));
      }
      iVar2 = strcmp(*(char **)(param_1 + 0x10),__s2);
      return iVar2 == 0;
    }
  }
  return bVar1;
}

