
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void __regparm3 check_selection(Terminal *term,pos from,pos to)

{
  int iVar1;
  int in_ECX;
  int in_EDX;
  
  iVar1 = (term->selend).y;
  if (((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))
     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||
         ((iVar1 == from.y && ((term->selstart).x < from.x)))))) {
    term->selstate = ADDRTYPE_UNSPEC;
    (term->selend).y = 0;
    (term->selend).x = 0;
    (term->selstart).y = 0;
    (term->selstart).x = 0;
    return;
  }
  return;
}



void __regparm3 FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xe5c);
  if (((iVar1 != param_2 && param_2 <= iVar1) ||
      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&
     ((*(int *)(param_1 + 0xe54) < param_4 ||
      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {
    *(undefined4 *)(param_1 + 0xe48) = 0;
    *(undefined4 *)(param_1 + 0xe5c) = 0;
    *(undefined4 *)(param_1 + 0xe60) = 0;
    *(undefined4 *)(param_1 + 0xe54) = 0;
    *(undefined4 *)(param_1 + 0xe58) = 0;
    return;
  }
  return;
}


PUSH ESI
PUSH EBX
MOV EBX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [ESP + 0x10]
CMP dword ptr [EAX + 0xe5c],EDX
JG 0x00039290
JZ 0x00039280
POP EBX
POP ESI
RET
CMP dword ptr [EAX + 0xe60],ECX
JLE 0x00039274
LEA ESI,[ESI]
NOP
CMP dword ptr [EAX + 0xe54],EBX
JGE 0x000392d0
MOV dword ptr [EAX + 0xe48],0x0
POP EBX
MOV dword ptr [EAX + 0xe5c],0x0
POP ESI
MOV dword ptr [EAX + 0xe60],0x0
MOV dword ptr [EAX + 0xe54],0x0
MOV dword ptr [EAX + 0xe58],0x0
RET
JNZ 0x00039274
CMP dword ptr [EAX + 0xe58],ESI
JGE 0x00039274
JMP 0x00039298
(translation_unit "void __regparm3 FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(param_1 + 0xe5c);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xe5c)" identifier = (pointer_expression "*(int *)(param_1 + 0xe5c)" * (cast_expression "(int *)(param_1 + 0xe5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe5c)" ( (binary_expression "param_1 + 0xe5c" identifier + number_literal) ))))) ;) (if_statement "if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }" if (parenthesized_expression "(((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))))))" ( (binary_expression "((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))" (parenthesized_expression "((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60)))))" ( (binary_expression "(iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))" (parenthesized_expression "(iVar1 != param_2 && param_2 <= iVar1)" ( (binary_expression "iVar1 != param_2 && param_2 <= iVar1" (binary_expression "iVar1 != param_2" identifier != identifier) && (binary_expression "param_2 <= iVar1" identifier <= identifier)) )) || (parenthesized_expression "((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))" ( (parenthesized_expression "(iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60)))" ( (binary_expression "iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))" (binary_expression "iVar1 == param_2" identifier == identifier) && (parenthesized_expression "(param_3 < *(int *)(param_1 + 0xe60))" ( (binary_expression "param_3 < *(int *)(param_1 + 0xe60)" identifier < (pointer_expression "*(int *)(param_1 + 0xe60)" * (cast_expression "(int *)(param_1 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe60)" ( (binary_expression "param_1 + 0xe60" identifier + number_literal) ))))) ))) )) ))) )) && (parenthesized_expression "((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))" ( (parenthesized_expression "(*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))))" ( (binary_expression "*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))" (binary_expression "*(int *)(param_1 + 0xe54) < param_4" (pointer_expression "*(int *)(param_1 + 0xe54)" * (cast_expression "(int *)(param_1 + 0xe54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe54)" ( (binary_expression "param_1 + 0xe54" identifier + number_literal) )))) < identifier) || (parenthesized_expression "((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))" ( (parenthesized_expression "(*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))" ( (binary_expression "*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)" (binary_expression "*(int *)(param_1 + 0xe54) == param_4" (pointer_expression "*(int *)(param_1 + 0xe54)" * (cast_expression "(int *)(param_1 + 0xe54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe54)" ( (binary_expression "param_1 + 0xe54" identifier + number_literal) )))) == identifier) && (parenthesized_expression "(*(int *)(param_1 + 0xe58) < param_5)" ( (binary_expression "*(int *)(param_1 + 0xe58) < param_5" (pointer_expression "*(int *)(param_1 + 0xe58)" * (cast_expression "(int *)(param_1 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe58)" ( (binary_expression "param_1 + 0xe58" identifier + number_literal) )))) < identifier) ))) )) ))) )) ))) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0xe48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe48) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe48)" * (cast_expression "(undefined4 *)(param_1 + 0xe48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe48)" ( (binary_expression "param_1 + 0xe48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe5c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe5c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe5c)" * (cast_expression "(undefined4 *)(param_1 + 0xe5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe5c)" ( (binary_expression "param_1 + 0xe5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe60) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe60) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe60)" * (cast_expression "(undefined4 *)(param_1 + 0xe60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe60)" ( (binary_expression "param_1 + 0xe60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe54) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe54) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe54)" * (cast_expression "(undefined4 *)(param_1 + 0xe54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe54)" ( (binary_expression "param_1 + 0xe54" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe58) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe58) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe58)" * (cast_expression "(undefined4 *)(param_1 + 0xe58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe58)" ( (binary_expression "param_1 + 0xe58" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid __regparm3 check_selection(Terminal *term,pos from,pos to)\n\n{\n  int iVar1;\n  int in_ECX;\n  int in_EDX;\n  \n  iVar1 = (term->selend).y;\n  if (((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))\n     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))))) {\n    term->selstate = ADDRTYPE_UNSPEC;\n    (term->selend).y = 0;\n    (term->selend).x = 0;\n    (term->selstart).y = 0;\n    (term->selstart).x = 0;\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void __regparm3 check_selection(Terminal *term,pos from,pos to)\n\n{\n  int iVar1;\n  int in_ECX;\n  int in_EDX;\n  \n  iVar1 = (term->selend).y;\n  if (((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))\n     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))))) {\n    term->selstate = ADDRTYPE_UNSPEC;\n    (term->selend).y = 0;\n    (term->selend).x = 0;\n    (term->selstart).y = 0;\n    (term->selstart).x = 0;\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "check_selection(Terminal *term,pos from,pos to)" identifier (parameter_list "(Terminal *term,pos from,pos to)" ( (parameter_declaration "Terminal *term" type_identifier (pointer_declarator "*term" * identifier)) , (parameter_declaration "pos from" type_identifier identifier) , (parameter_declaration "pos to" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  int in_ECX;\n  int in_EDX;\n  \n  iVar1 = (term->selend).y;\n  if (((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))\n     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))))) {\n    term->selstate = ADDRTYPE_UNSPEC;\n    (term->selend).y = 0;\n    (term->selend).x = 0;\n    (term->selstart).y = 0;\n    (term->selstart).x = 0;\n    return;\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int in_ECX;" primitive_type identifier ;) (declaration "int in_EDX;" primitive_type identifier ;) (expression_statement "iVar1 = (term->selend).y;" (assignment_expression "iVar1 = (term->selend).y" identifier = (field_expression "(term->selend).y" (parenthesized_expression "(term->selend)" ( (field_expression "term->selend" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))\n     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))))) {\n    term->selstate = ADDRTYPE_UNSPEC;\n    (term->selend).y = 0;\n    (term->selend).x = 0;\n    (term->selstart).y = 0;\n    (term->selstart).x = 0;\n    return;\n  }" if (parenthesized_expression "(((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))\n     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x))))))" ( (binary_expression "((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))\n     && ((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))))" (parenthesized_expression "((iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x))))" ( (binary_expression "(iVar1 != in_EDX && in_EDX <= iVar1) || ((iVar1 == in_EDX && (in_ECX < (term->selend).x)))" (parenthesized_expression "(iVar1 != in_EDX && in_EDX <= iVar1)" ( (binary_expression "iVar1 != in_EDX && in_EDX <= iVar1" (binary_expression "iVar1 != in_EDX" identifier != identifier) && (binary_expression "in_EDX <= iVar1" identifier <= identifier)) )) || (parenthesized_expression "((iVar1 == in_EDX && (in_ECX < (term->selend).x)))" ( (parenthesized_expression "(iVar1 == in_EDX && (in_ECX < (term->selend).x))" ( (binary_expression "iVar1 == in_EDX && (in_ECX < (term->selend).x)" (binary_expression "iVar1 == in_EDX" identifier == identifier) && (parenthesized_expression "(in_ECX < (term->selend).x)" ( (binary_expression "in_ECX < (term->selend).x" identifier < (field_expression "(term->selend).x" (parenthesized_expression "(term->selend)" ( (field_expression "term->selend" identifier -> field_identifier) )) . field_identifier)) ))) )) ))) )) && (parenthesized_expression "((iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))))" ( (parenthesized_expression "(iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x))))" ( (comma_expression "iVar1 = (term->selstart).y, iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))" (assignment_expression "iVar1 = (term->selstart).y" identifier = (field_expression "(term->selstart).y" (parenthesized_expression "(term->selstart)" ( (field_expression "term->selstart" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "iVar1 < from.y ||\n         ((iVar1 == from.y && ((term->selstart).x < from.x)))" (binary_expression "iVar1 < from.y" identifier < (field_expression "from.y" identifier . field_identifier)) || (parenthesized_expression "((iVar1 == from.y && ((term->selstart).x < from.x)))" ( (parenthesized_expression "(iVar1 == from.y && ((term->selstart).x < from.x))" ( (binary_expression "iVar1 == from.y && ((term->selstart).x < from.x)" (binary_expression "iVar1 == from.y" identifier == (field_expression "from.y" identifier . field_identifier)) && (parenthesized_expression "((term->selstart).x < from.x)" ( (binary_expression "(term->selstart).x < from.x" (field_expression "(term->selstart).x" (parenthesized_expression "(term->selstart)" ( (field_expression "term->selstart" identifier -> field_identifier) )) . field_identifier) < (field_expression "from.x" identifier . field_identifier)) ))) )) )))) )) ))) )) (compound_statement "{\n    term->selstate = ADDRTYPE_UNSPEC;\n    (term->selend).y = 0;\n    (term->selend).x = 0;\n    (term->selstart).y = 0;\n    (term->selstart).x = 0;\n    return;\n  }" { (expression_statement "term->selstate = ADDRTYPE_UNSPEC;" (assignment_expression "term->selstate = ADDRTYPE_UNSPEC" (field_expression "term->selstate" identifier -> field_identifier) = identifier) ;) (expression_statement "(term->selend).y = 0;" (assignment_expression "(term->selend).y = 0" (field_expression "(term->selend).y" (parenthesized_expression "(term->selend)" ( (field_expression "term->selend" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(term->selend).x = 0;" (assignment_expression "(term->selend).x = 0" (field_expression "(term->selend).x" (parenthesized_expression "(term->selend)" ( (field_expression "term->selend" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(term->selstart).y = 0;" (assignment_expression "(term->selstart).y = 0" (field_expression "(term->selstart).y" (parenthesized_expression "(term->selstart)" ( (field_expression "term->selstart" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(term->selstart).x = 0;" (assignment_expression "(term->selstart).x = 0" (field_expression "(term->selstart).x" (parenthesized_expression "(term->selstart)" ( (field_expression "term->selstart" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(param_1 + 0xe5c);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xe5c)" identifier = (pointer_expression "*(int *)(param_1 + 0xe5c)" * (cast_expression "(int *)(param_1 + 0xe5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe5c)" ( (binary_expression "param_1 + 0xe5c" identifier + number_literal) ))))) ;) (if_statement "if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }" if (parenthesized_expression "(((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))))))" ( (binary_expression "((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))" (parenthesized_expression "((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60)))))" ( (binary_expression "(iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))" (parenthesized_expression "(iVar1 != param_2 && param_2 <= iVar1)" ( (binary_expression "iVar1 != param_2 && param_2 <= iVar1" (binary_expression "iVar1 != param_2" identifier != identifier) && (binary_expression "param_2 <= iVar1" identifier <= identifier)) )) || (parenthesized_expression "((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))" ( (parenthesized_expression "(iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60)))" ( (binary_expression "iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))" (binary_expression "iVar1 == param_2" identifier == identifier) && (parenthesized_expression "(param_3 < *(int *)(param_1 + 0xe60))" ( (binary_expression "param_3 < *(int *)(param_1 + 0xe60)" identifier < (pointer_expression "*(int *)(param_1 + 0xe60)" * (cast_expression "(int *)(param_1 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe60)" ( (binary_expression "param_1 + 0xe60" identifier + number_literal) ))))) ))) )) ))) )) && (parenthesized_expression "((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))" ( (parenthesized_expression "(*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))))" ( (binary_expression "*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))" (binary_expression "*(int *)(param_1 + 0xe54) < param_4" (pointer_expression "*(int *)(param_1 + 0xe54)" * (cast_expression "(int *)(param_1 + 0xe54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe54)" ( (binary_expression "param_1 + 0xe54" identifier + number_literal) )))) < identifier) || (parenthesized_expression "((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))" ( (parenthesized_expression "(*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))" ( (binary_expression "*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)" (binary_expression "*(int *)(param_1 + 0xe54) == param_4" (pointer_expression "*(int *)(param_1 + 0xe54)" * (cast_expression "(int *)(param_1 + 0xe54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe54)" ( (binary_expression "param_1 + 0xe54" identifier + number_literal) )))) == identifier) && (parenthesized_expression "(*(int *)(param_1 + 0xe58) < param_5)" ( (binary_expression "*(int *)(param_1 + 0xe58) < param_5" (pointer_expression "*(int *)(param_1 + 0xe58)" * (cast_expression "(int *)(param_1 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe58)" ( (binary_expression "param_1 + 0xe58" identifier + number_literal) )))) < identifier) ))) )) ))) )) ))) )) (compound_statement "{\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }" { (expression_statement "*(undefined4 *)(param_1 + 0xe48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe48) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe48)" * (cast_expression "(undefined4 *)(param_1 + 0xe48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe48)" ( (binary_expression "param_1 + 0xe48" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe5c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe5c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe5c)" * (cast_expression "(undefined4 *)(param_1 + 0xe5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe5c)" ( (binary_expression "param_1 + 0xe5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe60) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe60) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe60)" * (cast_expression "(undefined4 *)(param_1 + 0xe60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe60)" ( (binary_expression "param_1 + 0xe60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe54) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe54) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe54)" * (cast_expression "(undefined4 *)(param_1 + 0xe54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe54)" ( (binary_expression "param_1 + 0xe54" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0xe58) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe58) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe58)" * (cast_expression "(undefined4 *)(param_1 + 0xe58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe58)" ( (binary_expression "param_1 + 0xe58" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) && (binary_expression IDENT <= IDENT)) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < IDENT) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00039260(int param_1,int param_2,int param_3,int param_4,int param_5)" (identifier "FUN_00039260") (parameter_list "(int param_1,int param_2,int param_3,int param_4,int param_5)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  int iVar1;\n  \n  iVar1 = *(int *)(param_1 + 0xe5c);\n  if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (expression_statement "iVar1 = *(int *)(param_1 + 0xe5c);" (assignment_expression "iVar1 = *(int *)(param_1 + 0xe5c)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1 + 0xe5c)" (* "*") (cast_expression "(int *)(param_1 + 0xe5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe5c)" (( "(") (binary_expression "param_1 + 0xe5c" (identifier "param_1") (+ "+") (number_literal "0xe5c")) () ")"))))) (; ";")) (if_statement "if (((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }" (if "if") (parenthesized_expression "(((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))))))" (( "(") (binary_expression "((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&\n     ((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))" (parenthesized_expression "((iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60)))))" (( "(") (binary_expression "(iVar1 != param_2 && param_2 <= iVar1) ||\n      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))" (parenthesized_expression "(iVar1 != param_2 && param_2 <= iVar1)" (( "(") (binary_expression "iVar1 != param_2 && param_2 <= iVar1" (binary_expression "iVar1 != param_2" (identifier "iVar1") (!= "!=") (identifier "param_2")) (&& "&&") (binary_expression "param_2 <= iVar1" (identifier "param_2") (<= "<=") (identifier "iVar1"))) () ")")) (|| "||") (parenthesized_expression "((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))" (( "(") (parenthesized_expression "(iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60)))" (( "(") (binary_expression "iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))" (binary_expression "iVar1 == param_2" (identifier "iVar1") (== "==") (identifier "param_2")) (&& "&&") (parenthesized_expression "(param_3 < *(int *)(param_1 + 0xe60))" (( "(") (binary_expression "param_3 < *(int *)(param_1 + 0xe60)" (identifier "param_3") (< "<") (pointer_expression "*(int *)(param_1 + 0xe60)" (* "*") (cast_expression "(int *)(param_1 + 0xe60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe60)" (( "(") (binary_expression "param_1 + 0xe60" (identifier "param_1") (+ "+") (number_literal "0xe60")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))" (( "(") (parenthesized_expression "(*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))))" (( "(") (binary_expression "*(int *)(param_1 + 0xe54) < param_4 ||\n      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))" (binary_expression "*(int *)(param_1 + 0xe54) < param_4" (pointer_expression "*(int *)(param_1 + 0xe54)" (* "*") (cast_expression "(int *)(param_1 + 0xe54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe54)" (( "(") (binary_expression "param_1 + 0xe54" (identifier "param_1") (+ "+") (number_literal "0xe54")) () ")")))) (< "<") (identifier "param_4")) (|| "||") (parenthesized_expression "((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))" (( "(") (parenthesized_expression "(*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5))" (( "(") (binary_expression "*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)" (binary_expression "*(int *)(param_1 + 0xe54) == param_4" (pointer_expression "*(int *)(param_1 + 0xe54)" (* "*") (cast_expression "(int *)(param_1 + 0xe54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe54)" (( "(") (binary_expression "param_1 + 0xe54" (identifier "param_1") (+ "+") (number_literal "0xe54")) () ")")))) (== "==") (identifier "param_4")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0xe58) < param_5)" (( "(") (binary_expression "*(int *)(param_1 + 0xe58) < param_5" (pointer_expression "*(int *)(param_1 + 0xe58)" (* "*") (cast_expression "(int *)(param_1 + 0xe58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe58)" (( "(") (binary_expression "param_1 + 0xe58" (identifier "param_1") (+ "+") (number_literal "0xe58")) () ")")))) (< "<") (identifier "param_5")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    *(undefined4 *)(param_1 + 0xe48) = 0;\n    *(undefined4 *)(param_1 + 0xe5c) = 0;\n    *(undefined4 *)(param_1 + 0xe60) = 0;\n    *(undefined4 *)(param_1 + 0xe54) = 0;\n    *(undefined4 *)(param_1 + 0xe58) = 0;\n    return;\n  }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0xe48) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe48) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe48)" (( "(") (binary_expression "param_1 + 0xe48" (identifier "param_1") (+ "+") (number_literal "0xe48")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xe5c) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe5c) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe5c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe5c)" (( "(") (binary_expression "param_1 + 0xe5c" (identifier "param_1") (+ "+") (number_literal "0xe5c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xe60) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe60) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe60)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe60)" (( "(") (binary_expression "param_1 + 0xe60" (identifier "param_1") (+ "+") (number_literal "0xe60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xe54) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe54) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe54)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe54)" (( "(") (binary_expression "param_1 + 0xe54" (identifier "param_1") (+ "+") (number_literal "0xe54")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xe58) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0xe58) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0xe58)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xe58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe58)" (( "(") (binary_expression "param_1 + 0xe58" (identifier "param_1") (+ "+") (number_literal "0xe58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void __regparm3 function_1(type_1 *term,type_2 from,type_2 to)

{
  int var_1;
  int var_3;
  int var_2;
  
  var_1 = (term->selend).y;
  if (((var_1 != var_2 && var_2 <= var_1) || ((var_1 == var_2 && (var_3 < (term->selend).x))))
     && ((var_1 = (term->selstart).y, var_1 < from.y ||
         ((var_1 == from.y && ((term->selstart).x < from.x)))))) {
    term->selstate = ADDRTYPE_UNSPEC;
    (term->selend).y = 0;
    (term->selend).x = 0;
    (term->selstart).y = 0;
    (term->selstart).x = 0;
    return;
  }
  return;
}


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

void __regparm3 MASKED(int param_1,int param_2,int param_3,int param_4,int param_5)

{
  int iVar1;
  
  iVar1 = *(int *)(param_1 + 0xe5c);
  if (((iVar1 != param_2 && param_2 <= iVar1) ||
      ((iVar1 == param_2 && (param_3 < *(int *)(param_1 + 0xe60))))) &&
     ((*(int *)(param_1 + 0xe54) < param_4 ||
      ((*(int *)(param_1 + 0xe54) == param_4 && (*(int *)(param_1 + 0xe58) < param_5)))))) {
    *(undefined4 *)(param_1 + 0xe48) = 0;
    *(undefined4 *)(param_1 + 0xe5c) = 0;
    *(undefined4 *)(param_1 + 0xe60) = 0;
    *(undefined4 *)(param_1 + 0xe54) = 0;
    *(undefined4 *)(param_1 + 0xe58) = 0;
    return;
  }
  return;
}

