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

int inet_addr_match(inet_prefix *a,inet_prefix *b,int bits)

{
}



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

uint __regparm3 FUN_0004d2d9(int param_1,int param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  
  iVar3 = (int)param_3 >> 5;
  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))
  {
    return 0xffffffff;
  }
  if ((param_3 & 0x1f) == 0) {
    return 0;
  }
  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);
  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &
                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))
               != 0);
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
CALL 0x00017650
ADD EBX,0x8e73b
LEA EDI,[EAX + 0x4]
LEA ESI,[EDX + 0x4]
MOV EBP,ECX
SAR EBP,0x5
JZ 0x0004d326
MOV dword ptr [ESP + 0xc],ECX
PUSH EAX
LEA EAX,[EBP*0x4 + 0x0]
PUSH EAX
PUSH ESI
PUSH EDI
CALL 0x00016390
ADD ESP,0x10
MOV EDX,0xffffffff
TEST EAX,EAX
MOV ECX,dword ptr [ESP + 0xc]
JZ 0x0004d326
MOV EAX,EDX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,ECX
AND EDX,0x1f
JZ 0x0004d31c
MOV ECX,0x20
SUB ECX,EDX
MOV EBX,0xffffffff
SHL EBX,CL
BSWAP EBX
MOV EAX,dword ptr [EDI + EBP*0x4]
XOR EAX,dword ptr [ESI + EBP*0x4]
XOR EDX,EDX
TEST EAX,EBX
SETNZ DL
MOV EAX,EDX
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\nuint __regparm3 FUN_0004d2d9(int param_1,int param_2,uint param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}\n\n" comment (function_definition "uint __regparm3 FUN_0004d2d9(int param_1,int param_2,uint param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0004d2d9(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "iVar3 = (int)param_3 >> 5;" (assignment_expression "iVar3 = (int)param_3 >> 5" identifier = (binary_expression "(int)param_3 >> 5" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }" if (parenthesized_expression "((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))" ( (binary_expression "(iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0" (assignment_expression "iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" identifier = (call_expression "FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" identifier (argument_list "(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" ( (binary_expression "param_1 + 4" identifier + number_literal) , (binary_expression "param_2 + 4" identifier + number_literal) , (binary_expression "iVar3 * 4" identifier * number_literal) , identifier )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }" if (parenthesized_expression "((param_3 & 0x1f) == 0)" ( (binary_expression "(param_3 & 0x1f) == 0" (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);" (assignment_expression "uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f)" identifier = (binary_expression "-1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f)" number_literal << (parenthesized_expression "(0x20U - (char)(param_3 & 0x1f) & 0x1f)" ( (binary_expression "0x20U - (char)(param_3 & 0x1f) & 0x1f" (binary_expression "0x20U - (char)(param_3 & 0x1f)" number_literal - (cast_expression "(char)(param_3 & 0x1f)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )))) & number_literal) )))) ;) (return_statement "return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);" return (call_expression "(uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0)" ( (binary_expression "((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0" (parenthesized_expression "((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))" ( (binary_expression "(*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (parenthesized_expression "(*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4))" ( (binary_expression "*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)" (pointer_expression "*(uint *)(param_1 + 4 + iVar3 * 4)" * (cast_expression "(uint *)(param_1 + 4 + iVar3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4 + iVar3 * 4)" ( (binary_expression "param_1 + 4 + iVar3 * 4" (binary_expression "param_1 + 4" identifier + number_literal) + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_2 + 4 + iVar3 * 4)" * (cast_expression "(uint *)(param_2 + 4 + iVar3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4 + iVar3 * 4)" ( (binary_expression "param_2 + 4 + iVar3 * 4" (binary_expression "param_2 + 4" identifier + number_literal) + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) )) & (parenthesized_expression "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" ( (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) ))) )) != number_literal) ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint inet_addr_match(inet_prefix *a,inet_prefix *b,int bits)\n\n{\n}\n\n" comment (function_definition "int inet_addr_match(inet_prefix *a,inet_prefix *b,int bits)\n\n{\n}" primitive_type (function_declarator "inet_addr_match(inet_prefix *a,inet_prefix *b,int bits)" identifier (parameter_list "(inet_prefix *a,inet_prefix *b,int bits)" ( (parameter_declaration "inet_prefix *a" type_identifier (pointer_declarator "*a" * identifier)) , (parameter_declaration "inet_prefix *b" type_identifier (pointer_declarator "*b" * identifier)) , (parameter_declaration "int bits" primitive_type identifier) ))) (compound_statement "{\n}" { })))
(translation_unit "uint __regparm3 FUN_0004d2d9(int param_1,int param_2,uint param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}\n\n" (function_definition "uint __regparm3 FUN_0004d2d9(int param_1,int param_2,uint param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_0004d2d9(int param_1,int param_2,uint param_3)" identifier (parameter_list "(int param_1,int param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (expression_statement "iVar3 = (int)param_3 >> 5;" (assignment_expression "iVar3 = (int)param_3 >> 5" identifier = (binary_expression "(int)param_3 >> 5" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }" if (parenthesized_expression "((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))" ( (binary_expression "(iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0)" ( (comma_expression "iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0" (assignment_expression "iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" identifier = (call_expression "FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" identifier (argument_list "(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" ( (binary_expression "param_1 + 4" identifier + number_literal) , (binary_expression "param_2 + 4" identifier + number_literal) , (binary_expression "iVar3 * 4" identifier * number_literal) , identifier )))) , (binary_expression "iVar1 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    return 0xffffffff;\n  }" { (return_statement "return 0xffffffff;" return number_literal ;) })) (if_statement "if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }" if (parenthesized_expression "((param_3 & 0x1f) == 0)" ( (binary_expression "(param_3 & 0x1f) == 0" (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);" (assignment_expression "uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f)" identifier = (binary_expression "-1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f)" number_literal << (parenthesized_expression "(0x20U - (char)(param_3 & 0x1f) & 0x1f)" ( (binary_expression "0x20U - (char)(param_3 & 0x1f) & 0x1f" (binary_expression "0x20U - (char)(param_3 & 0x1f)" number_literal - (cast_expression "(char)(param_3 & 0x1f)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )))) & number_literal) )))) ;) (return_statement "return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);" return (call_expression "(uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0)" ( (binary_expression "((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0" (parenthesized_expression "((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))" ( (binary_expression "(*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (parenthesized_expression "(*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4))" ( (binary_expression "*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)" (pointer_expression "*(uint *)(param_1 + 4 + iVar3 * 4)" * (cast_expression "(uint *)(param_1 + 4 + iVar3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4 + iVar3 * 4)" ( (binary_expression "param_1 + 4 + iVar3 * 4" (binary_expression "param_1 + 4" identifier + number_literal) + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_2 + 4 + iVar3 * 4)" * (cast_expression "(uint *)(param_2 + 4 + iVar3 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4 + iVar3 * 4)" ( (binary_expression "param_2 + 4 + iVar3 * 4" (binary_expression "param_2 + 4" identifier + number_literal) + (binary_expression "iVar3 * 4" identifier * number_literal)) ))))) )) & (parenthesized_expression "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" ( (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal)) ))) )) != number_literal) ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression IDENT * LIT) , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) & LIT) )))) ;) (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) )) & (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) ))) )) != LIT) ))) ;) })))
(function_definition "uint __regparm3 FUN_0004d2d9(int param_1,int param_2,uint param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0004d2d9(int param_1,int param_2,uint param_3)" (identifier "FUN_0004d2d9") (parameter_list "(int param_1,int param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  \n  iVar3 = (int)param_3 >> 5;\n  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }\n  if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }\n  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);\n  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (expression_statement "iVar3 = (int)param_3 >> 5;" (assignment_expression "iVar3 = (int)param_3 >> 5" (identifier "iVar3") (= "=") (binary_expression "(int)param_3 >> 5" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))\n  {\n    return 0xffffffff;\n  }" (if "if") (parenthesized_expression "((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))" (( "(") (binary_expression "(iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0)" (( "(") (comma_expression "iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0" (assignment_expression "iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" (identifier "iVar1") (= "=") (call_expression "FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" (identifier "FUN_00016390") (argument_list "(param_1 + 4,param_2 + 4,iVar3 * 4,param_1)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (, ",") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) (, ",") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4")) (, ",") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    return 0xffffffff;\n  }" ({ "{") (return_statement "return 0xffffffff;" (return "return") (number_literal "0xffffffff") (; ";")) (} "}"))) (if_statement "if ((param_3 & 0x1f) == 0) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((param_3 & 0x1f) == 0)" (( "(") (binary_expression "(param_3 & 0x1f) == 0" (parenthesized_expression "(param_3 & 0x1f)" (( "(") (binary_expression "param_3 & 0x1f" (identifier "param_3") (& "&") (number_literal "0x1f")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);" (assignment_expression "uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f)" (identifier "uVar2") (= "=") (binary_expression "-1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(0x20U - (char)(param_3 & 0x1f) & 0x1f)" (( "(") (binary_expression "0x20U - (char)(param_3 & 0x1f) & 0x1f" (binary_expression "0x20U - (char)(param_3 & 0x1f)" (number_literal "0x20U") (- "-") (cast_expression "(char)(param_3 & 0x1f)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(param_3 & 0x1f)" (( "(") (binary_expression "param_3 & 0x1f" (identifier "param_3") (& "&") (number_literal "0x1f")) () ")")))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (return_statement "return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0);" (return "return") (call_expression "(uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0)" (( "(") (binary_expression "((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))\n               != 0" (parenthesized_expression "((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))" (( "(") (binary_expression "(*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &\n                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (parenthesized_expression "(*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4))" (( "(") (binary_expression "*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)" (pointer_expression "*(uint *)(param_1 + 4 + iVar3 * 4)" (* "*") (cast_expression "(uint *)(param_1 + 4 + iVar3 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4 + iVar3 * 4)" (( "(") (binary_expression "param_1 + 4 + iVar3 * 4" (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(param_2 + 4 + iVar3 * 4)" (* "*") (cast_expression "(uint *)(param_2 + 4 + iVar3 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4 + iVar3 * 4)" (( "(") (binary_expression "param_2 + 4 + iVar3 * 4" (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar3 * 4" (identifier "iVar3") (* "*") (number_literal "4"))) () ")"))))) () ")")) (& "&") (parenthesized_expression "(uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18)" (( "(") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18"))) () ")"))) () ")")) (!= "!=") (number_literal "0")) () ")"))) (; ";")) (} "}")))

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

int function_1(type_1 *a,type_1 *b,int bits)

{
}


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

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

uint __regparm3 MASKED(int param_1,int param_2,uint param_3)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  
  iVar3 = (int)param_3 >> 5;
  if ((iVar3 != 0) && (iVar1 = FUN_00016390(param_1 + 4,param_2 + 4,iVar3 * 4,param_1), iVar1 != 0))
  {
    return 0xffffffff;
  }
  if ((param_3 & 0x1f) == 0) {
    return 0;
  }
  uVar2 = -1 << (0x20U - (char)(param_3 & 0x1f) & 0x1f);
  return (uint)(((*(uint *)(param_1 + 4 + iVar3 * 4) ^ *(uint *)(param_2 + 4 + iVar3 * 4)) &
                (uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18))
               != 0);
}

