
int d_number_isra_0(undefined4 *param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  char *pcVar5;
  char *pcVar6;
  
  pcVar5 = (char *)*param_1;
  iVar3 = (int)*pcVar5;
  if (iVar3 == 0x6e) {
    pcVar6 = pcVar5 + 1;
    *param_1 = pcVar6;
    iVar3 = (int)pcVar5[1];
    if (9 < (iVar3 - 0x30U & 0xff)) {
      return 0;
    }
    bVar1 = true;
  }
  else {
    bVar1 = false;
    pcVar6 = pcVar5;
    if (9 < (iVar3 - 0x30U & 0xff)) {
      return 0;
    }
  }
  iVar2 = 0;
  do {
    pcVar6 = pcVar6 + 1;
    *param_1 = pcVar6;
    uVar4 = (int)*pcVar6 - 0x30;
    iVar3 = iVar2 * 10 + iVar3;
    iVar2 = iVar3 + -0x30;
    if (9 < (uVar4 & 0xff)) {
      if (!bVar1) {
        return iVar2;
      }
      return 0x30 - iVar3;
    }
    iVar3 = (int)*pcVar6;
  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));
  return -1;
}



int FUN_0035f584(undefined4 *param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  char *pcVar5;
  char *pcVar6;
  
  pcVar5 = (char *)*param_1;
  iVar3 = (int)*pcVar5;
  if (iVar3 == 0x6e) {
    pcVar6 = pcVar5 + 1;
    *param_1 = pcVar6;
    iVar3 = (int)pcVar5[1];
    if (9 < (iVar3 - 0x30U & 0xff)) {
      return 0;
    }
    bVar1 = true;
  }
  else {
    bVar1 = false;
    pcVar6 = pcVar5;
    if (9 < (iVar3 - 0x30U & 0xff)) {
      return 0;
    }
  }
  iVar2 = 0;
  do {
    pcVar6 = pcVar6 + 1;
    *param_1 = pcVar6;
    uVar4 = (int)*pcVar6 - 0x30;
    iVar3 = iVar2 * 10 + iVar3;
    iVar2 = iVar3 + -0x30;
    if (9 < (uVar4 & 0xff)) {
      if (!bVar1) {
        return iVar2;
      }
      return 0x30 - iVar3;
    }
    iVar3 = (int)*pcVar6;
  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));
  return -1;
}


lw t0,0x0(a0)
li v0,0x6e
lb v1,0x0(t0)
beq v1,v0,0x0035f634
_addiu v0,v1,-0x30
andi v0,v0,0xff
sltiu v0,v0,0xa
beq v0,zero,0x0035f65c
_or t4,zero,zero
lui t3,0x7fff
lui t2,0xcccc
or a3,v1,zero
addiu t0,t0,0x1
or v0,zero,zero
ori t3,t3,0xffff
b 0x0035f5d8
_ori t2,t2,0xcccd
srl a2,a2,0x3
slt a2,a2,v0
bne a2,zero,0x0035f628
_or a3,t1,zero
sw t0,0x0(a0)
sll a1,v0,0x2
lb t1,0x0(t0)
addiu t0,t0,0x1
addu v1,a1,v0
addiu a1,t1,-0x30
sll v1,v1,0x1
subu v0,t3,a1
addu v1,v1,a3
multu v0,t2
andi a1,a1,0xff
sltiu a3,a1,0xa
addiu v0,v1,-0x30
bne a3,zero,0x0035f5c8
_mfhi a2
beq t4,zero,0x0035f62c
_nop
li v0,0x30
jr ra
_subu v0,v0,v1
li v0,-0x1
jr ra
_nop
addiu a1,t0,0x1
sw a1,0x0(a0)
lb v1,0x1(t0)
addiu v0,v1,-0x30
andi v0,v0,0xff
sltiu v0,v0,0xa
beq v0,zero,0x0035f65c
_or t0,a1,zero
b 0x0035f5a8
_li t4,0x1
jr ra
_or v0,zero,zero
(translation_unit "int FUN_0035f584(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}\n\n" (function_definition "int FUN_0035f584(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" primitive_type (function_declarator "FUN_0035f584(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar5 = (char *)*param_1;" (assignment_expression "pcVar5 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar3 = (int)*pcVar5;" (assignment_expression "iVar3 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) (if_statement "if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(iVar3 == 0x6e)" ( (binary_expression "iVar3 == 0x6e" identifier == number_literal) )) (compound_statement "{\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }" { (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar3 = (int)pcVar5[1];" (assignment_expression "iVar3 = (int)pcVar5[1]" identifier = (cast_expression "(int)pcVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ]))) ;) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" if (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar3 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar3 - 0x30U & 0xff)" ( (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) }) (else_clause "else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" identifier = identifier) ;) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" if (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar3 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar3 - 0x30U & 0xff)" ( (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));" do (compound_statement "{\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  }" { (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar4 = (int)*pcVar6 - 0x30;" (assignment_expression "uVar4 = (int)*pcVar6 - 0x30" identifier = (binary_expression "(int)*pcVar6 - 0x30" (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier)) - number_literal)) ;) (expression_statement "iVar3 = iVar2 * 10 + iVar3;" (assignment_expression "iVar3 = iVar2 * 10 + iVar3" identifier = (binary_expression "iVar2 * 10 + iVar3" (binary_expression "iVar2 * 10" identifier * number_literal) + identifier)) ;) (expression_statement "iVar2 = iVar3 + -0x30;" (assignment_expression "iVar2 = iVar3 + -0x30" identifier = (binary_expression "iVar3 + -0x30" identifier + number_literal)) ;) (if_statement "if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" if (parenthesized_expression "(9 < (uVar4 & 0xff))" ( (binary_expression "9 < (uVar4 & 0xff)" number_literal < (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" { (if_statement "if (!bVar1) {\n        return iVar2;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return iVar2;\n      }" { (return_statement "return iVar2;" return identifier ;) })) (return_statement "return 0x30 - iVar3;" return (binary_expression "0x30 - iVar3" number_literal - identifier) ;) })) (expression_statement "iVar3 = (int)*pcVar6;" (assignment_expression "iVar3 = (int)*pcVar6" identifier = (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier))) ;) }) while (parenthesized_expression "(iVar2 <= (int)((0x7fffffff - uVar4) / 10))" ( (binary_expression "iVar2 <= (int)((0x7fffffff - uVar4) / 10)" identifier <= (cast_expression "(int)((0x7fffffff - uVar4) / 10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x7fffffff - uVar4) / 10)" ( (binary_expression "(0x7fffffff - uVar4) / 10" (parenthesized_expression "(0x7fffffff - uVar4)" ( (binary_expression "0x7fffffff - uVar4" number_literal - identifier) )) / number_literal) )))) )) ;) (return_statement "return -1;" return number_literal ;) })))
(translation_unit "int d_number_isra_0(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}\n\n" (function_definition "int d_number_isra_0(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" primitive_type (function_declarator "d_number_isra_0(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar5 = (char *)*param_1;" (assignment_expression "pcVar5 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar3 = (int)*pcVar5;" (assignment_expression "iVar3 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) (if_statement "if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(iVar3 == 0x6e)" ( (binary_expression "iVar3 == 0x6e" identifier == number_literal) )) (compound_statement "{\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }" { (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar3 = (int)pcVar5[1];" (assignment_expression "iVar3 = (int)pcVar5[1]" identifier = (cast_expression "(int)pcVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ]))) ;) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" if (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar3 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar3 - 0x30U & 0xff)" ( (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) }) (else_clause "else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" identifier = identifier) ;) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" if (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar3 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar3 - 0x30U & 0xff)" ( (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));" do (compound_statement "{\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  }" { (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar4 = (int)*pcVar6 - 0x30;" (assignment_expression "uVar4 = (int)*pcVar6 - 0x30" identifier = (binary_expression "(int)*pcVar6 - 0x30" (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier)) - number_literal)) ;) (expression_statement "iVar3 = iVar2 * 10 + iVar3;" (assignment_expression "iVar3 = iVar2 * 10 + iVar3" identifier = (binary_expression "iVar2 * 10 + iVar3" (binary_expression "iVar2 * 10" identifier * number_literal) + identifier)) ;) (expression_statement "iVar2 = iVar3 + -0x30;" (assignment_expression "iVar2 = iVar3 + -0x30" identifier = (binary_expression "iVar3 + -0x30" identifier + number_literal)) ;) (if_statement "if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" if (parenthesized_expression "(9 < (uVar4 & 0xff))" ( (binary_expression "9 < (uVar4 & 0xff)" number_literal < (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" { (if_statement "if (!bVar1) {\n        return iVar2;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return iVar2;\n      }" { (return_statement "return iVar2;" return identifier ;) })) (return_statement "return 0x30 - iVar3;" return (binary_expression "0x30 - iVar3" number_literal - identifier) ;) })) (expression_statement "iVar3 = (int)*pcVar6;" (assignment_expression "iVar3 = (int)*pcVar6" identifier = (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier))) ;) }) while (parenthesized_expression "(iVar2 <= (int)((0x7fffffff - uVar4) / 10))" ( (binary_expression "iVar2 <= (int)((0x7fffffff - uVar4) / 10)" identifier <= (cast_expression "(int)((0x7fffffff - uVar4) / 10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x7fffffff - uVar4) / 10)" ( (binary_expression "(0x7fffffff - uVar4) / 10" (parenthesized_expression "(0x7fffffff - uVar4)" ( (binary_expression "0x7fffffff - uVar4" number_literal - identifier) )) / number_literal) )))) )) ;) (return_statement "return -1;" return number_literal ;) })))
(translation_unit "int FUN_0035f584(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}\n\n" (function_definition "int FUN_0035f584(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" primitive_type (function_declarator "FUN_0035f584(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (expression_statement "pcVar5 = (char *)*param_1;" (assignment_expression "pcVar5 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "iVar3 = (int)*pcVar5;" (assignment_expression "iVar3 = (int)*pcVar5" identifier = (cast_expression "(int)*pcVar5" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar5" * identifier))) ;) (if_statement "if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" if (parenthesized_expression "(iVar3 == 0x6e)" ( (binary_expression "iVar3 == 0x6e" identifier == number_literal) )) (compound_statement "{\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }" { (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar3 = (int)pcVar5[1];" (assignment_expression "iVar3 = (int)pcVar5[1]" identifier = (cast_expression "(int)pcVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ]))) ;) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" if (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar3 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar3 - 0x30U & 0xff)" ( (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) }) (else_clause "else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" else (compound_statement "{\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" identifier = identifier) ;) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" if (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" ( (binary_expression "9 < (iVar3 - 0x30U & 0xff)" number_literal < (parenthesized_expression "(iVar3 - 0x30U & 0xff)" ( (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" identifier - number_literal) & number_literal) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));" do (compound_statement "{\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  }" { (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "uVar4 = (int)*pcVar6 - 0x30;" (assignment_expression "uVar4 = (int)*pcVar6 - 0x30" identifier = (binary_expression "(int)*pcVar6 - 0x30" (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier)) - number_literal)) ;) (expression_statement "iVar3 = iVar2 * 10 + iVar3;" (assignment_expression "iVar3 = iVar2 * 10 + iVar3" identifier = (binary_expression "iVar2 * 10 + iVar3" (binary_expression "iVar2 * 10" identifier * number_literal) + identifier)) ;) (expression_statement "iVar2 = iVar3 + -0x30;" (assignment_expression "iVar2 = iVar3 + -0x30" identifier = (binary_expression "iVar3 + -0x30" identifier + number_literal)) ;) (if_statement "if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" if (parenthesized_expression "(9 < (uVar4 & 0xff))" ( (binary_expression "9 < (uVar4 & 0xff)" number_literal < (parenthesized_expression "(uVar4 & 0xff)" ( (binary_expression "uVar4 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" { (if_statement "if (!bVar1) {\n        return iVar2;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return iVar2;\n      }" { (return_statement "return iVar2;" return identifier ;) })) (return_statement "return 0x30 - iVar3;" return (binary_expression "0x30 - iVar3" number_literal - identifier) ;) })) (expression_statement "iVar3 = (int)*pcVar6;" (assignment_expression "iVar3 = (int)*pcVar6" identifier = (cast_expression "(int)*pcVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar6" * identifier))) ;) }) while (parenthesized_expression "(iVar2 <= (int)((0x7fffffff - uVar4) / 10))" ( (binary_expression "iVar2 <= (int)((0x7fffffff - uVar4) / 10)" identifier <= (cast_expression "(int)((0x7fffffff - uVar4) / 10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((0x7fffffff - uVar4) / 10)" ( (binary_expression "(0x7fffffff - uVar4) / 10" (parenthesized_expression "(0x7fffffff - uVar4)" ( (binary_expression "0x7fffffff - uVar4" number_literal - identifier) )) / number_literal) )))) )) ;) (return_statement "return -1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (return_statement return (binary_expression LIT - IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) / LIT) )))) )) ;) (return_statement return LIT ;) })))
(function_definition "int FUN_0035f584(undefined4 *param_1)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" (primitive_type "int") (function_declarator "FUN_0035f584(undefined4 *param_1)" (identifier "FUN_0035f584") (parameter_list "(undefined4 *param_1)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  uint uVar4;\n  char *pcVar5;\n  char *pcVar6;\n  \n  pcVar5 = (char *)*param_1;\n  iVar3 = (int)*pcVar5;\n  if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }\n  iVar2 = 0;\n  do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));\n  return -1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (expression_statement "pcVar5 = (char *)*param_1;" (assignment_expression "pcVar5 = (char *)*param_1" (identifier "pcVar5") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "iVar3 = (int)*pcVar5;" (assignment_expression "iVar3 = (int)*pcVar5" (identifier "iVar3") (= "=") (cast_expression "(int)*pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")))) (; ";")) (if_statement "if (iVar3 == 0x6e) {\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }\n  else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 == 0x6e)" (( "(") (binary_expression "iVar3 == 0x6e" (identifier "iVar3") (== "==") (number_literal "0x6e")) () ")")) (compound_statement "{\n    pcVar6 = pcVar5 + 1;\n    *param_1 = pcVar6;\n    iVar3 = (int)pcVar5[1];\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n    bVar1 = true;\n  }" ({ "{") (expression_statement "pcVar6 = pcVar5 + 1;" (assignment_expression "pcVar6 = pcVar5 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pcVar6")) (; ";")) (expression_statement "iVar3 = (int)pcVar5[1];" (assignment_expression "iVar3 = (int)pcVar5[1]" (identifier "iVar3") (= "=") (cast_expression "(int)pcVar5[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" (( "(") (binary_expression "9 < (iVar3 - 0x30U & 0xff)" (number_literal "9") (< "<") (parenthesized_expression "(iVar3 - 0x30U & 0xff)" (( "(") (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" (identifier "iVar3") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff")) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" (else "else") (compound_statement "{\n    bVar1 = false;\n    pcVar6 = pcVar5;\n    if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "pcVar6 = pcVar5;" (assignment_expression "pcVar6 = pcVar5" (identifier "pcVar6") (= "=") (identifier "pcVar5")) (; ";")) (if_statement "if (9 < (iVar3 - 0x30U & 0xff)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(9 < (iVar3 - 0x30U & 0xff))" (( "(") (binary_expression "9 < (iVar3 - 0x30U & 0xff)" (number_literal "9") (< "<") (parenthesized_expression "(iVar3 - 0x30U & 0xff)" (( "(") (binary_expression "iVar3 - 0x30U & 0xff" (binary_expression "iVar3 - 0x30U" (identifier "iVar3") (- "-") (number_literal "0x30U")) (& "&") (number_literal "0xff")) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));" (do "do") (compound_statement "{\n    pcVar6 = pcVar6 + 1;\n    *param_1 = pcVar6;\n    uVar4 = (int)*pcVar6 - 0x30;\n    iVar3 = iVar2 * 10 + iVar3;\n    iVar2 = iVar3 + -0x30;\n    if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }\n    iVar3 = (int)*pcVar6;\n  }" ({ "{") (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_1 = pcVar6;" (assignment_expression "*param_1 = pcVar6" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "pcVar6")) (; ";")) (expression_statement "uVar4 = (int)*pcVar6 - 0x30;" (assignment_expression "uVar4 = (int)*pcVar6 - 0x30" (identifier "uVar4") (= "=") (binary_expression "(int)*pcVar6 - 0x30" (cast_expression "(int)*pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6"))) (- "-") (number_literal "0x30"))) (; ";")) (expression_statement "iVar3 = iVar2 * 10 + iVar3;" (assignment_expression "iVar3 = iVar2 * 10 + iVar3" (identifier "iVar3") (= "=") (binary_expression "iVar2 * 10 + iVar3" (binary_expression "iVar2 * 10" (identifier "iVar2") (* "*") (number_literal "10")) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar2 = iVar3 + -0x30;" (assignment_expression "iVar2 = iVar3 + -0x30" (identifier "iVar2") (= "=") (binary_expression "iVar3 + -0x30" (identifier "iVar3") (+ "+") (number_literal "-0x30"))) (; ";")) (if_statement "if (9 < (uVar4 & 0xff)) {\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" (if "if") (parenthesized_expression "(9 < (uVar4 & 0xff))" (( "(") (binary_expression "9 < (uVar4 & 0xff)" (number_literal "9") (< "<") (parenthesized_expression "(uVar4 & 0xff)" (( "(") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff")) () ")"))) () ")")) (compound_statement "{\n      if (!bVar1) {\n        return iVar2;\n      }\n      return 0x30 - iVar3;\n    }" ({ "{") (if_statement "if (!bVar1) {\n        return iVar2;\n      }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n        return iVar2;\n      }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (return_statement "return 0x30 - iVar3;" (return "return") (binary_expression "0x30 - iVar3" (number_literal "0x30") (- "-") (identifier "iVar3")) (; ";")) (} "}"))) (expression_statement "iVar3 = (int)*pcVar6;" (assignment_expression "iVar3 = (int)*pcVar6" (identifier "iVar3") (= "=") (cast_expression "(int)*pcVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 <= (int)((0x7fffffff - uVar4) / 10))" (( "(") (binary_expression "iVar2 <= (int)((0x7fffffff - uVar4) / 10)" (identifier "iVar2") (<= "<=") (cast_expression "(int)((0x7fffffff - uVar4) / 10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((0x7fffffff - uVar4) / 10)" (( "(") (binary_expression "(0x7fffffff - uVar4) / 10" (parenthesized_expression "(0x7fffffff - uVar4)" (( "(") (binary_expression "0x7fffffff - uVar4" (number_literal "0x7fffffff") (- "-") (identifier "uVar4")) () ")")) (/ "/") (number_literal "10")) () ")")))) () ")")) (; ";")) (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}")))

int function_1(type_1 *param_1)

{
  bool bVar1;
  int var_4;
  int var_1;
  type_2 var_5;
  char *var_2;
  char *var_3;
  
  var_2 = (char *)*param_1;
  var_1 = (int)*var_2;
  if (var_1 == 0x6e) {
    var_3 = var_2 + 1;
    *param_1 = var_3;
    var_1 = (int)var_2[1];
    if (9 < (var_1 - 0x30U & 0xff)) {
      return 0;
    }
    bVar1 = true;
  }
  else {
    bVar1 = false;
    var_3 = var_2;
    if (9 < (var_1 - 0x30U & 0xff)) {
      return 0;
    }
  }
  var_4 = 0;
  do {
    var_3 = var_3 + 1;
    *param_1 = var_3;
    var_5 = (int)*var_3 - 0x30;
    var_1 = var_4 * 10 + var_1;
    var_4 = var_1 + -0x30;
    if (9 < (var_5 & 0xff)) {
      if (!bVar1) {
        return var_4;
      }
      return 0x30 - var_1;
    }
    var_1 = (int)*var_3;
  } while (var_4 <= (int)((0x7fffffff - var_5) / 10));
  return -1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (compound_statement (return_statement (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (return_statement (binary_expression left: (number_literal) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (number_literal))))))) (return_statement (number_literal)))))

int MASKED(undefined4 *param_1)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  uint uVar4;
  char *pcVar5;
  char *pcVar6;
  
  pcVar5 = (char *)*param_1;
  iVar3 = (int)*pcVar5;
  if (iVar3 == 0x6e) {
    pcVar6 = pcVar5 + 1;
    *param_1 = pcVar6;
    iVar3 = (int)pcVar5[1];
    if (9 < (iVar3 - 0x30U & 0xff)) {
      return 0;
    }
    bVar1 = true;
  }
  else {
    bVar1 = false;
    pcVar6 = pcVar5;
    if (9 < (iVar3 - 0x30U & 0xff)) {
      return 0;
    }
  }
  iVar2 = 0;
  do {
    pcVar6 = pcVar6 + 1;
    *param_1 = pcVar6;
    uVar4 = (int)*pcVar6 - 0x30;
    iVar3 = iVar2 * 10 + iVar3;
    iVar2 = iVar3 + -0x30;
    if (9 < (uVar4 & 0xff)) {
      if (!bVar1) {
        return iVar2;
      }
      return 0x30 - iVar3;
    }
    iVar3 = (int)*pcVar6;
  } while (iVar2 <= (int)((0x7fffffff - uVar4) / 10));
  return -1;
}

