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

_Bool valid_progress_implementation_p(char *name)

{
  char *pcVar1;
  size_t __n;
  int iVar2;
  _Bool _Var3;
  
  pcVar1 = strchr(name,0x3a);
  if (pcVar1 == (char *)0x0) {
    __n = strlen(name);
  }
  else {
    __n = (int)pcVar1 - (int)name;
  }
  iVar2 = strncmp(implementations[0].name,name,__n);
  if (iVar2 == 0) {
    _Var3 = true;
  }
  else {
    iVar2 = strncmp(implementations[1].name,name,__n);
    _Var3 = iVar2 == 0;
  }
  return _Var3;
}



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

bool FUN_0003e620(char *param_1)

{
  char *pcVar1;
  size_t __n;
  int iVar2;
  bool bVar3;
  
  pcVar1 = strchr(param_1,0x3a);
  if (pcVar1 == (char *)0x0) {
    __n = strlen(param_1);
  }
  else {
    __n = (int)pcVar1 - (int)param_1;
  }
  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);
  if (iVar2 == 0) {
    bVar3 = true;
  }
  else {
    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);
    bVar3 = iVar2 == 0;
  }
  return bVar3;
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EDI,dword ptr [ESP + 0x10]
CALL 0x00019070
ADD EBX,0x625a4
SUB ESP,0x8
PUSH 0x3a
PUSH EDI
CALL 0x00016370
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0003e680
SUB EAX,EDI
MOV ESI,EAX
SUB ESP,0x4
PUSH ESI
PUSH EDI
PUSH dword ptr [EBX + 0x590]
CALL 0x00016d90
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0003e690
SUB ESP,0x4
PUSH ESI
PUSH EDI
PUSH dword ptr [EBX + 0x5ac]
CALL 0x00016d90
ADD ESP,0x10
TEST EAX,EAX
SETZ AL
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0xc
PUSH EDI
CALL 0x000168c0
ADD ESP,0x10
MOV ESI,EAX
JMP 0x0003e648
MOV EAX,0x1
JMP 0x0003e677
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_0003e620(char *param_1)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}\n\n" comment (function_definition "bool FUN_0003e620(char *param_1)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}" primitive_type (function_declarator "FUN_0003e620(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (expression_statement "pcVar1 = strchr(param_1,0x3a);" (assignment_expression "pcVar1 = strchr(param_1,0x3a)" identifier = (call_expression "strchr(param_1,0x3a)" identifier (argument_list "(param_1,0x3a)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __n = strlen(param_1);\n  }" { (expression_statement "__n = strlen(param_1);" (assignment_expression "__n = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) }) (else_clause "else {\n    __n = (int)pcVar1 - (int)param_1;\n  }" else (compound_statement "{\n    __n = (int)pcVar1 - (int)param_1;\n  }" { (expression_statement "__n = (int)pcVar1 - (int)param_1;" (assignment_expression "__n = (int)pcVar1 - (int)param_1" identifier = (binary_expression "(int)pcVar1 - (int)param_1" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);" (assignment_expression "iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n)" identifier = (call_expression "strncmp(PTR_DAT_000a1160,param_1,__n)" identifier (argument_list "(PTR_DAT_000a1160,param_1,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar3 = true;\n  }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" else (compound_statement "{\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" { (expression_statement "iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);" (assignment_expression "iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n)" identifier = (call_expression "strncmp(PTR_DAT_000a117c,param_1,__n)" identifier (argument_list "(PTR_DAT_000a117c,param_1,__n)" ( identifier , identifier , identifier )))) ;) (expression_statement "bVar3 = iVar2 == 0;" (assignment_expression "bVar3 = iVar2 == 0" identifier = (binary_expression "iVar2 == 0" identifier == number_literal)) ;) }))) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\n_Bool valid_progress_implementation_p(char *name)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  _Bool _Var3;\n  \n  pcVar1 = strchr(name,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(name);\n  }\n  else {\n    __n = (int)pcVar1 - (int)name;\n  }\n  iVar2 = strncmp(implementations[0].name,name,__n);\n  if (iVar2 == 0) {\n    _Var3 = true;\n  }\n  else {\n    iVar2 = strncmp(implementations[1].name,name,__n);\n    _Var3 = iVar2 == 0;\n  }\n  return _Var3;\n}\n\n" comment comment (function_definition "_Bool valid_progress_implementation_p(char *name)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  _Bool _Var3;\n  \n  pcVar1 = strchr(name,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(name);\n  }\n  else {\n    __n = (int)pcVar1 - (int)name;\n  }\n  iVar2 = strncmp(implementations[0].name,name,__n);\n  if (iVar2 == 0) {\n    _Var3 = true;\n  }\n  else {\n    iVar2 = strncmp(implementations[1].name,name,__n);\n    _Var3 = iVar2 == 0;\n  }\n  return _Var3;\n}" type_identifier (function_declarator "valid_progress_implementation_p(char *name)" identifier (parameter_list "(char *name)" ( (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  _Bool _Var3;\n  \n  pcVar1 = strchr(name,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(name);\n  }\n  else {\n    __n = (int)pcVar1 - (int)name;\n  }\n  iVar2 = strncmp(implementations[0].name,name,__n);\n  if (iVar2 == 0) {\n    _Var3 = true;\n  }\n  else {\n    iVar2 = strncmp(implementations[1].name,name,__n);\n    _Var3 = iVar2 == 0;\n  }\n  return _Var3;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "_Bool _Var3;" type_identifier identifier ;) (expression_statement "pcVar1 = strchr(name,0x3a);" (assignment_expression "pcVar1 = strchr(name,0x3a)" identifier = (call_expression "strchr(name,0x3a)" identifier (argument_list "(name,0x3a)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar1 == (char *)0x0) {\n    __n = strlen(name);\n  }\n  else {\n    __n = (int)pcVar1 - (int)name;\n  }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __n = strlen(name);\n  }" { (expression_statement "__n = strlen(name);" (assignment_expression "__n = strlen(name)" identifier = (call_expression "strlen(name)" identifier (argument_list "(name)" ( identifier )))) ;) }) (else_clause "else {\n    __n = (int)pcVar1 - (int)name;\n  }" else (compound_statement "{\n    __n = (int)pcVar1 - (int)name;\n  }" { (expression_statement "__n = (int)pcVar1 - (int)name;" (assignment_expression "__n = (int)pcVar1 - (int)name" identifier = (binary_expression "(int)pcVar1 - (int)name" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)name" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "iVar2 = strncmp(implementations[0].name,name,__n);" (assignment_expression "iVar2 = strncmp(implementations[0].name,name,__n)" identifier = (call_expression "strncmp(implementations[0].name,name,__n)" identifier (argument_list "(implementations[0].name,name,__n)" ( (field_expression "implementations[0].name" (subscript_expression "implementations[0]" identifier [ number_literal ]) . field_identifier) , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    _Var3 = true;\n  }\n  else {\n    iVar2 = strncmp(implementations[1].name,name,__n);\n    _Var3 = iVar2 == 0;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    _Var3 = true;\n  }" { (expression_statement "_Var3 = true;" (assignment_expression "_Var3 = true" identifier = true) ;) }) (else_clause "else {\n    iVar2 = strncmp(implementations[1].name,name,__n);\n    _Var3 = iVar2 == 0;\n  }" else (compound_statement "{\n    iVar2 = strncmp(implementations[1].name,name,__n);\n    _Var3 = iVar2 == 0;\n  }" { (expression_statement "iVar2 = strncmp(implementations[1].name,name,__n);" (assignment_expression "iVar2 = strncmp(implementations[1].name,name,__n)" identifier = (call_expression "strncmp(implementations[1].name,name,__n)" identifier (argument_list "(implementations[1].name,name,__n)" ( (field_expression "implementations[1].name" (subscript_expression "implementations[1]" identifier [ number_literal ]) . field_identifier) , identifier , identifier )))) ;) (expression_statement "_Var3 = iVar2 == 0;" (assignment_expression "_Var3 = iVar2 == 0" identifier = (binary_expression "iVar2 == 0" identifier == number_literal)) ;) }))) (return_statement "return _Var3;" return identifier ;) })))
(translation_unit "bool FUN_0003e620(char *param_1)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}\n\n" (function_definition "bool FUN_0003e620(char *param_1)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}" primitive_type (function_declarator "FUN_0003e620(char *param_1)" identifier (parameter_list "(char *param_1)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (expression_statement "pcVar1 = strchr(param_1,0x3a);" (assignment_expression "pcVar1 = strchr(param_1,0x3a)" identifier = (call_expression "strchr(param_1,0x3a)" identifier (argument_list "(param_1,0x3a)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __n = strlen(param_1);\n  }" { (expression_statement "__n = strlen(param_1);" (assignment_expression "__n = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) }) (else_clause "else {\n    __n = (int)pcVar1 - (int)param_1;\n  }" else (compound_statement "{\n    __n = (int)pcVar1 - (int)param_1;\n  }" { (expression_statement "__n = (int)pcVar1 - (int)param_1;" (assignment_expression "__n = (int)pcVar1 - (int)param_1" identifier = (binary_expression "(int)pcVar1 - (int)param_1" (cast_expression "(int)pcVar1" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (expression_statement "iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);" (assignment_expression "iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n)" identifier = (call_expression "strncmp(PTR_DAT_000a1160,param_1,__n)" identifier (argument_list "(PTR_DAT_000a1160,param_1,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    bVar3 = true;\n  }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" else (compound_statement "{\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" { (expression_statement "iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);" (assignment_expression "iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n)" identifier = (call_expression "strncmp(PTR_DAT_000a117c,param_1,__n)" identifier (argument_list "(PTR_DAT_000a117c,param_1,__n)" ( identifier , identifier , identifier )))) ;) (expression_statement "bVar3 = iVar2 == 0;" (assignment_expression "bVar3 = iVar2 == 0" identifier = (binary_expression "iVar2 == 0" identifier == number_literal)) ;) }))) (return_statement "return bVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }))) (return_statement return IDENT ;) })))
(function_definition "bool FUN_0003e620(char *param_1)\n\n{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}" (primitive_type "bool") (function_declarator "FUN_0003e620(char *param_1)" (identifier "FUN_0003e620") (parameter_list "(char *param_1)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  size_t __n;\n  int iVar2;\n  bool bVar3;\n  \n  pcVar1 = strchr(param_1,0x3a);\n  if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }\n  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);\n  if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }\n  return bVar3;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (expression_statement "pcVar1 = strchr(param_1,0x3a);" (assignment_expression "pcVar1 = strchr(param_1,0x3a)" (identifier "pcVar1") (= "=") (call_expression "strchr(param_1,0x3a)" (identifier "strchr") (argument_list "(param_1,0x3a)" (( "(") (identifier "param_1") (, ",") (number_literal "0x3a") () ")")))) (; ";")) (if_statement "if (pcVar1 == (char *)0x0) {\n    __n = strlen(param_1);\n  }\n  else {\n    __n = (int)pcVar1 - (int)param_1;\n  }" (if "if") (parenthesized_expression "(pcVar1 == (char *)0x0)" (( "(") (binary_expression "pcVar1 == (char *)0x0" (identifier "pcVar1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    __n = strlen(param_1);\n  }" ({ "{") (expression_statement "__n = strlen(param_1);" (assignment_expression "__n = strlen(param_1)" (identifier "__n") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n    __n = (int)pcVar1 - (int)param_1;\n  }" (else "else") (compound_statement "{\n    __n = (int)pcVar1 - (int)param_1;\n  }" ({ "{") (expression_statement "__n = (int)pcVar1 - (int)param_1;" (assignment_expression "__n = (int)pcVar1 - (int)param_1" (identifier "__n") (= "=") (binary_expression "(int)pcVar1 - (int)param_1" (cast_expression "(int)pcVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar1")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) (; ";")) (} "}")))) (expression_statement "iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);" (assignment_expression "iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n)" (identifier "iVar2") (= "=") (call_expression "strncmp(PTR_DAT_000a1160,param_1,__n)" (identifier "strncmp") (argument_list "(PTR_DAT_000a1160,param_1,__n)" (( "(") (identifier "PTR_DAT_000a1160") (, ",") (identifier "param_1") (, ",") (identifier "__n") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    bVar3 = true;\n  }\n  else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    bVar3 = true;\n  }" ({ "{") (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" (else "else") (compound_statement "{\n    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);\n    bVar3 = iVar2 == 0;\n  }" ({ "{") (expression_statement "iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);" (assignment_expression "iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n)" (identifier "iVar2") (= "=") (call_expression "strncmp(PTR_DAT_000a117c,param_1,__n)" (identifier "strncmp") (argument_list "(PTR_DAT_000a117c,param_1,__n)" (( "(") (identifier "PTR_DAT_000a117c") (, ",") (identifier "param_1") (, ",") (identifier "__n") () ")")))) (; ";")) (expression_statement "bVar3 = iVar2 == 0;" (assignment_expression "bVar3 = iVar2 == 0" (identifier "bVar3") (= "=") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) (; ";")) (} "}")))) (return_statement "return bVar3;" (return "return") (identifier "bVar3") (; ";")) (} "}")))

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

type_1 function_1(char *name)

{
  char *var_2;
  size_t __n;
  int var_5;
  type_1 _Var3;
  
  var_2 = var_1(name,0x3a);
  if (var_2 == (char *)0x0) {
    __n = var_3(name);
  }
  else {
    __n = (int)var_2 - (int)name;
  }
  var_5 = var_4(implementations[0].name,name,__n);
  if (var_5 == 0) {
    _Var3 = true;
  }
  else {
    var_5 = var_4(implementations[1].name,name,__n);
    _Var3 = var_5 == 0;
  }
  return _Var3;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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 MASKED(char *param_1)

{
  char *pcVar1;
  size_t __n;
  int iVar2;
  bool bVar3;
  
  pcVar1 = strchr(param_1,0x3a);
  if (pcVar1 == (char *)0x0) {
    __n = strlen(param_1);
  }
  else {
    __n = (int)pcVar1 - (int)param_1;
  }
  iVar2 = strncmp(PTR_DAT_000a1160,param_1,__n);
  if (iVar2 == 0) {
    bVar3 = true;
  }
  else {
    iVar2 = strncmp(PTR_DAT_000a117c,param_1,__n);
    bVar3 = iVar2 == 0;
  }
  return bVar3;
}

