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

void grammar_rules_useless_report(char *message)

{
  _Bool _Var1;
  long lVar2;
  
  if (0 < nrules) {
    lVar2 = 0;
    do {
      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);
      if ((!_Var1) && (rules[lVar2].useful == false)) {
        complain(&rules[lVar2].location,Wother,"%s",message);
      }
      lVar2 = lVar2 + 1;
    } while ((int)lVar2 < nrules);
    return;
  }
  return;
}



void FUN_0010d958(undefined8 param_1)

{
  char cVar1;
  long lVar2;
  long lVar3;
  
  if (0 < DAT_00163048) {
    lVar3 = 0;
    do {
      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));
      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))
      {
        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);
      }
      lVar3 = lVar3 + 1;
    } while ((int)lVar3 < DAT_00163048);
    return;
  }
  return;
}


CMP dword ptr [0x00163048],0x0
JLE 0x0010d9d9
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV R12,RDI
MOV EBP,0x0
LEA R13,[0x14f846]
JMP 0x0010d99c
LEA RDI,[RBX + 0x30]
MOV RCX,R12
MOV RDX,R13
MOV ESI,0x80
CALL 0x00109004
ADD RBP,0x1
CMP dword ptr [0x00163048],EBP
JLE 0x0010d9ce
MOV RBX,RBP
SHL RBX,0x4
ADD RBX,RBP
SHL RBX,0x3
MOV RAX,qword ptr [0x00163050]
MOV RDI,qword ptr [RAX + RBX*0x1 + 0x8]
CALL 0x00125692
TEST AL,AL
JNZ 0x0010d990
ADD RBX,qword ptr [0x00163050]
CMP byte ptr [RBX + 0x50],0x0
JNZ 0x0010d990
JMP 0x0010d97c
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
RET
(translation_unit "void FUN_0010d958(undefined8 param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0010d958(undefined8 param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0010d958(undefined8 param_1)" identifier (parameter_list "(undefined8 param_1)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }" if (parenthesized_expression "(0 < DAT_00163048)" ( (binary_expression "0 < DAT_00163048" number_literal < identifier) )) (compound_statement "{\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }" { (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);" do (compound_statement "{\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    }" { (expression_statement "cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));" (assignment_expression "cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" identifier = (call_expression "FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" identifier (argument_list "(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" ( (pointer_expression "*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88)" * (cast_expression "(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00163050 + 8 + lVar3 * 0x88)" ( (binary_expression "DAT_00163050 + 8 + lVar3 * 0x88" (binary_expression "DAT_00163050 + 8" identifier + number_literal) + (binary_expression "lVar3 * 0x88" identifier * number_literal)) )))) )))) ;) (if_statement "if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }" if (parenthesized_expression "((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))" ( (binary_expression "(cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0')" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0')" ( (comma_expression "lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'" (assignment_expression "lVar2 = lVar3 * 0x88 + DAT_00163050" identifier = (binary_expression "lVar3 * 0x88 + DAT_00163050" (binary_expression "lVar3 * 0x88" identifier * number_literal) + identifier)) , (binary_expression "*(char *)(lVar2 + 0x50) == '\0'" (pointer_expression "*(char *)(lVar2 + 0x50)" * (cast_expression "(char *)(lVar2 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x50)" ( (binary_expression "lVar2 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }" { (expression_statement "FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);" (call_expression "FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1)" identifier (argument_list "(lVar2 + 0x30,0x80,&DAT_0014f846,param_1)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) , number_literal , (pointer_expression "&DAT_0014f846" & identifier) , identifier ))) ;) })) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar3 < DAT_00163048)" ( (binary_expression "(int)lVar3 < DAT_00163048" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid grammar_rules_useless_report(char *message)\n\n{\n  _Bool _Var1;\n  long lVar2;\n  \n  if (0 < nrules) {\n    lVar2 = 0;\n    do {\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    } while ((int)lVar2 < nrules);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void grammar_rules_useless_report(char *message)\n\n{\n  _Bool _Var1;\n  long lVar2;\n  \n  if (0 < nrules) {\n    lVar2 = 0;\n    do {\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    } while ((int)lVar2 < nrules);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "grammar_rules_useless_report(char *message)" identifier (parameter_list "(char *message)" ( (parameter_declaration "char *message" primitive_type (pointer_declarator "*message" * identifier)) ))) (compound_statement "{\n  _Bool _Var1;\n  long lVar2;\n  \n  if (0 < nrules) {\n    lVar2 = 0;\n    do {\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    } while ((int)lVar2 < nrules);\n    return;\n  }\n  return;\n}" { (declaration "_Bool _Var1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (0 < nrules) {\n    lVar2 = 0;\n    do {\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    } while ((int)lVar2 < nrules);\n    return;\n  }" if (parenthesized_expression "(0 < nrules)" ( (binary_expression "0 < nrules" number_literal < identifier) )) (compound_statement "{\n    lVar2 = 0;\n    do {\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    } while ((int)lVar2 < nrules);\n    return;\n  }" { (expression_statement "lVar2 = 0;" (assignment_expression "lVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    } while ((int)lVar2 < nrules);" do (compound_statement "{\n      _Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);\n      if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }\n      lVar2 = lVar2 + 1;\n    }" { (expression_statement "_Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs);" (assignment_expression "_Var1 = reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs)" identifier = (call_expression "reduce_nonterminal_useless_in_grammar(rules[lVar2].lhs)" identifier (argument_list "(rules[lVar2].lhs)" ( (field_expression "rules[lVar2].lhs" (subscript_expression "rules[lVar2]" identifier [ identifier ]) . field_identifier) )))) ;) (if_statement "if ((!_Var1) && (rules[lVar2].useful == false)) {\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }" if (parenthesized_expression "((!_Var1) && (rules[lVar2].useful == false))" ( (binary_expression "(!_Var1) && (rules[lVar2].useful == false)" (parenthesized_expression "(!_Var1)" ( (unary_expression "!_Var1" ! identifier) )) && (parenthesized_expression "(rules[lVar2].useful == false)" ( (binary_expression "rules[lVar2].useful == false" (field_expression "rules[lVar2].useful" (subscript_expression "rules[lVar2]" identifier [ identifier ]) . field_identifier) == false) ))) )) (compound_statement "{\n        complain(&rules[lVar2].location,Wother,"%s",message);\n      }" { (expression_statement "complain(&rules[lVar2].location,Wother,"%s",message);" (call_expression "complain(&rules[lVar2].location,Wother,"%s",message)" identifier (argument_list "(&rules[lVar2].location,Wother,"%s",message)" ( (pointer_expression "&rules[lVar2].location" & (field_expression "rules[lVar2].location" (subscript_expression "rules[lVar2]" identifier [ identifier ]) . field_identifier)) , identifier , (string_literal ""%s"" " string_content ") , identifier ))) ;) })) (expression_statement "lVar2 = lVar2 + 1;" (assignment_expression "lVar2 = lVar2 + 1" identifier = (binary_expression "lVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar2 < nrules)" ( (binary_expression "(int)lVar2 < nrules" (cast_expression "(int)lVar2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0010d958(undefined8 param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0010d958(undefined8 param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0010d958(undefined8 param_1)" identifier (parameter_list "(undefined8 param_1)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }" if (parenthesized_expression "(0 < DAT_00163048)" ( (binary_expression "0 < DAT_00163048" number_literal < identifier) )) (compound_statement "{\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }" { (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);" do (compound_statement "{\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    }" { (expression_statement "cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));" (assignment_expression "cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" identifier = (call_expression "FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" identifier (argument_list "(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" ( (pointer_expression "*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88)" * (cast_expression "(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00163050 + 8 + lVar3 * 0x88)" ( (binary_expression "DAT_00163050 + 8 + lVar3 * 0x88" (binary_expression "DAT_00163050 + 8" identifier + number_literal) + (binary_expression "lVar3 * 0x88" identifier * number_literal)) )))) )))) ;) (if_statement "if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }" if (parenthesized_expression "((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))" ( (binary_expression "(cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0')" (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0')" ( (comma_expression "lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'" (assignment_expression "lVar2 = lVar3 * 0x88 + DAT_00163050" identifier = (binary_expression "lVar3 * 0x88 + DAT_00163050" (binary_expression "lVar3 * 0x88" identifier * number_literal) + identifier)) , (binary_expression "*(char *)(lVar2 + 0x50) == '\0'" (pointer_expression "*(char *)(lVar2 + 0x50)" * (cast_expression "(char *)(lVar2 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x50)" ( (binary_expression "lVar2 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }" { (expression_statement "FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);" (call_expression "FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1)" identifier (argument_list "(lVar2 + 0x30,0x80,&DAT_0014f846,param_1)" ( (binary_expression "lVar2 + 0x30" identifier + number_literal) , number_literal , (pointer_expression "&DAT_0014f846" & identifier) , identifier ))) ;) })) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" identifier = (binary_expression "lVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar3 < DAT_00163048)" ( (binary_expression "(int)lVar3 < DAT_00163048" (cast_expression "(int)lVar3" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , LIT , (pointer_expression & IDENT) , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_0010d958(undefined8 param_1)\n\n{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0010d958(undefined8 param_1)" (identifier "FUN_0010d958") (parameter_list "(undefined8 param_1)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) () ")"))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  long lVar3;\n  \n  if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (if_statement "if (0 < DAT_00163048) {\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }" (if "if") (parenthesized_expression "(0 < DAT_00163048)" (( "(") (binary_expression "0 < DAT_00163048" (number_literal "0") (< "<") (identifier "DAT_00163048")) () ")")) (compound_statement "{\n    lVar3 = 0;\n    do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);\n    return;\n  }" ({ "{") (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" (identifier "lVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    } while ((int)lVar3 < DAT_00163048);" (do "do") (compound_statement "{\n      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));\n      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }\n      lVar3 = lVar3 + 1;\n    }" ({ "{") (expression_statement "cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));" (assignment_expression "cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" (identifier "cVar1") (= "=") (call_expression "FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" (identifier "FUN_00125692") (argument_list "(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88))" (( "(") (pointer_expression "*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88)" (* "*") (cast_expression "(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00163050 + 8 + lVar3 * 0x88)" (( "(") (binary_expression "DAT_00163050 + 8 + lVar3 * 0x88" (binary_expression "DAT_00163050 + 8" (identifier "DAT_00163050") (+ "+") (number_literal "8")) (+ "+") (binary_expression "lVar3 * 0x88" (identifier "lVar3") (* "*") (number_literal "0x88"))) () ")")))) () ")")))) (; ";")) (if_statement "if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))\n      {\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }" (if "if") (parenthesized_expression "((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))" (( "(") (binary_expression "(cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0')" (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0')" (( "(") (comma_expression "lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'" (assignment_expression "lVar2 = lVar3 * 0x88 + DAT_00163050" (identifier "lVar2") (= "=") (binary_expression "lVar3 * 0x88 + DAT_00163050" (binary_expression "lVar3 * 0x88" (identifier "lVar3") (* "*") (number_literal "0x88")) (+ "+") (identifier "DAT_00163050"))) (, ",") (binary_expression "*(char *)(lVar2 + 0x50) == '\0'" (pointer_expression "*(char *)(lVar2 + 0x50)" (* "*") (cast_expression "(char *)(lVar2 + 0x50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0x50)" (( "(") (binary_expression "lVar2 + 0x50" (identifier "lVar2") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);\n      }" ({ "{") (expression_statement "FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);" (call_expression "FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1)" (identifier "FUN_00109004") (argument_list "(lVar2 + 0x30,0x80,&DAT_0014f846,param_1)" (( "(") (binary_expression "lVar2 + 0x30" (identifier "lVar2") (+ "+") (number_literal "0x30")) (, ",") (number_literal "0x80") (, ",") (pointer_expression "&DAT_0014f846" (& "&") (identifier "DAT_0014f846")) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (expression_statement "lVar3 = lVar3 + 1;" (assignment_expression "lVar3 = lVar3 + 1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + 1" (identifier "lVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar3 < DAT_00163048)" (( "(") (binary_expression "(int)lVar3 < DAT_00163048" (cast_expression "(int)lVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar3")) (< "<") (identifier "DAT_00163048")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(char *message)

{
  type_1 _Var1;
  long var_4;
  
  if (0 < var_1) {
    var_4 = 0;
    do {
      _Var1 = var_2(rules[var_4].lhs);
      if ((!_Var1) && (rules[var_4].useful == false)) {
        var_3(&rules[var_4].location,Wother,"%s",message);
      }
      var_4 = var_4 + 1;
    } while ((int)var_4 < var_1);
    return;
  }
  return;
}


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

void MASKED(undefined8 param_1)

{
  char cVar1;
  long lVar2;
  long lVar3;
  
  if (0 < DAT_00163048) {
    lVar3 = 0;
    do {
      cVar1 = FUN_00125692(*(undefined8 *)(DAT_00163050 + 8 + lVar3 * 0x88));
      if ((cVar1 == '\0') && (lVar2 = lVar3 * 0x88 + DAT_00163050, *(char *)(lVar2 + 0x50) == '\0'))
      {
        FUN_00109004(lVar2 + 0x30,0x80,&DAT_0014f846,param_1);
      }
      lVar3 = lVar3 + 1;
    } while ((int)lVar3 < DAT_00163048);
    return;
  }
  return;
}

