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

void as_regex(void)

{
}



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

regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)

{
  char *__pattern;
  int iVar1;
  
  iVar1 = DAT_000d1700;
  if ((*param_1 & 0xff00) != 0x2100) {
    FUN_00092151();
    FUN_00094969();
    __pattern = (char *)FUN_0009295c();
    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);
    if (iVar1 != 0) {
      FUN_000b41c1();
    }
    FUN_000938f0();
    return param_2;
  }
  if (*(char *)(DAT_000d1700 + -8) != '\0') {
    return (regex_t *)param_1[3];
  }
  return (regex_t *)param_1[2];
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
CALL 0x00017640
ADD EBX,0x3ae4d
MOV ECX,EAX
MOV ESI,dword ptr [EBX + 0xce0]
MOV EAX,dword ptr [EAX]
AND EAX,0xff00
CMP EAX,0x2100
JNZ 0x00095c02
CMP byte ptr [ESI + -0x8],0x0
JZ 0x00095c6b
MOV EDI,dword ptr [ECX + 0xc]
MOV EAX,EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,EDX
MOV dword ptr [ESP + 0xc],ECX
MOV EAX,0x1
CALL 0x00092151
MOV EBP,EAX
MOV EDX,EAX
MOV ECX,dword ptr [ESP + 0xc]
MOV EAX,ECX
CALL 0x00094969
CALL 0x0009295c
MOV EDX,EAX
CMP byte ptr [ESI + -0x8],0x1
SBB ESI,ESI
AND ESI,0xfffffffe
ADD ESI,0x3
PUSH EAX
PUSH ESI
PUSH EDX
MOV dword ptr [ESP + 0x18],EDX
PUSH EDI
CALL 0x00017170
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00095c59
MOV EAX,EBP
CALL 0x000938f0
MOV EAX,EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
AND ESI,0xfffffffe
MOV ECX,ESI
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,EDI
CALL 0x000b41c1
JMP 0x00095c48
MOV EDI,dword ptr [ECX + 0x8]
MOV EAX,EDI
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nregex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)\n\n{\n  char *__pattern;\n  int iVar1;\n  \n  iVar1 = DAT_000d1700;\n  if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }\n  if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }\n  return (regex_t *)param_1[2];\n}\n\n" comment (ERROR "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)" (binary_expression "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00095bc7(uint *param_1,regex_t *param_2)" identifier (argument_list "(uint *param_1,regex_t *param_2)" ( (binary_expression "uint *param_1" identifier * identifier) , (binary_expression "regex_t *param_2" identifier * identifier) ))))) (compound_statement "{\n  char *__pattern;\n  int iVar1;\n  \n  iVar1 = DAT_000d1700;\n  if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }\n  if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }\n  return (regex_t *)param_1[2];\n}" { (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = DAT_000d1700;" (assignment_expression "iVar1 = DAT_000d1700" identifier = identifier) ;) (if_statement "if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }" if (parenthesized_expression "((*param_1 & 0xff00) != 0x2100)" ( (binary_expression "(*param_1 & 0xff00) != 0x2100" (parenthesized_expression "(*param_1 & 0xff00)" ( (binary_expression "*param_1 & 0xff00" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }" { (expression_statement "FUN_00092151();" (call_expression "FUN_00092151()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00094969();" (call_expression "FUN_00094969()" identifier (argument_list "()" ( ))) ;) (expression_statement "__pattern = (char *)FUN_0009295c();" (assignment_expression "__pattern = (char *)FUN_0009295c()" identifier = (cast_expression "(char *)FUN_0009295c()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0009295c()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);" (assignment_expression "iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" identifier = (call_expression "regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" identifier (argument_list "(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" ( identifier , identifier , (binary_expression "(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe)" ( (binary_expression "-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe" (unary_expression "-(uint)(*(char *)(iVar1 + -8) == '\0')" - (call_expression "(uint)(*(char *)(iVar1 + -8) == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(iVar1 + -8) == '\0')" ( (binary_expression "*(char *)(iVar1 + -8) == '\0'" (pointer_expression "*(char *)(iVar1 + -8)" * (cast_expression "(char *)(iVar1 + -8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -8)" ( (binary_expression "iVar1 + -8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) )) + number_literal) )))) ;) (if_statement "if (iVar1 != 0) {\n      FUN_000b41c1();\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_000b41c1();\n    }" { (expression_statement "FUN_000b41c1();" (call_expression "FUN_000b41c1()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_000938f0();" (call_expression "FUN_000938f0()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_2;" return identifier ;) })) (if_statement "if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }" if (parenthesized_expression "(*(char *)(DAT_000d1700 + -8) != '\0')" ( (binary_expression "*(char *)(DAT_000d1700 + -8) != '\0'" (pointer_expression "*(char *)(DAT_000d1700 + -8)" * (cast_expression "(char *)(DAT_000d1700 + -8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000d1700 + -8)" ( (binary_expression "DAT_000d1700 + -8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (regex_t *)param_1[3];\n  }" { (return_statement "return (regex_t *)param_1[3];" return (cast_expression "(regex_t *)param_1[3]" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) })) (return_statement "return (regex_t *)param_1[2];" return (cast_expression "(regex_t *)param_1[2]" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid as_regex(void)\n\n{\n}\n\n" comment (function_definition "void as_regex(void)\n\n{\n}" primitive_type (function_declarator "as_regex(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n}" { })))
(translation_unit "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)\n\n{\n  char *__pattern;\n  int iVar1;\n  \n  iVar1 = DAT_000d1700;\n  if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }\n  if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }\n  return (regex_t *)param_1[2];\n}\n\n" (ERROR "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)" (binary_expression "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00095bc7(uint *param_1,regex_t *param_2)" identifier (argument_list "(uint *param_1,regex_t *param_2)" ( (binary_expression "uint *param_1" identifier * identifier) , (binary_expression "regex_t *param_2" identifier * identifier) ))))) (compound_statement "{\n  char *__pattern;\n  int iVar1;\n  \n  iVar1 = DAT_000d1700;\n  if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }\n  if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }\n  return (regex_t *)param_1[2];\n}" { (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = DAT_000d1700;" (assignment_expression "iVar1 = DAT_000d1700" identifier = identifier) ;) (if_statement "if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }" if (parenthesized_expression "((*param_1 & 0xff00) != 0x2100)" ( (binary_expression "(*param_1 & 0xff00) != 0x2100" (parenthesized_expression "(*param_1 & 0xff00)" ( (binary_expression "*param_1 & 0xff00" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }" { (expression_statement "FUN_00092151();" (call_expression "FUN_00092151()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00094969();" (call_expression "FUN_00094969()" identifier (argument_list "()" ( ))) ;) (expression_statement "__pattern = (char *)FUN_0009295c();" (assignment_expression "__pattern = (char *)FUN_0009295c()" identifier = (cast_expression "(char *)FUN_0009295c()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0009295c()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);" (assignment_expression "iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" identifier = (call_expression "regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" identifier (argument_list "(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" ( identifier , identifier , (binary_expression "(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe)" ( (binary_expression "-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe" (unary_expression "-(uint)(*(char *)(iVar1 + -8) == '\0')" - (call_expression "(uint)(*(char *)(iVar1 + -8) == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(iVar1 + -8) == '\0')" ( (binary_expression "*(char *)(iVar1 + -8) == '\0'" (pointer_expression "*(char *)(iVar1 + -8)" * (cast_expression "(char *)(iVar1 + -8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + -8)" ( (binary_expression "iVar1 + -8" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )))) & number_literal) )) + number_literal) )))) ;) (if_statement "if (iVar1 != 0) {\n      FUN_000b41c1();\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_000b41c1();\n    }" { (expression_statement "FUN_000b41c1();" (call_expression "FUN_000b41c1()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_000938f0();" (call_expression "FUN_000938f0()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_2;" return identifier ;) })) (if_statement "if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }" if (parenthesized_expression "(*(char *)(DAT_000d1700 + -8) != '\0')" ( (binary_expression "*(char *)(DAT_000d1700 + -8) != '\0'" (pointer_expression "*(char *)(DAT_000d1700 + -8)" * (cast_expression "(char *)(DAT_000d1700 + -8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000d1700 + -8)" ( (binary_expression "DAT_000d1700 + -8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (regex_t *)param_1[3];\n  }" { (return_statement "return (regex_t *)param_1[3];" return (cast_expression "(regex_t *)param_1[3]" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) })) (return_statement "return (regex_t *)param_1[2];" return (cast_expression "(regex_t *)param_1[2]" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (binary_expression IDENT * IDENT) , (binary_expression IDENT * IDENT) ))))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )))) & LIT) )) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ;) }))
(ERROR "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)" (binary_expression "regex_t * __regparm3 FUN_00095bc7(uint *param_1,regex_t *param_2)" (identifier "regex_t") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00095bc7(uint *param_1,regex_t *param_2)" (identifier "FUN_00095bc7") (argument_list "(uint *param_1,regex_t *param_2)" (( "(") (binary_expression "uint *param_1" (identifier "uint") (* "*") (identifier "param_1")) (, ",") (binary_expression "regex_t *param_2" (identifier "regex_t") (* "*") (identifier "param_2")) () ")"))))) (compound_statement "{\n  char *__pattern;\n  int iVar1;\n  \n  iVar1 = DAT_000d1700;\n  if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }\n  if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }\n  return (regex_t *)param_1[2];\n}" ({ "{") (declaration "char *__pattern;" (primitive_type "char") (pointer_declarator "*__pattern" (* "*") (identifier "__pattern")) (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (expression_statement "iVar1 = DAT_000d1700;" (assignment_expression "iVar1 = DAT_000d1700" (identifier "iVar1") (= "=") (identifier "DAT_000d1700")) (; ";")) (if_statement "if ((*param_1 & 0xff00) != 0x2100) {\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }" (if "if") (parenthesized_expression "((*param_1 & 0xff00) != 0x2100)" (( "(") (binary_expression "(*param_1 & 0xff00) != 0x2100" (parenthesized_expression "(*param_1 & 0xff00)" (( "(") (binary_expression "*param_1 & 0xff00" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0xff00")) () ")")) (!= "!=") (number_literal "0x2100")) () ")")) (compound_statement "{\n    FUN_00092151();\n    FUN_00094969();\n    __pattern = (char *)FUN_0009295c();\n    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);\n    if (iVar1 != 0) {\n      FUN_000b41c1();\n    }\n    FUN_000938f0();\n    return param_2;\n  }" ({ "{") (expression_statement "FUN_00092151();" (call_expression "FUN_00092151()" (identifier "FUN_00092151") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00094969();" (call_expression "FUN_00094969()" (identifier "FUN_00094969") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "__pattern = (char *)FUN_0009295c();" (assignment_expression "__pattern = (char *)FUN_0009295c()" (identifier "__pattern") (= "=") (cast_expression "(char *)FUN_0009295c()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0009295c()" (identifier "FUN_0009295c") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);" (assignment_expression "iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" (identifier "iVar1") (= "=") (call_expression "regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" (identifier "regcomp") (argument_list "(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3)" (( "(") (identifier "param_2") (, ",") (identifier "__pattern") (, ",") (binary_expression "(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3" (parenthesized_expression "(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe)" (( "(") (binary_expression "-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe" (unary_expression "-(uint)(*(char *)(iVar1 + -8) == '\0')" (- "-") (call_expression "(uint)(*(char *)(iVar1 + -8) == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(iVar1 + -8) == '\0')" (( "(") (binary_expression "*(char *)(iVar1 + -8) == '\0'" (pointer_expression "*(char *)(iVar1 + -8)" (* "*") (cast_expression "(char *)(iVar1 + -8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + -8)" (( "(") (binary_expression "iVar1 + -8" (identifier "iVar1") (+ "+") (number_literal "-8")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (& "&") (number_literal "0xfffffffe")) () ")")) (+ "+") (number_literal "3")) () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n      FUN_000b41c1();\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000b41c1();\n    }" ({ "{") (expression_statement "FUN_000b41c1();" (call_expression "FUN_000b41c1()" (identifier "FUN_000b41c1") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_000938f0();" (call_expression "FUN_000938f0()" (identifier "FUN_000938f0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (if_statement "if (*(char *)(DAT_000d1700 + -8) != '\0') {\n    return (regex_t *)param_1[3];\n  }" (if "if") (parenthesized_expression "(*(char *)(DAT_000d1700 + -8) != '\0')" (( "(") (binary_expression "*(char *)(DAT_000d1700 + -8) != '\0'" (pointer_expression "*(char *)(DAT_000d1700 + -8)" (* "*") (cast_expression "(char *)(DAT_000d1700 + -8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000d1700 + -8)" (( "(") (binary_expression "DAT_000d1700 + -8" (identifier "DAT_000d1700") (+ "+") (number_literal "-8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return (regex_t *)param_1[3];\n  }" ({ "{") (return_statement "return (regex_t *)param_1[3];" (return "return") (cast_expression "(regex_t *)param_1[3]" (( "(") (type_descriptor "regex_t *" (type_identifier "regex_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (} "}"))) (return_statement "return (regex_t *)param_1[2];" (return "return") (cast_expression "(regex_t *)param_1[2]" (( "(") (type_descriptor "regex_t *" (type_identifier "regex_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}"))

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

void function_1(void)

{
}


(translation_unit (ERROR (binary_expression left: (identifier) (ERROR (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier)))))) (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (char_literal (escape_sequence)))))) right: (number_literal))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (identifier)))) (if_statement condition: (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: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))

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

regex_t * __regparm3 MASKED(uint *param_1,regex_t *param_2)

{
  char *__pattern;
  int iVar1;
  
  iVar1 = DAT_000d1700;
  if ((*param_1 & 0xff00) != 0x2100) {
    FUN_00092151();
    FUN_00094969();
    __pattern = (char *)FUN_0009295c();
    iVar1 = regcomp(param_2,__pattern,(-(uint)(*(char *)(iVar1 + -8) == '\0') & 0xfffffffe) + 3);
    if (iVar1 != 0) {
      FUN_000b41c1();
    }
    FUN_000938f0();
    return param_2;
  }
  if (*(char *)(DAT_000d1700 + -8) != '\0') {
    return (regex_t *)param_1[3];
  }
  return (regex_t *)param_1[2];
}

