
_Bool null(VALUE *v)

{
  char *pcVar1;
  int iVar2;
  int iVar3;
  undefined1 uVar4;
  char cVar5;
  int *piVar6;
  char *pcVar7;
  undefined *puVar8;
  code *pcVar9;
  
  if (v->type == integer) {
    return (v->u).i[0]._mp_size == 0;
  }
  if (v->type == string) {
    cVar5 = *(v->u).s;
    if (cVar5 != '\0') {
      pcVar1 = (v->u).s + (cVar5 == '-');
      cVar5 = *pcVar1;
      do {
        pcVar1 = pcVar1 + 1;
        if (cVar5 != '0') {
          return false;
        }
        cVar5 = *pcVar1;
      } while (cVar5 != '\0');
    }
    return true;
  }
  puVar8 = PTR_abort_0003e200;
  (*(code *)PTR_abort_0003e200)();
  pcVar9 = *(code **)(puVar8 + 0x2c058);
  piVar6 = (int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4);
  (*pcVar9)(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,
            puVar8 + 0x33f20);
  if (*piVar6 == 0) {
    return true;
  }
  if (*piVar6 != 1) {
    pcVar9 = *(code **)(pcVar9 + 0x2c024);
    (*pcVar9)();
    iVar2 = *piVar6;
    if (iVar2 == 0) {
      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);
      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);
      iVar2 = 1;
      piVar6[1] = iVar3;
      *piVar6 = 1;
    }
    else if (iVar2 != 1) {
      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();
      return (_Bool)uVar4;
    }
    return SUB41(iVar2,0);
  }
  pcVar7 = (char *)piVar6[1];
  pcVar1 = pcVar7 + (*pcVar7 == '-');
  iVar2 = (int)*pcVar1;
  do {
    if (9 < iVar2 - 0x30U) {
      return false;
    }
    pcVar1 = pcVar1 + 1;
    iVar2 = (int)*pcVar1;
  } while (iVar2 != 0);
  (**(code **)(pcVar9 + 0x2c044))(piVar6 + 1,pcVar7,10);
  (**(code **)(pcVar9 + 0x2c124))(pcVar7);
  *piVar6 = 0;
  return true;
}



uint FUN_00012114(int *param_1)

{
  char *pcVar1;
  uint uVar2;
  char cVar3;
  
  if (*param_1 == 0) {
    return (uint)(param_1[2] == 0);
  }
  if (*param_1 == 1) {
    cVar3 = *(char *)param_1[1];
    if (cVar3 != '\0') {
      pcVar1 = (char *)param_1[1] + (cVar3 == '-');
      cVar3 = *pcVar1;
      do {
        pcVar1 = pcVar1 + 1;
        if (cVar3 != '0') {
          return 0;
        }
        cVar3 = *pcVar1;
      } while (cVar3 != '\0');
    }
    return 1;
  }
  uVar2 = (*(code *)PTR_abort_0003e200)();
  return uVar2;
}


lui gp,0x3
addiu gp,gp,0x3fac
addu gp,gp,t9
lw v0,0x0(a0)
bne v0,zero,0x00012138
_li v1,0x1
lw v0,0x8(a0)
jr ra
_sltiu v0,v0,0x1
bne v0,v1,0x0001218c
_lw t9,-0x7ec0(gp)
lw v0,0x4(a0)
lb v1,0x0(v0)
beq v1,zero,0x00012184
_xori v1,v1,0x2d
sltiu v1,v1,0x1
addu v0,v0,v1
li a0,0x30
b 0x00012170
_lb v1,0x0(v0)
lb v1,0x0(v0)
beq v1,zero,0x00012184
_nop
beq v1,a0,0x00012164
_addiu v0,v0,0x1
addiu v0,v0,-0x1
jr ra
_or v0,zero,zero
jr ra
_li v0,0x1
addiu sp,sp,-0x20
sw gp,0x10(sp)
sw ra,0x1c(sp)
jalr t9
_nop
(translation_unit "uint FUN_00012114(int *param_1)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}\n\n" (function_definition "uint FUN_00012114(int *param_1)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00012114(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (if_statement "if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    return (uint)(param_1[2] == 0);\n  }" { (return_statement "return (uint)(param_1[2] == 0);" return (call_expression "(uint)(param_1[2] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) ))) ;) })) (if_statement "if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }" if (parenthesized_expression "(*param_1 == 1)" ( (binary_expression "*param_1 == 1" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }" { (expression_statement "cVar3 = *(char *)param_1[1];" (assignment_expression "cVar3 = *(char *)param_1[1]" identifier = (pointer_expression "*(char *)param_1[1]" * (cast_expression "(char *)param_1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])))) ;) (if_statement "if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }" { (expression_statement "pcVar1 = (char *)param_1[1] + (cVar3 == '-');" (assignment_expression "pcVar1 = (char *)param_1[1] + (cVar3 == '-')" identifier = (binary_expression "(char *)param_1[1] + (cVar3 == '-')" (cast_expression "(char *)param_1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) + (parenthesized_expression "(cVar3 == '-')" ( (binary_expression "cVar3 == '-'" identifier == (char_literal "'-'" ' character ')) )))) ;) (expression_statement "cVar3 = *pcVar1;" (assignment_expression "cVar3 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (do_statement "do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');" do (compound_statement "{\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      }" { (expression_statement "pcVar1 = pcVar1 + 1;" (assignment_expression "pcVar1 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar3 != '0') {\n          return 0;\n        }" if (parenthesized_expression "(cVar3 != '0')" ( (binary_expression "cVar3 != '0'" identifier != (char_literal "'0'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar3 = *pcVar1;" (assignment_expression "cVar3 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar2 = (*(code *)PTR_abort_0003e200)();" (assignment_expression "uVar2 = (*(code *)PTR_abort_0003e200)()" identifier = (call_expression "(*(code *)PTR_abort_0003e200)()" (parenthesized_expression "(*(code *)PTR_abort_0003e200)" ( (pointer_expression "*(code *)PTR_abort_0003e200" * (cast_expression "(code *)PTR_abort_0003e200" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "_Bool null(VALUE *v)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  \n  if (v->type == integer) {\n    return (v->u).i[0]._mp_size == 0;\n  }\n  if (v->type == string) {\n    cVar5 = *(v->u).s;\n    if (cVar5 != '\0') {\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }\n    return true;\n  }\n  puVar8 = PTR_abort_0003e200;\n  (*(code *)PTR_abort_0003e200)();\n  pcVar9 = *(code **)(puVar8 + 0x2c058);\n  piVar6 = (int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4);\n  (*pcVar9)(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,\n            puVar8 + 0x33f20);\n  if (*piVar6 == 0) {\n    return true;\n  }\n  if (*piVar6 != 1) {\n    pcVar9 = *(code **)(pcVar9 + 0x2c024);\n    (*pcVar9)();\n    iVar2 = *piVar6;\n    if (iVar2 == 0) {\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }\n    else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }\n    return SUB41(iVar2,0);\n  }\n  pcVar7 = (char *)piVar6[1];\n  pcVar1 = pcVar7 + (*pcVar7 == '-');\n  iVar2 = (int)*pcVar1;\n  do {\n    if (9 < iVar2 - 0x30U) {\n      return false;\n    }\n    pcVar1 = pcVar1 + 1;\n    iVar2 = (int)*pcVar1;\n  } while (iVar2 != 0);\n  (**(code **)(pcVar9 + 0x2c044))(piVar6 + 1,pcVar7,10);\n  (**(code **)(pcVar9 + 0x2c124))(pcVar7);\n  *piVar6 = 0;\n  return true;\n}\n\n" (function_definition "_Bool null(VALUE *v)\n\n{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  \n  if (v->type == integer) {\n    return (v->u).i[0]._mp_size == 0;\n  }\n  if (v->type == string) {\n    cVar5 = *(v->u).s;\n    if (cVar5 != '\0') {\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }\n    return true;\n  }\n  puVar8 = PTR_abort_0003e200;\n  (*(code *)PTR_abort_0003e200)();\n  pcVar9 = *(code **)(puVar8 + 0x2c058);\n  piVar6 = (int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4);\n  (*pcVar9)(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,\n            puVar8 + 0x33f20);\n  if (*piVar6 == 0) {\n    return true;\n  }\n  if (*piVar6 != 1) {\n    pcVar9 = *(code **)(pcVar9 + 0x2c024);\n    (*pcVar9)();\n    iVar2 = *piVar6;\n    if (iVar2 == 0) {\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }\n    else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }\n    return SUB41(iVar2,0);\n  }\n  pcVar7 = (char *)piVar6[1];\n  pcVar1 = pcVar7 + (*pcVar7 == '-');\n  iVar2 = (int)*pcVar1;\n  do {\n    if (9 < iVar2 - 0x30U) {\n      return false;\n    }\n    pcVar1 = pcVar1 + 1;\n    iVar2 = (int)*pcVar1;\n  } while (iVar2 != 0);\n  (**(code **)(pcVar9 + 0x2c044))(piVar6 + 1,pcVar7,10);\n  (**(code **)(pcVar9 + 0x2c124))(pcVar7);\n  *piVar6 = 0;\n  return true;\n}" type_identifier (function_declarator "null(VALUE *v)" identifier (parameter_list "(VALUE *v)" ( (parameter_declaration "VALUE *v" type_identifier (pointer_declarator "*v" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  int *piVar6;\n  char *pcVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  \n  if (v->type == integer) {\n    return (v->u).i[0]._mp_size == 0;\n  }\n  if (v->type == string) {\n    cVar5 = *(v->u).s;\n    if (cVar5 != '\0') {\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }\n    return true;\n  }\n  puVar8 = PTR_abort_0003e200;\n  (*(code *)PTR_abort_0003e200)();\n  pcVar9 = *(code **)(puVar8 + 0x2c058);\n  piVar6 = (int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4);\n  (*pcVar9)(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,\n            puVar8 + 0x33f20);\n  if (*piVar6 == 0) {\n    return true;\n  }\n  if (*piVar6 != 1) {\n    pcVar9 = *(code **)(pcVar9 + 0x2c024);\n    (*pcVar9)();\n    iVar2 = *piVar6;\n    if (iVar2 == 0) {\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }\n    else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }\n    return SUB41(iVar2,0);\n  }\n  pcVar7 = (char *)piVar6[1];\n  pcVar1 = pcVar7 + (*pcVar7 == '-');\n  iVar2 = (int)*pcVar1;\n  do {\n    if (9 < iVar2 - 0x30U) {\n      return false;\n    }\n    pcVar1 = pcVar1 + 1;\n    iVar2 = (int)*pcVar1;\n  } while (iVar2 != 0);\n  (**(code **)(pcVar9 + 0x2c044))(piVar6 + 1,pcVar7,10);\n  (**(code **)(pcVar9 + 0x2c124))(pcVar7);\n  *piVar6 = 0;\n  return true;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (if_statement "if (v->type == integer) {\n    return (v->u).i[0]._mp_size == 0;\n  }" if (parenthesized_expression "(v->type == integer)" ( (binary_expression "v->type == integer" (field_expression "v->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    return (v->u).i[0]._mp_size == 0;\n  }" { (return_statement "return (v->u).i[0]._mp_size == 0;" return (binary_expression "(v->u).i[0]._mp_size == 0" (field_expression "(v->u).i[0]._mp_size" (subscript_expression "(v->u).i[0]" (field_expression "(v->u).i" (parenthesized_expression "(v->u)" ( (field_expression "v->u" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) . field_identifier) == number_literal) ;) })) (if_statement "if (v->type == string) {\n    cVar5 = *(v->u).s;\n    if (cVar5 != '\0') {\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }\n    return true;\n  }" if (parenthesized_expression "(v->type == string)" ( (binary_expression "v->type == string" (field_expression "v->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    cVar5 = *(v->u).s;\n    if (cVar5 != '\0') {\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }\n    return true;\n  }" { (expression_statement "cVar5 = *(v->u).s;" (assignment_expression "cVar5 = *(v->u).s" identifier = (pointer_expression "*(v->u).s" * (field_expression "(v->u).s" (parenthesized_expression "(v->u)" ( (field_expression "v->u" identifier -> field_identifier) )) . field_identifier))) ;) (if_statement "if (cVar5 != '\0') {\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar1 = (v->u).s + (cVar5 == '-');\n      cVar5 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');\n    }" { (expression_statement "pcVar1 = (v->u).s + (cVar5 == '-');" (assignment_expression "pcVar1 = (v->u).s + (cVar5 == '-')" identifier = (binary_expression "(v->u).s + (cVar5 == '-')" (field_expression "(v->u).s" (parenthesized_expression "(v->u)" ( (field_expression "v->u" identifier -> field_identifier) )) . field_identifier) + (parenthesized_expression "(cVar5 == '-')" ( (binary_expression "cVar5 == '-'" identifier == (char_literal "'-'" ' character ')) )))) ;) (expression_statement "cVar5 = *pcVar1;" (assignment_expression "cVar5 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (do_statement "do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      } while (cVar5 != '\0');" do (compound_statement "{\n        pcVar1 = pcVar1 + 1;\n        if (cVar5 != '0') {\n          return false;\n        }\n        cVar5 = *pcVar1;\n      }" { (expression_statement "pcVar1 = pcVar1 + 1;" (assignment_expression "pcVar1 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar5 != '0') {\n          return false;\n        }" if (parenthesized_expression "(cVar5 != '0')" ( (binary_expression "cVar5 != '0'" identifier != (char_literal "'0'" ' character ')) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "cVar5 = *pcVar1;" (assignment_expression "cVar5 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) }) while (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return true;" return true ;) })) (expression_statement "puVar8 = PTR_abort_0003e200;" (assignment_expression "puVar8 = PTR_abort_0003e200" identifier = identifier) ;) (expression_statement "(*(code *)PTR_abort_0003e200)();" (call_expression "(*(code *)PTR_abort_0003e200)()" (parenthesized_expression "(*(code *)PTR_abort_0003e200)" ( (pointer_expression "*(code *)PTR_abort_0003e200" * (cast_expression "(code *)PTR_abort_0003e200" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar9 = *(code **)(puVar8 + 0x2c058);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x2c058)" identifier = (pointer_expression "*(code **)(puVar8 + 0x2c058)" * (cast_expression "(code **)(puVar8 + 0x2c058)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2c058)" ( (binary_expression "puVar8 + 0x2c058" identifier + number_literal) ))))) ;) (expression_statement "piVar6 = (int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4);" (assignment_expression "piVar6 = (int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4)" identifier = (cast_expression "(int *)(*(int *)(puVar8 + 0x2bf58) + -0x50a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar8 + 0x2bf58) + -0x50a4)" ( (binary_expression "*(int *)(puVar8 + 0x2bf58) + -0x50a4" (pointer_expression "*(int *)(puVar8 + 0x2bf58)" * (cast_expression "(int *)(puVar8 + 0x2bf58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2bf58)" ( (binary_expression "puVar8 + 0x2bf58" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar9)(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,\n            puVar8 + 0x33f20);" (call_expression "(*pcVar9)(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,\n            puVar8 + 0x33f20)" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "(piVar6,*(int *)(puVar8 + 0x2bf58) + -0x50b4,0xb3,*(int *)(puVar8 + 0x2bf58) + -0x4558,\n            puVar8 + 0x33f20)" ( identifier , (binary_expression "*(int *)(puVar8 + 0x2bf58) + -0x50b4" (pointer_expression "*(int *)(puVar8 + 0x2bf58)" * (cast_expression "(int *)(puVar8 + 0x2bf58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2bf58)" ( (binary_expression "puVar8 + 0x2bf58" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar8 + 0x2bf58) + -0x4558" (pointer_expression "*(int *)(puVar8 + 0x2bf58)" * (cast_expression "(int *)(puVar8 + 0x2bf58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2bf58)" ( (binary_expression "puVar8 + 0x2bf58" identifier + number_literal) )))) + number_literal) , (binary_expression "puVar8 + 0x33f20" identifier + number_literal) ))) ;) (if_statement "if (*piVar6 == 0) {\n    return true;\n  }" if (parenthesized_expression "(*piVar6 == 0)" ( (binary_expression "*piVar6 == 0" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (*piVar6 != 1) {\n    pcVar9 = *(code **)(pcVar9 + 0x2c024);\n    (*pcVar9)();\n    iVar2 = *piVar6;\n    if (iVar2 == 0) {\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }\n    else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }\n    return SUB41(iVar2,0);\n  }" if (parenthesized_expression "(*piVar6 != 1)" ( (binary_expression "*piVar6 != 1" (pointer_expression "*piVar6" * identifier) != number_literal) )) (compound_statement "{\n    pcVar9 = *(code **)(pcVar9 + 0x2c024);\n    (*pcVar9)();\n    iVar2 = *piVar6;\n    if (iVar2 == 0) {\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }\n    else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }\n    return SUB41(iVar2,0);\n  }" { (expression_statement "pcVar9 = *(code **)(pcVar9 + 0x2c024);" (assignment_expression "pcVar9 = *(code **)(pcVar9 + 0x2c024)" identifier = (pointer_expression "*(code **)(pcVar9 + 0x2c024)" * (cast_expression "(code **)(pcVar9 + 0x2c024)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2c024)" ( (binary_expression "pcVar9 + 0x2c024" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = *piVar6;" (assignment_expression "iVar2 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (if_statement "if (iVar2 == 0) {\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }\n    else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);\n      (**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);\n      iVar2 = 1;\n      piVar6[1] = iVar3;\n      *piVar6 = 1;\n    }" { (expression_statement "iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1);" (assignment_expression "iVar3 = (**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1)" identifier = (call_expression "(**(code **)(pcVar9 + 0x2c010))(0,10,piVar6 + 1)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2c010))" ( (pointer_expression "**(code **)(pcVar9 + 0x2c010)" * (pointer_expression "*(code **)(pcVar9 + 0x2c010)" * (cast_expression "(code **)(pcVar9 + 0x2c010)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2c010)" ( (binary_expression "pcVar9 + 0x2c010" identifier + number_literal) ))))) )) (argument_list "(0,10,piVar6 + 1)" ( number_literal , number_literal , (binary_expression "piVar6 + 1" identifier + number_literal) )))) ;) (expression_statement "(**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1);" (call_expression "(**(code **)(pcVar9 + 0x2bfa8))(piVar6 + 1)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2bfa8))" ( (pointer_expression "**(code **)(pcVar9 + 0x2bfa8)" * (pointer_expression "*(code **)(pcVar9 + 0x2bfa8)" * (cast_expression "(code **)(pcVar9 + 0x2bfa8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2bfa8)" ( (binary_expression "pcVar9 + 0x2bfa8" identifier + number_literal) ))))) )) (argument_list "(piVar6 + 1)" ( (binary_expression "piVar6 + 1" identifier + number_literal) ))) ;) (expression_statement "iVar2 = 1;" (assignment_expression "iVar2 = 1" identifier = number_literal) ;) (expression_statement "piVar6[1] = iVar3;" (assignment_expression "piVar6[1] = iVar3" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) }) (else_clause "else if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }" else (if_statement "if (iVar2 != 1) {\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }" if (parenthesized_expression "(iVar2 != 1)" ( (binary_expression "iVar2 != 1" identifier != number_literal) )) (compound_statement "{\n      uVar4 = (**(code **)(pcVar9 + 0x2bf38))();\n      return (_Bool)uVar4;\n    }" { (expression_statement "uVar4 = (**(code **)(pcVar9 + 0x2bf38))();" (assignment_expression "uVar4 = (**(code **)(pcVar9 + 0x2bf38))()" identifier = (call_expression "(**(code **)(pcVar9 + 0x2bf38))()" (parenthesized_expression "(**(code **)(pcVar9 + 0x2bf38))" ( (pointer_expression "**(code **)(pcVar9 + 0x2bf38)" * (pointer_expression "*(code **)(pcVar9 + 0x2bf38)" * (cast_expression "(code **)(pcVar9 + 0x2bf38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2bf38)" ( (binary_expression "pcVar9 + 0x2bf38" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return (_Bool)uVar4;" return (cast_expression "(_Bool)uVar4" ( (type_descriptor "_Bool" type_identifier) ) identifier) ;) })))) (return_statement "return SUB41(iVar2,0);" return (call_expression "SUB41(iVar2,0)" identifier (argument_list "(iVar2,0)" ( identifier , number_literal ))) ;) })) (expression_statement "pcVar7 = (char *)piVar6[1];" (assignment_expression "pcVar7 = (char *)piVar6[1]" identifier = (cast_expression "(char *)piVar6[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar1 = pcVar7 + (*pcVar7 == '-');" (assignment_expression "pcVar1 = pcVar7 + (*pcVar7 == '-')" identifier = (binary_expression "pcVar7 + (*pcVar7 == '-')" identifier + (parenthesized_expression "(*pcVar7 == '-')" ( (binary_expression "*pcVar7 == '-'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'-'" ' character ')) )))) ;) (expression_statement "iVar2 = (int)*pcVar1;" (assignment_expression "iVar2 = (int)*pcVar1" identifier = (cast_expression "(int)*pcVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar1" * identifier))) ;) (do_statement "do {\n    if (9 < iVar2 - 0x30U) {\n      return false;\n    }\n    pcVar1 = pcVar1 + 1;\n    iVar2 = (int)*pcVar1;\n  } while (iVar2 != 0);" do (compound_statement "{\n    if (9 < iVar2 - 0x30U) {\n      return false;\n    }\n    pcVar1 = pcVar1 + 1;\n    iVar2 = (int)*pcVar1;\n  }" { (if_statement "if (9 < iVar2 - 0x30U) {\n      return false;\n    }" if (parenthesized_expression "(9 < iVar2 - 0x30U)" ( (binary_expression "9 < iVar2 - 0x30U" number_literal < (binary_expression "iVar2 - 0x30U" identifier - number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "pcVar1 = pcVar1 + 1;" (assignment_expression "pcVar1 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = (int)*pcVar1;" (assignment_expression "iVar2 = (int)*pcVar1" identifier = (cast_expression "(int)*pcVar1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar1" * identifier))) ;) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) (expression_statement "(**(code **)(pcVar9 + 0x2c044))(piVar6 + 1,pcVar7,10);" (call_expression "(**(code **)(pcVar9 + 0x2c044))(piVar6 + 1,pcVar7,10)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2c044))" ( (pointer_expression "**(code **)(pcVar9 + 0x2c044)" * (pointer_expression "*(code **)(pcVar9 + 0x2c044)" * (cast_expression "(code **)(pcVar9 + 0x2c044)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2c044)" ( (binary_expression "pcVar9 + 0x2c044" identifier + number_literal) ))))) )) (argument_list "(piVar6 + 1,pcVar7,10)" ( (binary_expression "piVar6 + 1" identifier + number_literal) , identifier , number_literal ))) ;) (expression_statement "(**(code **)(pcVar9 + 0x2c124))(pcVar7);" (call_expression "(**(code **)(pcVar9 + 0x2c124))(pcVar7)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2c124))" ( (pointer_expression "**(code **)(pcVar9 + 0x2c124)" * (pointer_expression "*(code **)(pcVar9 + 0x2c124)" * (cast_expression "(code **)(pcVar9 + 0x2c124)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2c124)" ( (binary_expression "pcVar9 + 0x2c124" identifier + number_literal) ))))) )) (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (return_statement "return true;" return true ;) })))
(translation_unit "uint FUN_00012114(int *param_1)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}\n\n" (function_definition "uint FUN_00012114(int *param_1)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00012114(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (if_statement "if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    return (uint)(param_1[2] == 0);\n  }" { (return_statement "return (uint)(param_1[2] == 0);" return (call_expression "(uint)(param_1[2] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) ))) ;) })) (if_statement "if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }" if (parenthesized_expression "(*param_1 == 1)" ( (binary_expression "*param_1 == 1" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }" { (expression_statement "cVar3 = *(char *)param_1[1];" (assignment_expression "cVar3 = *(char *)param_1[1]" identifier = (pointer_expression "*(char *)param_1[1]" * (cast_expression "(char *)param_1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])))) ;) (if_statement "if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }" { (expression_statement "pcVar1 = (char *)param_1[1] + (cVar3 == '-');" (assignment_expression "pcVar1 = (char *)param_1[1] + (cVar3 == '-')" identifier = (binary_expression "(char *)param_1[1] + (cVar3 == '-')" (cast_expression "(char *)param_1[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) + (parenthesized_expression "(cVar3 == '-')" ( (binary_expression "cVar3 == '-'" identifier == (char_literal "'-'" ' character ')) )))) ;) (expression_statement "cVar3 = *pcVar1;" (assignment_expression "cVar3 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (do_statement "do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');" do (compound_statement "{\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      }" { (expression_statement "pcVar1 = pcVar1 + 1;" (assignment_expression "pcVar1 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (if_statement "if (cVar3 != '0') {\n          return 0;\n        }" if (parenthesized_expression "(cVar3 != '0')" ( (binary_expression "cVar3 != '0'" identifier != (char_literal "'0'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar3 = *pcVar1;" (assignment_expression "cVar3 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) }) while (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar2 = (*(code *)PTR_abort_0003e200)();" (assignment_expression "uVar2 = (*(code *)PTR_abort_0003e200)()" identifier = (call_expression "(*(code *)PTR_abort_0003e200)()" (parenthesized_expression "(*(code *)PTR_abort_0003e200)" ( (pointer_expression "*(code *)PTR_abort_0003e200" * (cast_expression "(code *)PTR_abort_0003e200" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) + (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) })) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "uint FUN_00012114(int *param_1)\n\n{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}" (type_identifier "uint") (function_declarator "FUN_00012114(int *param_1)" (identifier "FUN_00012114") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  uint uVar2;\n  char cVar3;\n  \n  if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }\n  if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }\n  uVar2 = (*(code *)PTR_abort_0003e200)();\n  return uVar2;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (if_statement "if (*param_1 == 0) {\n    return (uint)(param_1[2] == 0);\n  }" (if "if") (parenthesized_expression "(*param_1 == 0)" (( "(") (binary_expression "*param_1 == 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return (uint)(param_1[2] == 0);\n  }" ({ "{") (return_statement "return (uint)(param_1[2] == 0);" (return "return") (call_expression "(uint)(param_1[2] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")"))) (; ";")) (} "}"))) (if_statement "if (*param_1 == 1) {\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }" (if "if") (parenthesized_expression "(*param_1 == 1)" (( "(") (binary_expression "*param_1 == 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    cVar3 = *(char *)param_1[1];\n    if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }\n    return 1;\n  }" ({ "{") (expression_statement "cVar3 = *(char *)param_1[1];" (assignment_expression "cVar3 = *(char *)param_1[1]" (identifier "cVar3") (= "=") (pointer_expression "*(char *)param_1[1]" (* "*") (cast_expression "(char *)param_1[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (if_statement "if (cVar3 != '\0') {\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pcVar1 = (char *)param_1[1] + (cVar3 == '-');\n      cVar3 = *pcVar1;\n      do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');\n    }" ({ "{") (expression_statement "pcVar1 = (char *)param_1[1] + (cVar3 == '-');" (assignment_expression "pcVar1 = (char *)param_1[1] + (cVar3 == '-')" (identifier "pcVar1") (= "=") (binary_expression "(char *)param_1[1] + (cVar3 == '-')" (cast_expression "(char *)param_1[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (+ "+") (parenthesized_expression "(cVar3 == '-')" (( "(") (binary_expression "cVar3 == '-'" (identifier "cVar3") (== "==") (char_literal "'-'" (' "'") (character "-") (' "'"))) () ")")))) (; ";")) (expression_statement "cVar3 = *pcVar1;" (assignment_expression "cVar3 = *pcVar1" (identifier "cVar3") (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (do_statement "do {\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      } while (cVar3 != '\0');" (do "do") (compound_statement "{\n        pcVar1 = pcVar1 + 1;\n        if (cVar3 != '0') {\n          return 0;\n        }\n        cVar3 = *pcVar1;\n      }" ({ "{") (expression_statement "pcVar1 = pcVar1 + 1;" (assignment_expression "pcVar1 = pcVar1 + 1" (identifier "pcVar1") (= "=") (binary_expression "pcVar1 + 1" (identifier "pcVar1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar3 != '0') {\n          return 0;\n        }" (if "if") (parenthesized_expression "(cVar3 != '0')" (( "(") (binary_expression "cVar3 != '0'" (identifier "cVar3") (!= "!=") (char_literal "'0'" (' "'") (character "0") (' "'"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "cVar3 = *pcVar1;" (assignment_expression "cVar3 = *pcVar1" (identifier "cVar3") (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar2 = (*(code *)PTR_abort_0003e200)();" (assignment_expression "uVar2 = (*(code *)PTR_abort_0003e200)()" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR_abort_0003e200)()" (parenthesized_expression "(*(code *)PTR_abort_0003e200)" (( "(") (pointer_expression "*(code *)PTR_abort_0003e200" (* "*") (cast_expression "(code *)PTR_abort_0003e200" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_0003e200"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (return_statement (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (return_statement (identifier)))))

uint MASKED(int *param_1)

{
  char *pcVar1;
  uint uVar2;
  char cVar3;
  
  if (*param_1 == 0) {
    return (uint)(param_1[2] == 0);
  }
  if (*param_1 == 1) {
    cVar3 = *(char *)param_1[1];
    if (cVar3 != '\0') {
      pcVar1 = (char *)param_1[1] + (cVar3 == '-');
      cVar3 = *pcVar1;
      do {
        pcVar1 = pcVar1 + 1;
        if (cVar3 != '0') {
          return 0;
        }
        cVar3 = *pcVar1;
      } while (cVar3 != '\0');
    }
    return 1;
  }
  uVar2 = (*(code *)PTR_abort_0003e200)();
  return uVar2;
}

