
VALUE * eval(_Bool evaluate)

{
  _Bool _Var1;
  VALUE *v;
  VALUE *v_00;
  
  v = eval1(evaluate);
  while( true ) {
    _Var1 = nextarg("|");
    if (!_Var1) break;
    _Var1 = false;
    if (evaluate) {
      _Var1 = null(v);
    }
    v_00 = eval1(_Var1);
    _Var1 = null(v);
    if (_Var1) {
      freev(v);
      _Var1 = null(v_00);
      v = v_00;
      if (_Var1) {
        freev(v_00);
        v = int_value(0);
      }
    }
    else {
      freev(v_00);
    }
  }
  return v;
}



undefined8 FUN_0010412f(char param_1)

{
  char cVar1;
  undefined1 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  
  uVar3 = FUN_00104095(param_1);
  while( true ) {
    cVar1 = FUN_001024e1(&DAT_0010815a);
    if (cVar1 == '\0') break;
    uVar2 = 0;
    if (param_1 != '\0') {
      uVar2 = FUN_00102a8a(uVar3);
    }
    uVar4 = FUN_00104095(uVar2);
    cVar1 = FUN_00102a8a(uVar3);
    if (cVar1 == '\0') {
      FUN_00102bad(uVar4);
    }
    else {
      FUN_00102bad(uVar3);
      cVar1 = FUN_00102a8a(uVar4);
      uVar3 = uVar4;
      if (cVar1 != '\0') {
        FUN_00102bad(uVar4);
        uVar3 = FUN_00102bd4(0);
      }
    }
  }
  return uVar3;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV R13D,EDI
MOVZX EDI,DIL
CALL 0x00104095
MOV RBX,RAX
MOV R12D,0x0
JMP 0x00104158
MOV RDI,RBP
CALL 0x00102bad
LEA RDI,[0x10815a]
CALL 0x001024e1
TEST AL,AL
JZ 0x001041bd
MOV EDI,R12D
TEST R13B,R13B
JZ 0x0010417b
MOV RDI,RBX
CALL 0x00102a8a
MOVZX EDI,AL
CALL 0x00104095
MOV RBP,RAX
MOV RDI,RBX
CALL 0x00102a8a
TEST AL,AL
JZ 0x00104150
MOV RDI,RBX
CALL 0x00102bad
MOV RDI,RBP
CALL 0x00102a8a
MOV RBX,RBP
TEST AL,AL
JZ 0x00104158
MOV RDI,RBP
CALL 0x00102bad
MOV EDI,0x0
CALL 0x00102bd4
MOV RBX,RAX
JMP 0x00104158
MOV RAX,RBX
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
(translation_unit "undefined8 FUN_0010412f(char param_1)\n\n{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined8 FUN_0010412f(char param_1)\n\n{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0010412f(char param_1)" identifier (parameter_list "(char param_1)" ( (parameter_declaration "char param_1" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (expression_statement "uVar3 = FUN_00104095(param_1);" (assignment_expression "uVar3 = FUN_00104095(param_1)" identifier = (call_expression "FUN_00104095(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (while_statement "while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }" { (expression_statement "cVar1 = FUN_001024e1(&DAT_0010815a);" (assignment_expression "cVar1 = FUN_001024e1(&DAT_0010815a)" identifier = (call_expression "FUN_001024e1(&DAT_0010815a)" identifier (argument_list "(&DAT_0010815a)" ( (pointer_expression "&DAT_0010815a" & identifier) )))) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }" if (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = FUN_00102a8a(uVar3);\n    }" { (expression_statement "uVar2 = FUN_00102a8a(uVar3);" (assignment_expression "uVar2 = FUN_00102a8a(uVar3)" identifier = (call_expression "FUN_00102a8a(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) })) (expression_statement "uVar4 = FUN_00104095(uVar2);" (assignment_expression "uVar4 = FUN_00104095(uVar2)" identifier = (call_expression "FUN_00104095(uVar2)" identifier (argument_list "(uVar2)" ( identifier )))) ;) (expression_statement "cVar1 = FUN_00102a8a(uVar3);" (assignment_expression "cVar1 = FUN_00102a8a(uVar3)" identifier = (call_expression "FUN_00102a8a(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (if_statement "if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00102bad(uVar4);\n    }" { (expression_statement "FUN_00102bad(uVar4);" (call_expression "FUN_00102bad(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) }) (else_clause "else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" else (compound_statement "{\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" { (expression_statement "FUN_00102bad(uVar3);" (call_expression "FUN_00102bad(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "cVar1 = FUN_00102a8a(uVar4);" (assignment_expression "cVar1 = FUN_00102a8a(uVar4)" identifier = (call_expression "FUN_00102a8a(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) (if_statement "if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }" { (expression_statement "FUN_00102bad(uVar4);" (call_expression "FUN_00102bad(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "uVar3 = FUN_00102bd4(0);" (assignment_expression "uVar3 = FUN_00102bd4(0)" identifier = (call_expression "FUN_00102bd4(0)" identifier (argument_list "(0)" ( number_literal )))) ;) })) }))) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit "VALUE * eval(_Bool evaluate)\n\n{\n  _Bool _Var1;\n  VALUE *v;\n  VALUE *v_00;\n  \n  v = eval1(evaluate);\n  while( true ) {\n    _Var1 = nextarg("|");\n    if (!_Var1) break;\n    _Var1 = false;\n    if (evaluate) {\n      _Var1 = null(v);\n    }\n    v_00 = eval1(_Var1);\n    _Var1 = null(v);\n    if (_Var1) {\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }\n    else {\n      freev(v_00);\n    }\n  }\n  return v;\n}\n\n" (function_definition "VALUE * eval(_Bool evaluate)\n\n{\n  _Bool _Var1;\n  VALUE *v;\n  VALUE *v_00;\n  \n  v = eval1(evaluate);\n  while( true ) {\n    _Var1 = nextarg("|");\n    if (!_Var1) break;\n    _Var1 = false;\n    if (evaluate) {\n      _Var1 = null(v);\n    }\n    v_00 = eval1(_Var1);\n    _Var1 = null(v);\n    if (_Var1) {\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }\n    else {\n      freev(v_00);\n    }\n  }\n  return v;\n}" type_identifier (pointer_declarator "* eval(_Bool evaluate)" * (function_declarator "eval(_Bool evaluate)" identifier (parameter_list "(_Bool evaluate)" ( (parameter_declaration "_Bool evaluate" type_identifier identifier) )))) (compound_statement "{\n  _Bool _Var1;\n  VALUE *v;\n  VALUE *v_00;\n  \n  v = eval1(evaluate);\n  while( true ) {\n    _Var1 = nextarg("|");\n    if (!_Var1) break;\n    _Var1 = false;\n    if (evaluate) {\n      _Var1 = null(v);\n    }\n    v_00 = eval1(_Var1);\n    _Var1 = null(v);\n    if (_Var1) {\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }\n    else {\n      freev(v_00);\n    }\n  }\n  return v;\n}" { (declaration "_Bool _Var1;" type_identifier identifier ;) (declaration "VALUE *v;" type_identifier (pointer_declarator "*v" * identifier) ;) (declaration "VALUE *v_00;" type_identifier (pointer_declarator "*v_00" * identifier) ;) (expression_statement "v = eval1(evaluate);" (assignment_expression "v = eval1(evaluate)" identifier = (call_expression "eval1(evaluate)" identifier (argument_list "(evaluate)" ( identifier )))) ;) (while_statement "while( true ) {\n    _Var1 = nextarg("|");\n    if (!_Var1) break;\n    _Var1 = false;\n    if (evaluate) {\n      _Var1 = null(v);\n    }\n    v_00 = eval1(_Var1);\n    _Var1 = null(v);\n    if (_Var1) {\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }\n    else {\n      freev(v_00);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    _Var1 = nextarg("|");\n    if (!_Var1) break;\n    _Var1 = false;\n    if (evaluate) {\n      _Var1 = null(v);\n    }\n    v_00 = eval1(_Var1);\n    _Var1 = null(v);\n    if (_Var1) {\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }\n    else {\n      freev(v_00);\n    }\n  }" { (expression_statement "_Var1 = nextarg("|");" (assignment_expression "_Var1 = nextarg("|")" identifier = (call_expression "nextarg("|")" identifier (argument_list "("|")" ( (string_literal ""|"" " string_content ") )))) ;) (if_statement "if (!_Var1) break;" if (parenthesized_expression "(!_Var1)" ( (unary_expression "!_Var1" ! identifier) )) (break_statement "break;" break ;)) (expression_statement "_Var1 = false;" (assignment_expression "_Var1 = false" identifier = false) ;) (if_statement "if (evaluate) {\n      _Var1 = null(v);\n    }" if (parenthesized_expression "(evaluate)" ( identifier )) (compound_statement "{\n      _Var1 = null(v);\n    }" { (expression_statement "_Var1 = null(v);" (assignment_expression "_Var1 = null(v)" identifier = (call_expression "null(v)" identifier (argument_list "(v)" ( identifier )))) ;) })) (expression_statement "v_00 = eval1(_Var1);" (assignment_expression "v_00 = eval1(_Var1)" identifier = (call_expression "eval1(_Var1)" identifier (argument_list "(_Var1)" ( identifier )))) ;) (expression_statement "_Var1 = null(v);" (assignment_expression "_Var1 = null(v)" identifier = (call_expression "null(v)" identifier (argument_list "(v)" ( identifier )))) ;) (if_statement "if (_Var1) {\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }\n    else {\n      freev(v_00);\n    }" if (parenthesized_expression "(_Var1)" ( identifier )) (compound_statement "{\n      freev(v);\n      _Var1 = null(v_00);\n      v = v_00;\n      if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }\n    }" { (expression_statement "freev(v);" (call_expression "freev(v)" identifier (argument_list "(v)" ( identifier ))) ;) (expression_statement "_Var1 = null(v_00);" (assignment_expression "_Var1 = null(v_00)" identifier = (call_expression "null(v_00)" identifier (argument_list "(v_00)" ( identifier )))) ;) (expression_statement "v = v_00;" (assignment_expression "v = v_00" identifier = identifier) ;) (if_statement "if (_Var1) {\n        freev(v_00);\n        v = int_value(0);\n      }" if (parenthesized_expression "(_Var1)" ( identifier )) (compound_statement "{\n        freev(v_00);\n        v = int_value(0);\n      }" { (expression_statement "freev(v_00);" (call_expression "freev(v_00)" identifier (argument_list "(v_00)" ( identifier ))) ;) (expression_statement "v = int_value(0);" (assignment_expression "v = int_value(0)" identifier = (call_expression "int_value(0)" identifier (argument_list "(0)" ( number_literal )))) ;) })) }) (else_clause "else {\n      freev(v_00);\n    }" else (compound_statement "{\n      freev(v_00);\n    }" { (expression_statement "freev(v_00);" (call_expression "freev(v_00)" identifier (argument_list "(v_00)" ( identifier ))) ;) }))) })) (return_statement "return v;" return identifier ;) })))
(translation_unit "undefined8 FUN_0010412f(char param_1)\n\n{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}\n\n" (function_definition "undefined8 FUN_0010412f(char param_1)\n\n{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}" type_identifier (function_declarator "FUN_0010412f(char param_1)" identifier (parameter_list "(char param_1)" ( (parameter_declaration "char param_1" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (expression_statement "uVar3 = FUN_00104095(param_1);" (assignment_expression "uVar3 = FUN_00104095(param_1)" identifier = (call_expression "FUN_00104095(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (while_statement "while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }" { (expression_statement "cVar1 = FUN_001024e1(&DAT_0010815a);" (assignment_expression "cVar1 = FUN_001024e1(&DAT_0010815a)" identifier = (call_expression "FUN_001024e1(&DAT_0010815a)" identifier (argument_list "(&DAT_0010815a)" ( (pointer_expression "&DAT_0010815a" & identifier) )))) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }" if (parenthesized_expression "(param_1 != '\0')" ( (binary_expression "param_1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar2 = FUN_00102a8a(uVar3);\n    }" { (expression_statement "uVar2 = FUN_00102a8a(uVar3);" (assignment_expression "uVar2 = FUN_00102a8a(uVar3)" identifier = (call_expression "FUN_00102a8a(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) })) (expression_statement "uVar4 = FUN_00104095(uVar2);" (assignment_expression "uVar4 = FUN_00104095(uVar2)" identifier = (call_expression "FUN_00104095(uVar2)" identifier (argument_list "(uVar2)" ( identifier )))) ;) (expression_statement "cVar1 = FUN_00102a8a(uVar3);" (assignment_expression "cVar1 = FUN_00102a8a(uVar3)" identifier = (call_expression "FUN_00102a8a(uVar3)" identifier (argument_list "(uVar3)" ( identifier )))) ;) (if_statement "if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00102bad(uVar4);\n    }" { (expression_statement "FUN_00102bad(uVar4);" (call_expression "FUN_00102bad(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) }) (else_clause "else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" else (compound_statement "{\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" { (expression_statement "FUN_00102bad(uVar3);" (call_expression "FUN_00102bad(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;) (expression_statement "cVar1 = FUN_00102a8a(uVar4);" (assignment_expression "cVar1 = FUN_00102a8a(uVar4)" identifier = (call_expression "FUN_00102a8a(uVar4)" identifier (argument_list "(uVar4)" ( identifier )))) ;) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) (if_statement "if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }" { (expression_statement "FUN_00102bad(uVar4);" (call_expression "FUN_00102bad(uVar4)" identifier (argument_list "(uVar4)" ( identifier ))) ;) (expression_statement "uVar3 = FUN_00102bd4(0);" (assignment_expression "uVar3 = FUN_00102bd4(0)" identifier = (call_expression "FUN_00102bd4(0)" identifier (argument_list "(0)" ( number_literal )))) ;) })) }))) })) (return_statement "return uVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) })) }))) })) (return_statement return IDENT ;) })))
(function_definition "undefined8 FUN_0010412f(char param_1)\n\n{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}" (type_identifier "undefined8") (function_declarator "FUN_0010412f(char param_1)" (identifier "FUN_0010412f") (parameter_list "(char param_1)" (( "(") (parameter_declaration "char param_1" (primitive_type "char") (identifier "param_1")) () ")"))) (compound_statement "{\n  char cVar1;\n  undefined1 uVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  \n  uVar3 = FUN_00104095(param_1);\n  while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }\n  return uVar3;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (expression_statement "uVar3 = FUN_00104095(param_1);" (assignment_expression "uVar3 = FUN_00104095(param_1)" (identifier "uVar3") (= "=") (call_expression "FUN_00104095(param_1)" (identifier "FUN_00104095") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (while_statement "while( true ) {\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    cVar1 = FUN_001024e1(&DAT_0010815a);\n    if (cVar1 == '\0') break;\n    uVar2 = 0;\n    if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }\n    uVar4 = FUN_00104095(uVar2);\n    cVar1 = FUN_00102a8a(uVar3);\n    if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }\n  }" ({ "{") (expression_statement "cVar1 = FUN_001024e1(&DAT_0010815a);" (assignment_expression "cVar1 = FUN_001024e1(&DAT_0010815a)" (identifier "cVar1") (= "=") (call_expression "FUN_001024e1(&DAT_0010815a)" (identifier "FUN_001024e1") (argument_list "(&DAT_0010815a)" (( "(") (pointer_expression "&DAT_0010815a" (& "&") (identifier "DAT_0010815a")) () ")")))) (; ";")) (if_statement "if (cVar1 == '\0') break;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 != '\0') {\n      uVar2 = FUN_00102a8a(uVar3);\n    }" (if "if") (parenthesized_expression "(param_1 != '\0')" (( "(") (binary_expression "param_1 != '\0'" (identifier "param_1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar2 = FUN_00102a8a(uVar3);\n    }" ({ "{") (expression_statement "uVar2 = FUN_00102a8a(uVar3);" (assignment_expression "uVar2 = FUN_00102a8a(uVar3)" (identifier "uVar2") (= "=") (call_expression "FUN_00102a8a(uVar3)" (identifier "FUN_00102a8a") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (} "}"))) (expression_statement "uVar4 = FUN_00104095(uVar2);" (assignment_expression "uVar4 = FUN_00104095(uVar2)" (identifier "uVar4") (= "=") (call_expression "FUN_00104095(uVar2)" (identifier "FUN_00104095") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "cVar1 = FUN_00102a8a(uVar3);" (assignment_expression "cVar1 = FUN_00102a8a(uVar3)" (identifier "cVar1") (= "=") (call_expression "FUN_00102a8a(uVar3)" (identifier "FUN_00102a8a") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")")))) (; ";")) (if_statement "if (cVar1 == '\0') {\n      FUN_00102bad(uVar4);\n    }\n    else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00102bad(uVar4);\n    }" ({ "{") (expression_statement "FUN_00102bad(uVar4);" (call_expression "FUN_00102bad(uVar4)" (identifier "FUN_00102bad") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" (else "else") (compound_statement "{\n      FUN_00102bad(uVar3);\n      cVar1 = FUN_00102a8a(uVar4);\n      uVar3 = uVar4;\n      if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }\n    }" ({ "{") (expression_statement "FUN_00102bad(uVar3);" (call_expression "FUN_00102bad(uVar3)" (identifier "FUN_00102bad") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "cVar1 = FUN_00102a8a(uVar4);" (assignment_expression "cVar1 = FUN_00102a8a(uVar4)" (identifier "cVar1") (= "=") (call_expression "FUN_00102a8a(uVar4)" (identifier "FUN_00102a8a") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")")))) (; ";")) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" (identifier "uVar3") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (cVar1 != '\0') {\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_00102bad(uVar4);\n        uVar3 = FUN_00102bd4(0);\n      }" ({ "{") (expression_statement "FUN_00102bad(uVar4);" (call_expression "FUN_00102bad(uVar4)" (identifier "FUN_00102bad") (argument_list "(uVar4)" (( "(") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "uVar3 = FUN_00102bd4(0);" (assignment_expression "uVar3 = FUN_00102bd4(0)" (identifier "uVar3") (= "=") (call_expression "FUN_00102bd4(0)" (identifier "FUN_00102bd4") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (} "}"))) (} "}")))) (} "}"))) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))

type_1 * function_1(type_2 evaluate)

{
  type_2 _Var1;
  type_1 *v;
  type_1 *v_00;
  
  v = var_1(evaluate);
  while( true ) {
    _Var1 = var_2("|");
    if (!_Var1) break;
    _Var1 = false;
    if (evaluate) {
      _Var1 = var_3(v);
    }
    v_00 = var_1(_Var1);
    _Var1 = var_3(v);
    if (_Var1) {
      var_4(v);
      _Var1 = var_3(v_00);
      v = v_00;
      if (_Var1) {
        var_4(v_00);
        v = var_5(0);
      }
    }
    else {
      var_4(v_00);
    }
  }
  return v;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))))))))) (return_statement (identifier)))))

undefined8 MASKED(char param_1)

{
  char cVar1;
  undefined1 uVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  
  uVar3 = FUN_00104095(param_1);
  while( true ) {
    cVar1 = FUN_001024e1(&DAT_0010815a);
    if (cVar1 == '\0') break;
    uVar2 = 0;
    if (param_1 != '\0') {
      uVar2 = FUN_00102a8a(uVar3);
    }
    uVar4 = FUN_00104095(uVar2);
    cVar1 = FUN_00102a8a(uVar3);
    if (cVar1 == '\0') {
      FUN_00102bad(uVar4);
    }
    else {
      FUN_00102bad(uVar3);
      cVar1 = FUN_00102a8a(uVar4);
      uVar3 = uVar4;
      if (cVar1 != '\0') {
        FUN_00102bad(uVar4);
        uVar3 = FUN_00102bd4(0);
      }
    }
  }
  return uVar3;
}

