
_Bool is_valid_ipv4_address(char *str,char *end)

{
  bool bVar1;
  int iVar2;
  char *pcVar3;
  uint uVar4;
  int iVar5;
  
  iVar2 = 0;
  if (end <= str) {
    return false;
  }
  iVar5 = 0;
  bVar1 = false;
  do {
    pcVar3 = str + 1;
    uVar4 = (int)*str - 0x30;
    iVar2 = uVar4 + iVar2 * 10;
    if (uVar4 < 10) {
      if (0xff < iVar2) {
        return false;
      }
      if (!bVar1) {
        iVar5 = iVar5 + 1;
        if (4 < iVar5) {
          return bVar1;
        }
        bVar1 = true;
      }
    }
    else {
      iVar2 = 0;
      if (*str != 0x2e) {
        return false;
      }
      if (!bVar1) {
        return bVar1;
      }
      bVar1 = false;
      if (iVar5 == 4) {
        return false;
      }
    }
    str = pcVar3;
    if (end == pcVar3) {
      return 3 < iVar5;
    }
  } while( true );
}



bool FUN_0002f300(char *param_1,char *param_2)

{
  bool bVar1;
  int iVar2;
  char *pcVar3;
  uint uVar4;
  int iVar5;
  
  iVar2 = 0;
  if (param_2 <= param_1) {
    return false;
  }
  iVar5 = 0;
  bVar1 = false;
  do {
    pcVar3 = param_1 + 1;
    uVar4 = (int)*param_1 - 0x30;
    iVar2 = uVar4 + iVar2 * 10;
    if (uVar4 < 10) {
      if (0xff < iVar2) {
        return false;
      }
      if (!bVar1) {
        iVar5 = iVar5 + 1;
        if (4 < iVar5) {
          return false;
        }
        bVar1 = true;
      }
    }
    else {
      iVar2 = 0;
      if (*param_1 != 0x2e) {
        return false;
      }
      if (!bVar1) {
        return false;
      }
      bVar1 = false;
      if (iVar5 == 4) {
        return false;
      }
    }
    param_1 = pcVar3;
    if (param_2 == pcVar3) {
      return 3 < iVar5;
    }
  } while( true );
}


sltu v0,a0,a1
beq v0,zero,0x0002f398
_or v1,zero,zero
or t1,zero,zero
or v0,zero,zero
li t2,0x2e
b 0x0002f350
_li t3,0x4
slti a2,v1,0x100
beq a2,zero,0x0002f398
_nop
bne v0,zero,0x0002f348
_nop
addiu t1,t1,0x1
slti a2,t1,0x5
beq a2,zero,0x0002f390
_nop
li v0,0x1
beq a1,a0,0x0002f3a0
_nop
addiu a0,a0,0x1
lb a3,-0x1(a0)
sll a2,v1,0x2
addu v1,a2,v1
addiu a2,a3,-0x30
sll v1,v1,0x1
sltiu t0,a2,0xa
bne t0,zero,0x0002f320
_addu v1,a2,v1
bne a3,t2,0x0002f398
_or v1,zero,zero
beq v0,zero,0x0002f390
_nop
bne t1,t3,0x0002f348
_or v0,zero,zero
or v0,zero,zero
jr ra
_nop
jr ra
_or v0,zero,zero
slti v0,t1,0x4
jr ra
_xori v0,v0,0x1
(translation_unit "bool FUN_0002f300(char *param_1,char *param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}\n\n" (function_definition "bool FUN_0002f300(char *param_1,char *param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0002f300(char *param_1,char *param_2)" identifier (parameter_list "(char *param_1,char *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_2 <= param_1) {\n    return false;\n  }" if (parenthesized_expression "(param_2 <= param_1)" ( (binary_expression "param_2 <= param_1" identifier <= identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (do_statement "do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );" do (compound_statement "{\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  }" { (expression_statement "pcVar3 = param_1 + 1;" (assignment_expression "pcVar3 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (int)*param_1 - 0x30;" (assignment_expression "uVar4 = (int)*param_1 - 0x30" identifier = (binary_expression "(int)*param_1 - 0x30" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) - number_literal)) ;) (expression_statement "iVar2 = uVar4 + iVar2 * 10;" (assignment_expression "iVar2 = uVar4 + iVar2 * 10" identifier = (binary_expression "uVar4 + iVar2 * 10" identifier + (binary_expression "iVar2 * 10" identifier * number_literal))) ;) (if_statement "if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" if (parenthesized_expression "(uVar4 < 10)" ( (binary_expression "uVar4 < 10" identifier < number_literal) )) (compound_statement "{\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }" { (if_statement "if (0xff < iVar2) {\n        return false;\n      }" if (parenthesized_expression "(0xff < iVar2)" ( (binary_expression "0xff < iVar2" number_literal < identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (4 < iVar5) {\n          return false;\n        }" if (parenthesized_expression "(4 < iVar5)" ( (binary_expression "4 < iVar5" number_literal < identifier) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) }) (else_clause "else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" else (compound_statement "{\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (*param_1 != 0x2e) {\n        return false;\n      }" if (parenthesized_expression "(*param_1 != 0x2e)" ( (binary_expression "*param_1 != 0x2e" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (!bVar1) {\n        return false;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (iVar5 == 4) {\n        return false;\n      }" if (parenthesized_expression "(iVar5 == 4)" ( (binary_expression "iVar5 == 4" identifier == number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "param_1 = pcVar3;" (assignment_expression "param_1 = pcVar3" identifier = identifier) ;) (if_statement "if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }" if (parenthesized_expression "(param_2 == pcVar3)" ( (binary_expression "param_2 == pcVar3" identifier == identifier) )) (compound_statement "{\n      return 3 < iVar5;\n    }" { (return_statement "return 3 < iVar5;" return (binary_expression "3 < iVar5" number_literal < identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "_Bool is_valid_ipv4_address(char *str,char *end)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (end <= str) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = str + 1;\n    uVar4 = (int)*str - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    str = pcVar3;\n    if (end == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}\n\n" (function_definition "_Bool is_valid_ipv4_address(char *str,char *end)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (end <= str) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = str + 1;\n    uVar4 = (int)*str - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    str = pcVar3;\n    if (end == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" type_identifier (function_declarator "is_valid_ipv4_address(char *str,char *end)" identifier (parameter_list "(char *str,char *end)" ( (parameter_declaration "char *str" primitive_type (pointer_declarator "*str" * identifier)) , (parameter_declaration "char *end" primitive_type (pointer_declarator "*end" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (end <= str) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = str + 1;\n    uVar4 = (int)*str - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    str = pcVar3;\n    if (end == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (end <= str) {\n    return false;\n  }" if (parenthesized_expression "(end <= str)" ( (binary_expression "end <= str" identifier <= identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (do_statement "do {\n    pcVar3 = str + 1;\n    uVar4 = (int)*str - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    str = pcVar3;\n    if (end == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );" do (compound_statement "{\n    pcVar3 = str + 1;\n    uVar4 = (int)*str - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    str = pcVar3;\n    if (end == pcVar3) {\n      return 3 < iVar5;\n    }\n  }" { (expression_statement "pcVar3 = str + 1;" (assignment_expression "pcVar3 = str + 1" identifier = (binary_expression "str + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (int)*str - 0x30;" (assignment_expression "uVar4 = (int)*str - 0x30" identifier = (binary_expression "(int)*str - 0x30" (cast_expression "(int)*str" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*str" * identifier)) - number_literal)) ;) (expression_statement "iVar2 = uVar4 + iVar2 * 10;" (assignment_expression "iVar2 = uVar4 + iVar2 * 10" identifier = (binary_expression "uVar4 + iVar2 * 10" identifier + (binary_expression "iVar2 * 10" identifier * number_literal))) ;) (if_statement "if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" if (parenthesized_expression "(uVar4 < 10)" ( (binary_expression "uVar4 < 10" identifier < number_literal) )) (compound_statement "{\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }\n    }" { (if_statement "if (0xff < iVar2) {\n        return false;\n      }" if (parenthesized_expression "(0xff < iVar2)" ( (binary_expression "0xff < iVar2" number_literal < identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return bVar1;\n        }\n        bVar1 = true;\n      }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (4 < iVar5) {\n          return bVar1;\n        }" if (parenthesized_expression "(4 < iVar5)" ( (binary_expression "4 < iVar5" number_literal < identifier) )) (compound_statement "{\n          return bVar1;\n        }" { (return_statement "return bVar1;" return identifier ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) }) (else_clause "else {\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" else (compound_statement "{\n      iVar2 = 0;\n      if (*str != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return bVar1;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (*str != 0x2e) {\n        return false;\n      }" if (parenthesized_expression "(*str != 0x2e)" ( (binary_expression "*str != 0x2e" (pointer_expression "*str" * identifier) != number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (!bVar1) {\n        return bVar1;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return bVar1;\n      }" { (return_statement "return bVar1;" return identifier ;) })) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (iVar5 == 4) {\n        return false;\n      }" if (parenthesized_expression "(iVar5 == 4)" ( (binary_expression "iVar5 == 4" identifier == number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "str = pcVar3;" (assignment_expression "str = pcVar3" identifier = identifier) ;) (if_statement "if (end == pcVar3) {\n      return 3 < iVar5;\n    }" if (parenthesized_expression "(end == pcVar3)" ( (binary_expression "end == pcVar3" identifier == identifier) )) (compound_statement "{\n      return 3 < iVar5;\n    }" { (return_statement "return 3 < iVar5;" return (binary_expression "3 < iVar5" number_literal < identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "bool FUN_0002f300(char *param_1,char *param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}\n\n" (function_definition "bool FUN_0002f300(char *param_1,char *param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" primitive_type (function_declarator "FUN_0002f300(char *param_1,char *param_2)" identifier (parameter_list "(char *param_1,char *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_2 <= param_1) {\n    return false;\n  }" if (parenthesized_expression "(param_2 <= param_1)" ( (binary_expression "param_2 <= param_1" identifier <= identifier) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (do_statement "do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );" do (compound_statement "{\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  }" { (expression_statement "pcVar3 = param_1 + 1;" (assignment_expression "pcVar3 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = (int)*param_1 - 0x30;" (assignment_expression "uVar4 = (int)*param_1 - 0x30" identifier = (binary_expression "(int)*param_1 - 0x30" (cast_expression "(int)*param_1" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_1" * identifier)) - number_literal)) ;) (expression_statement "iVar2 = uVar4 + iVar2 * 10;" (assignment_expression "iVar2 = uVar4 + iVar2 * 10" identifier = (binary_expression "uVar4 + iVar2 * 10" identifier + (binary_expression "iVar2 * 10" identifier * number_literal))) ;) (if_statement "if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" if (parenthesized_expression "(uVar4 < 10)" ( (binary_expression "uVar4 < 10" identifier < number_literal) )) (compound_statement "{\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }" { (if_statement "if (0xff < iVar2) {\n        return false;\n      }" if (parenthesized_expression "(0xff < iVar2)" ( (binary_expression "0xff < iVar2" number_literal < identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (4 < iVar5) {\n          return false;\n        }" if (parenthesized_expression "(4 < iVar5)" ( (binary_expression "4 < iVar5" number_literal < identifier) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) }) (else_clause "else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" else (compound_statement "{\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (*param_1 != 0x2e) {\n        return false;\n      }" if (parenthesized_expression "(*param_1 != 0x2e)" ( (binary_expression "*param_1 != 0x2e" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (!bVar1) {\n        return false;\n      }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (if_statement "if (iVar5 == 4) {\n        return false;\n      }" if (parenthesized_expression "(iVar5 == 4)" ( (binary_expression "iVar5 == 4" identifier == number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) }))) (expression_statement "param_1 = pcVar3;" (assignment_expression "param_1 = pcVar3" identifier = identifier) ;) (if_statement "if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }" if (parenthesized_expression "(param_2 == pcVar3)" ( (binary_expression "param_2 == pcVar3" identifier == identifier) )) (compound_statement "{\n      return 3 < iVar5;\n    }" { (return_statement "return 3 < iVar5;" return (binary_expression "3 < iVar5" number_literal < identifier) ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return (binary_expression LIT < IDENT) ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "bool FUN_0002f300(char *param_1,char *param_2)\n\n{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" (primitive_type "bool") (function_declarator "FUN_0002f300(char *param_1,char *param_2)" (identifier "FUN_0002f300") (parameter_list "(char *param_1,char *param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  char *pcVar3;\n  uint uVar4;\n  int iVar5;\n  \n  iVar2 = 0;\n  if (param_2 <= param_1) {\n    return false;\n  }\n  iVar5 = 0;\n  bVar1 = false;\n  do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_2 <= param_1) {\n    return false;\n  }" (if "if") (parenthesized_expression "(param_2 <= param_1)" (( "(") (binary_expression "param_2 <= param_1" (identifier "param_2") (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (do_statement "do {\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    pcVar3 = param_1 + 1;\n    uVar4 = (int)*param_1 - 0x30;\n    iVar2 = uVar4 + iVar2 * 10;\n    if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }\n    param_1 = pcVar3;\n    if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }\n  }" ({ "{") (expression_statement "pcVar3 = param_1 + 1;" (assignment_expression "pcVar3 = param_1 + 1" (identifier "pcVar3") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = (int)*param_1 - 0x30;" (assignment_expression "uVar4 = (int)*param_1 - 0x30" (identifier "uVar4") (= "=") (binary_expression "(int)*param_1 - 0x30" (cast_expression "(int)*param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (- "-") (number_literal "0x30"))) (; ";")) (expression_statement "iVar2 = uVar4 + iVar2 * 10;" (assignment_expression "iVar2 = uVar4 + iVar2 * 10" (identifier "iVar2") (= "=") (binary_expression "uVar4 + iVar2 * 10" (identifier "uVar4") (+ "+") (binary_expression "iVar2 * 10" (identifier "iVar2") (* "*") (number_literal "10")))) (; ";")) (if_statement "if (uVar4 < 10) {\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }\n    else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" (if "if") (parenthesized_expression "(uVar4 < 10)" (( "(") (binary_expression "uVar4 < 10" (identifier "uVar4") (< "<") (number_literal "10")) () ")")) (compound_statement "{\n      if (0xff < iVar2) {\n        return false;\n      }\n      if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }\n    }" ({ "{") (if_statement "if (0xff < iVar2) {\n        return false;\n      }" (if "if") (parenthesized_expression "(0xff < iVar2)" (( "(") (binary_expression "0xff < iVar2" (number_literal "0xff") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if (!bVar1) {\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n        iVar5 = iVar5 + 1;\n        if (4 < iVar5) {\n          return false;\n        }\n        bVar1 = true;\n      }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (4 < iVar5) {\n          return false;\n        }" (if "if") (parenthesized_expression "(4 < iVar5)" (( "(") (binary_expression "4 < iVar5" (number_literal "4") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n          return false;\n        }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" (else "else") (compound_statement "{\n      iVar2 = 0;\n      if (*param_1 != 0x2e) {\n        return false;\n      }\n      if (!bVar1) {\n        return false;\n      }\n      bVar1 = false;\n      if (iVar5 == 4) {\n        return false;\n      }\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*param_1 != 0x2e) {\n        return false;\n      }" (if "if") (parenthesized_expression "(*param_1 != 0x2e)" (( "(") (binary_expression "*param_1 != 0x2e" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0x2e")) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if (!bVar1) {\n        return false;\n      }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (if_statement "if (iVar5 == 4) {\n        return false;\n      }" (if "if") (parenthesized_expression "(iVar5 == 4)" (( "(") (binary_expression "iVar5 == 4" (identifier "iVar5") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (} "}")))) (expression_statement "param_1 = pcVar3;" (assignment_expression "param_1 = pcVar3" (identifier "param_1") (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if (param_2 == pcVar3) {\n      return 3 < iVar5;\n    }" (if "if") (parenthesized_expression "(param_2 == pcVar3)" (( "(") (binary_expression "param_2 == pcVar3" (identifier "param_2") (== "==") (identifier "pcVar3")) () ")")) (compound_statement "{\n      return 3 < iVar5;\n    }" ({ "{") (return_statement "return 3 < iVar5;" (return "return") (binary_expression "3 < iVar5" (number_literal "3") (< "<") (identifier "iVar5")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

type_1 function_1(char *var_2,char *var_1)

{
  bool bVar1;
  int var_4;
  char *var_6;
  type_2 var_3;
  int var_5;
  
  var_4 = 0;
  if (var_1 <= var_2) {
    return false;
  }
  var_5 = 0;
  bVar1 = false;
  do {
    var_6 = var_2 + 1;
    var_3 = (int)*var_2 - 0x30;
    var_4 = var_3 + var_4 * 10;
    if (var_3 < 10) {
      if (0xff < var_4) {
        return false;
      }
      if (!bVar1) {
        var_5 = var_5 + 1;
        if (4 < var_5) {
          return bVar1;
        }
        bVar1 = true;
      }
    }
    else {
      var_4 = 0;
      if (*var_2 != 0x2e) {
        return false;
      }
      if (!bVar1) {
        return bVar1;
      }
      bVar1 = false;
      if (var_5 == 4) {
        return false;
      }
    }
    var_2 = var_6;
    if (var_1 == var_6) {
      return 3 < var_5;
    }
  } while( true );
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (return_statement (false)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (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: (identifier))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (false))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (binary_expression left: (number_literal) right: (identifier)))))) condition: (parenthesized_expression (true))))))

bool MASKED(char *param_1,char *param_2)

{
  bool bVar1;
  int iVar2;
  char *pcVar3;
  uint uVar4;
  int iVar5;
  
  iVar2 = 0;
  if (param_2 <= param_1) {
    return false;
  }
  iVar5 = 0;
  bVar1 = false;
  do {
    pcVar3 = param_1 + 1;
    uVar4 = (int)*param_1 - 0x30;
    iVar2 = uVar4 + iVar2 * 10;
    if (uVar4 < 10) {
      if (0xff < iVar2) {
        return false;
      }
      if (!bVar1) {
        iVar5 = iVar5 + 1;
        if (4 < iVar5) {
          return false;
        }
        bVar1 = true;
      }
    }
    else {
      iVar2 = 0;
      if (*param_1 != 0x2e) {
        return false;
      }
      if (!bVar1) {
        return false;
      }
      bVar1 = false;
      if (iVar5 == 4) {
        return false;
      }
    }
    param_1 = pcVar3;
    if (param_2 == pcVar3) {
      return 3 < iVar5;
    }
  } while( true );
}

