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

bfd_boolean get_section(bfd *abfd,asection *sec,void *inf)

{
  char *__s2;
  char *__s1;
  bfd_boolean bVar1;
  int iVar2;
  
  bVar1 = 0;
  if (*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)) {
                    /* WARNING: Load size is inaccurate */
    __s2 = *inf;
    __s1 = *(char **)((int)sec->used_by_bfd + 0x84);
    bVar1 = 1;
    if (__s2 != __s1) {
      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {
        iVar2 = strcmp(__s1,__s2);
        return (uint)(iVar2 == 0);
      }
      return 0;
    }
  }
  return bVar1;
}



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

bool FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)

{
  char *__s2;
  char *__s1;
  bool bVar1;
  int iVar2;
  
  bVar1 = false;
  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {
    __s2 = (char *)*param_3;
    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);
    bVar1 = true;
    if (__s2 != __s1) {
      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {
        iVar2 = strcmp(__s1,__s2);
        return iVar2 == 0;
      }
      return false;
    }
  }
  return bVar1;
}


PUSH ESI
PUSH EBX
CALL 0x00016000
ADD EBX,0x2ba09
SUB ESP,0x4
MOV EAX,dword ptr [ESP + 0x14]
MOV ECX,dword ptr [ESP + 0x18]
MOV EDX,dword ptr [EAX + 0xa4]
XOR EAX,EAX
MOV ESI,dword ptr [EDX + 0x2c]
CMP dword ptr [ECX + 0x4],ESI
JZ 0x00054620
ADD ESP,0x4
POP EBX
POP ESI
RET
MOV ECX,dword ptr [ECX]
MOV EDX,dword ptr [EDX + 0x84]
MOV EAX,0x1
CMP ECX,EDX
JZ 0x00054618
TEST EDX,EDX
JZ 0x00054658
TEST ECX,ECX
JZ 0x00054658
SUB ESP,0x8
PUSH ECX
PUSH EDX
CALL 0x00014090
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
ADD ESP,0x4
MOVZX EAX,AL
POP EBX
POP ESI
RET
ADD ESP,0x4
XOR EAX,EAX
POP EBX
POP ESI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}\n\n" comment (function_definition "bool FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}" primitive_type (function_declarator "FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }" if (parenthesized_expression "(param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c))" ( (binary_expression "param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" (subscript_expression "param_3[1]" identifier [ number_literal ]) == (pointer_expression "*(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" * (cast_expression "(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0xa4) + 0x2c)" ( (binary_expression "*(int *)(param_2 + 0xa4) + 0x2c" (pointer_expression "*(int *)(param_2 + 0xa4)" * (cast_expression "(int *)(param_2 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xa4)" ( (binary_expression "param_2 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }" { (expression_statement "__s2 = (char *)*param_3;" (assignment_expression "__s2 = (char *)*param_3" identifier = (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "__s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);" (assignment_expression "__s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84)" identifier = (pointer_expression "*(char **)(*(int *)(param_2 + 0xa4) + 0x84)" * (cast_expression "(char **)(*(int *)(param_2 + 0xa4) + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_2 + 0xa4) + 0x84)" ( (binary_expression "*(int *)(param_2 + 0xa4) + 0x84" (pointer_expression "*(int *)(param_2 + 0xa4)" * (cast_expression "(int *)(param_2 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xa4)" ( (binary_expression "param_2 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }" if (parenthesized_expression "(__s2 != __s1)" ( (binary_expression "__s2 != __s1" identifier != identifier) )) (compound_statement "{\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }" { (if_statement "if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }" if (parenthesized_expression "((__s1 != (char *)0x0) && (__s2 != (char *)0x0))" ( (binary_expression "(__s1 != (char *)0x0) && (__s2 != (char *)0x0)" (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }" { (expression_statement "iVar2 = strcmp(__s1,__s2);" (assignment_expression "iVar2 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (return_statement "return iVar2 == 0;" return (binary_expression "iVar2 == 0" identifier == number_literal) ;) })) (return_statement "return false;" return false ;) })) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nbfd_boolean get_section(bfd *abfd,asection *sec,void *inf)\n\n{\n  char *__s2;\n  char *__s1;\n  bfd_boolean bVar1;\n  int iVar2;\n  \n  bVar1 = 0;\n  if (*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)) {\n                    /* WARNING: Load size is inaccurate */\n    __s2 = *inf;\n    __s1 = *(char **)((int)sec->used_by_bfd + 0x84);\n    bVar1 = 1;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }\n  }\n  return bVar1;\n}\n\n" comment comment (function_definition "bfd_boolean get_section(bfd *abfd,asection *sec,void *inf)\n\n{\n  char *__s2;\n  char *__s1;\n  bfd_boolean bVar1;\n  int iVar2;\n  \n  bVar1 = 0;\n  if (*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)) {\n                    /* WARNING: Load size is inaccurate */\n    __s2 = *inf;\n    __s1 = *(char **)((int)sec->used_by_bfd + 0x84);\n    bVar1 = 1;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }\n  }\n  return bVar1;\n}" type_identifier (function_declarator "get_section(bfd *abfd,asection *sec,void *inf)" identifier (parameter_list "(bfd *abfd,asection *sec,void *inf)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "asection *sec" type_identifier (pointer_declarator "*sec" * identifier)) , (parameter_declaration "void *inf" primitive_type (pointer_declarator "*inf" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  bfd_boolean bVar1;\n  int iVar2;\n  \n  bVar1 = 0;\n  if (*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)) {\n                    /* WARNING: Load size is inaccurate */\n    __s2 = *inf;\n    __s1 = *(char **)((int)sec->used_by_bfd + 0x84);\n    bVar1 = 1;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }\n  }\n  return bVar1;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "bVar1 = 0;" (assignment_expression "bVar1 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)) {\n                    /* WARNING: Load size is inaccurate */\n    __s2 = *inf;\n    __s1 = *(char **)((int)sec->used_by_bfd + 0x84);\n    bVar1 = 1;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }\n  }" if (parenthesized_expression "(*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c))" ( (binary_expression "*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)" (pointer_expression "*(int *)((int)inf + 4)" * (cast_expression "(int *)((int)inf + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)inf + 4)" ( (binary_expression "(int)inf + 4" (cast_expression "(int)inf" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (pointer_expression "*(int *)((int)sec->used_by_bfd + 0x2c)" * (cast_expression "(int *)((int)sec->used_by_bfd + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)sec->used_by_bfd + 0x2c)" ( (binary_expression "(int)sec->used_by_bfd + 0x2c" (cast_expression "(int)sec->used_by_bfd" ( (type_descriptor "int" primitive_type) ) (field_expression "sec->used_by_bfd" identifier -> field_identifier)) + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Load size is inaccurate */\n    __s2 = *inf;\n    __s1 = *(char **)((int)sec->used_by_bfd + 0x84);\n    bVar1 = 1;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }\n  }" { comment (expression_statement "__s2 = *inf;" (assignment_expression "__s2 = *inf" identifier = (pointer_expression "*inf" * identifier)) ;) (expression_statement "__s1 = *(char **)((int)sec->used_by_bfd + 0x84);" (assignment_expression "__s1 = *(char **)((int)sec->used_by_bfd + 0x84)" identifier = (pointer_expression "*(char **)((int)sec->used_by_bfd + 0x84)" * (cast_expression "(char **)((int)sec->used_by_bfd + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)sec->used_by_bfd + 0x84)" ( (binary_expression "(int)sec->used_by_bfd + 0x84" (cast_expression "(int)sec->used_by_bfd" ( (type_descriptor "int" primitive_type) ) (field_expression "sec->used_by_bfd" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "bVar1 = 1;" (assignment_expression "bVar1 = 1" identifier = number_literal) ;) (if_statement "if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }" if (parenthesized_expression "(__s2 != __s1)" ( (binary_expression "__s2 != __s1" identifier != identifier) )) (compound_statement "{\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }\n      return 0;\n    }" { (if_statement "if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }" if (parenthesized_expression "((__s1 != (char *)0x0) && (__s2 != (char *)0x0))" ( (binary_expression "(__s1 != (char *)0x0) && (__s2 != (char *)0x0)" (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        iVar2 = strcmp(__s1,__s2);\n        return (uint)(iVar2 == 0);\n      }" { (expression_statement "iVar2 = strcmp(__s1,__s2);" (assignment_expression "iVar2 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( 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 0;" return number_literal ;) })) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit "bool FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}\n\n" (function_definition "bool FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}" primitive_type (function_declarator "FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)" identifier (parameter_list "(undefined4 param_1,int param_2,undefined4 *param_3)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}" { (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }" if (parenthesized_expression "(param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c))" ( (binary_expression "param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" (subscript_expression "param_3[1]" identifier [ number_literal ]) == (pointer_expression "*(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" * (cast_expression "(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_2 + 0xa4) + 0x2c)" ( (binary_expression "*(int *)(param_2 + 0xa4) + 0x2c" (pointer_expression "*(int *)(param_2 + 0xa4)" * (cast_expression "(int *)(param_2 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xa4)" ( (binary_expression "param_2 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) )) (compound_statement "{\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }" { (expression_statement "__s2 = (char *)*param_3;" (assignment_expression "__s2 = (char *)*param_3" identifier = (cast_expression "(char *)*param_3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "__s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);" (assignment_expression "__s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84)" identifier = (pointer_expression "*(char **)(*(int *)(param_2 + 0xa4) + 0x84)" * (cast_expression "(char **)(*(int *)(param_2 + 0xa4) + 0x84)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(param_2 + 0xa4) + 0x84)" ( (binary_expression "*(int *)(param_2 + 0xa4) + 0x84" (pointer_expression "*(int *)(param_2 + 0xa4)" * (cast_expression "(int *)(param_2 + 0xa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xa4)" ( (binary_expression "param_2 + 0xa4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }" if (parenthesized_expression "(__s2 != __s1)" ( (binary_expression "__s2 != __s1" identifier != identifier) )) (compound_statement "{\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }" { (if_statement "if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }" if (parenthesized_expression "((__s1 != (char *)0x0) && (__s2 != (char *)0x0))" ( (binary_expression "(__s1 != (char *)0x0) && (__s2 != (char *)0x0)" (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }" { (expression_statement "iVar2 = strcmp(__s1,__s2);" (assignment_expression "iVar2 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (return_statement "return iVar2 == 0;" return (binary_expression "iVar2 == 0" identifier == number_literal) ;) })) (return_statement "return false;" return false ;) })) })) (return_statement "return bVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (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) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (return_statement return (binary_expression IDENT == LIT) ;) })) (return_statement return BOOL ;) })) })) (return_statement return IDENT ;) })))
(function_definition "bool FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)\n\n{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}" (primitive_type "bool") (function_declarator "FUN_000545f0(undefined4 param_1,int param_2,undefined4 *param_3)" (identifier "FUN_000545f0") (parameter_list "(undefined4 param_1,int param_2,undefined4 *param_3)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char *__s2;\n  char *__s1;\n  bool bVar1;\n  int iVar2;\n  \n  bVar1 = false;\n  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }\n  return bVar1;\n}" ({ "{") (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (if_statement "if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }" (if "if") (parenthesized_expression "(param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c))" (( "(") (binary_expression "param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]")) (== "==") (pointer_expression "*(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" (* "*") (cast_expression "(int *)(*(int *)(param_2 + 0xa4) + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0xa4) + 0x2c)" (( "(") (binary_expression "*(int *)(param_2 + 0xa4) + 0x2c" (pointer_expression "*(int *)(param_2 + 0xa4)" (* "*") (cast_expression "(int *)(param_2 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xa4)" (( "(") (binary_expression "param_2 + 0xa4" (identifier "param_2") (+ "+") (number_literal "0xa4")) () ")")))) (+ "+") (number_literal "0x2c")) () ")"))))) () ")")) (compound_statement "{\n    __s2 = (char *)*param_3;\n    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);\n    bVar1 = true;\n    if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }\n  }" ({ "{") (expression_statement "__s2 = (char *)*param_3;" (assignment_expression "__s2 = (char *)*param_3" (identifier "__s2") (= "=") (cast_expression "(char *)*param_3" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "__s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);" (assignment_expression "__s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84)" (identifier "__s1") (= "=") (pointer_expression "*(char **)(*(int *)(param_2 + 0xa4) + 0x84)" (* "*") (cast_expression "(char **)(*(int *)(param_2 + 0xa4) + 0x84)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(param_2 + 0xa4) + 0x84)" (( "(") (binary_expression "*(int *)(param_2 + 0xa4) + 0x84" (pointer_expression "*(int *)(param_2 + 0xa4)" (* "*") (cast_expression "(int *)(param_2 + 0xa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xa4)" (( "(") (binary_expression "param_2 + 0xa4" (identifier "param_2") (+ "+") (number_literal "0xa4")) () ")")))) (+ "+") (number_literal "0x84")) () ")"))))) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (if_statement "if (__s2 != __s1) {\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }" (if "if") (parenthesized_expression "(__s2 != __s1)" (( "(") (binary_expression "__s2 != __s1" (identifier "__s2") (!= "!=") (identifier "__s1")) () ")")) (compound_statement "{\n      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }\n      return false;\n    }" ({ "{") (if_statement "if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }" (if "if") (parenthesized_expression "((__s1 != (char *)0x0) && (__s2 != (char *)0x0))" (( "(") (binary_expression "(__s1 != (char *)0x0) && (__s2 != (char *)0x0)" (parenthesized_expression "(__s1 != (char *)0x0)" (( "(") (binary_expression "__s1 != (char *)0x0" (identifier "__s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(__s2 != (char *)0x0)" (( "(") (binary_expression "__s2 != (char *)0x0" (identifier "__s2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n        iVar2 = strcmp(__s1,__s2);\n        return iVar2 == 0;\n      }" ({ "{") (expression_statement "iVar2 = strcmp(__s1,__s2);" (assignment_expression "iVar2 = strcmp(__s1,__s2)" (identifier "iVar2") (= "=") (call_expression "strcmp(__s1,__s2)" (identifier "strcmp") (argument_list "(__s1,__s2)" (( "(") (identifier "__s1") (, ",") (identifier "__s2") () ")")))) (; ";")) (return_statement "return iVar2 == 0;" (return "return") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (} "}"))) (return_statement "return bVar1;" (return "return") (identifier "bVar1") (; ";")) (} "}")))

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

type_1 function_1(type_2 *abfd,type_3 *sec,void *inf)

{
  char *var_1;
  char *var_2;
  type_1 bVar1;
  int var_4;
  
  bVar1 = 0;
  if (*(int *)((int)inf + 4) == *(int *)((int)sec->used_by_bfd + 0x2c)) {
                    /* WARNING: Load size is inaccurate */
    var_1 = *inf;
    var_2 = *(char **)((int)sec->used_by_bfd + 0x84);
    bVar1 = 1;
    if (var_1 != var_2) {
      if ((var_2 != (char *)0x0) && (var_1 != (char *)0x0)) {
        var_4 = var_3(var_2,var_1);
        return (uint)(var_4 == 0);
      }
      return 0;
    }
  }
  return bVar1;
}


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

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

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

{
  char *__s2;
  char *__s1;
  bool bVar1;
  int iVar2;
  
  bVar1 = false;
  if (param_3[1] == *(int *)(*(int *)(param_2 + 0xa4) + 0x2c)) {
    __s2 = (char *)*param_3;
    __s1 = *(char **)(*(int *)(param_2 + 0xa4) + 0x84);
    bVar1 = true;
    if (__s2 != __s1) {
      if ((__s1 != (char *)0x0) && (__s2 != (char *)0x0)) {
        iVar2 = strcmp(__s1,__s2);
        return iVar2 == 0;
      }
      return false;
    }
  }
  return bVar1;
}

