
size_t bc_map_find_ge(BcVec *v,void *ptr)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 uVar5;
  size_t sVar6;
  char *pcVar7;
  
  uVar4 = v->len;
  uVar3 = 0;
  do {
    if (uVar4 <= uVar3) {
      return uVar3;
    }
    pcVar7 = v->v;
    sVar6 = v->size;
                    /* WARNING: Load size is inaccurate */
    uVar5 = *ptr;
    while( true ) {
      uVar2 = uVar3 + uVar4 >> 1;
      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));
      if (iVar1 == 0) {
        return uVar2;
      }
      if (-1 < iVar1) break;
      uVar4 = uVar2;
      if (uVar2 <= uVar3) {
        return uVar3;
      }
    }
    uVar3 = uVar2 + 1;
  } while( true );
}



uint FUN_000245f4(int *param_1,undefined4 *param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  
  uVar4 = param_1[1];
  uVar3 = 0;
  do {
    if (uVar4 <= uVar3) {
      return uVar3;
    }
    iVar7 = *param_1;
    iVar6 = param_1[3];
    uVar5 = *param_2;
    while( true ) {
      uVar2 = uVar3 + uVar4 >> 1;
      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));
      if (iVar1 == 0) {
        return uVar2;
      }
      if (-1 < iVar1) break;
      uVar4 = uVar2;
      if (uVar2 <= uVar3) {
        return uVar3;
      }
    }
    uVar3 = uVar2 + 1;
  } while( true );
}


lui gp,0x11
addiu gp,gp,0x4b5c
addu gp,gp,t9
addiu sp,sp,-0x40
sw ra,0x3c(sp)
sw s7,0x38(sp)
sw s6,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
sw gp,0x10(sp)
or s3,a0,zero
or s4,a1,zero
lw s2,0x4(a0)
or s1,zero,zero
sltu v0,s1,s2
bne v0,zero,0x00024678
_nop
or v0,s1,zero
lw ra,0x3c(sp)
lw s7,0x38(sp)
lw s6,0x34(sp)
lw s5,0x30(sp)
lw s4,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x40
lw s7,0x0(s3)
lw s6,0xc(s3)
lw s5,0x0(s4)
addu s0,s1,s2
srl s0,s0,0x1
mul v1,s0,s6
addu v0,v1,s7
lw a1,0x0(v0)
or a0,s5,zero
lw t9,-0x6f70(gp)
jalr t9
_nop
lw gp,0x10(sp)
beq v0,zero,0x000246dc
_nop
bltz v0,0x000246c4
_nop
b 0x0002463c
_addiu s1,s0,0x1
or s2,s0,zero
sltu s0,s1,s0
bne s0,zero,0x00024684
_or v0,s1,zero
b 0x00024650
_lw ra,0x3c(sp)
b 0x00024648
_or s1,s0,zero
(translation_unit "uint FUN_000245f4(int *param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}\n\n" (function_definition "uint FUN_000245f4(int *param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" type_identifier (function_declarator "FUN_000245f4(int *param_1,undefined4 *param_2)" identifier (parameter_list "(int *param_1,undefined4 *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );" do (compound_statement "{\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  }" { (if_statement "if (uVar4 <= uVar3) {\n      return uVar3;\n    }" if (parenthesized_expression "(uVar4 <= uVar3)" ( (binary_expression "uVar4 <= uVar3" identifier <= identifier) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar6 = param_1[3];" (assignment_expression "iVar6 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (while_statement "while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" { (expression_statement "uVar2 = uVar3 + uVar4 >> 1;" (assignment_expression "uVar2 = uVar3 + uVar4 >> 1" identifier = (binary_expression "uVar3 + uVar4 >> 1" (binary_expression "uVar3 + uVar4" identifier + identifier) >> number_literal)) ;) (expression_statement "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" identifier = (call_expression "(*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" (parenthesized_expression "(*(code *)PTR_strcmp_001321e0)" ( (pointer_expression "*(code *)PTR_strcmp_001321e0" * (cast_expression "(code *)PTR_strcmp_001321e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" ( identifier , (pointer_expression "*(undefined4 *)(uVar2 * iVar6 + iVar7)" * (cast_expression "(undefined4 *)(uVar2 * iVar6 + iVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 * iVar6 + iVar7)" ( (binary_expression "uVar2 * iVar6 + iVar7" (binary_expression "uVar2 * iVar6" identifier * identifier) + identifier) )))) )))) ;) (if_statement "if (iVar1 == 0) {\n        return uVar2;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return uVar2;\n      }" { (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (-1 < iVar1) break;" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) {\n        return uVar3;\n      }" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (compound_statement "{\n        return uVar3;\n      }" { (return_statement "return uVar3;" return identifier ;) })) })) (expression_statement "uVar3 = uVar2 + 1;" (assignment_expression "uVar3 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "size_t bc_map_find_ge(BcVec *v,void *ptr)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  \n  uVar4 = v->len;\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    pcVar7 = v->v;\n    sVar6 = v->size;\n                    /* WARNING: Load size is inaccurate */\n    uVar5 = *ptr;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}\n\n" (function_definition "size_t bc_map_find_ge(BcVec *v,void *ptr)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  \n  uVar4 = v->len;\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    pcVar7 = v->v;\n    sVar6 = v->size;\n                    /* WARNING: Load size is inaccurate */\n    uVar5 = *ptr;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" primitive_type (function_declarator "bc_map_find_ge(BcVec *v,void *ptr)" identifier (parameter_list "(BcVec *v,void *ptr)" ( (parameter_declaration "BcVec *v" type_identifier (pointer_declarator "*v" * identifier)) , (parameter_declaration "void *ptr" primitive_type (pointer_declarator "*ptr" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  size_t sVar6;\n  char *pcVar7;\n  \n  uVar4 = v->len;\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    pcVar7 = v->v;\n    sVar6 = v->size;\n                    /* WARNING: Load size is inaccurate */\n    uVar5 = *ptr;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (expression_statement "uVar4 = v->len;" (assignment_expression "uVar4 = v->len" identifier = (field_expression "v->len" identifier -> field_identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    pcVar7 = v->v;\n    sVar6 = v->size;\n                    /* WARNING: Load size is inaccurate */\n    uVar5 = *ptr;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );" do (compound_statement "{\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    pcVar7 = v->v;\n    sVar6 = v->size;\n                    /* WARNING: Load size is inaccurate */\n    uVar5 = *ptr;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  }" { (if_statement "if (uVar4 <= uVar3) {\n      return uVar3;\n    }" if (parenthesized_expression "(uVar4 <= uVar3)" ( (binary_expression "uVar4 <= uVar3" identifier <= identifier) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "pcVar7 = v->v;" (assignment_expression "pcVar7 = v->v" identifier = (field_expression "v->v" identifier -> field_identifier)) ;) (expression_statement "sVar6 = v->size;" (assignment_expression "sVar6 = v->size" identifier = (field_expression "v->size" identifier -> field_identifier)) ;) comment (expression_statement "uVar5 = *ptr;" (assignment_expression "uVar5 = *ptr" identifier = (pointer_expression "*ptr" * identifier)) ;) (while_statement "while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" { (expression_statement "uVar2 = uVar3 + uVar4 >> 1;" (assignment_expression "uVar2 = uVar3 + uVar4 >> 1" identifier = (binary_expression "uVar3 + uVar4 >> 1" (binary_expression "uVar3 + uVar4" identifier + identifier) >> number_literal)) ;) (expression_statement "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6));" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6))" identifier = (call_expression "(*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6))" (parenthesized_expression "(*(code *)PTR_strcmp_001321e0)" ( (pointer_expression "*(code *)PTR_strcmp_001321e0" * (cast_expression "(code *)PTR_strcmp_001321e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,*(undefined4 *)(pcVar7 + uVar2 * sVar6))" ( identifier , (pointer_expression "*(undefined4 *)(pcVar7 + uVar2 * sVar6)" * (cast_expression "(undefined4 *)(pcVar7 + uVar2 * sVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + uVar2 * sVar6)" ( (binary_expression "pcVar7 + uVar2 * sVar6" identifier + (binary_expression "uVar2 * sVar6" identifier * identifier)) )))) )))) ;) (if_statement "if (iVar1 == 0) {\n        return uVar2;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return uVar2;\n      }" { (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (-1 < iVar1) break;" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) {\n        return uVar3;\n      }" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (compound_statement "{\n        return uVar3;\n      }" { (return_statement "return uVar3;" return identifier ;) })) })) (expression_statement "uVar3 = uVar2 + 1;" (assignment_expression "uVar3 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "uint FUN_000245f4(int *param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}\n\n" (function_definition "uint FUN_000245f4(int *param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" type_identifier (function_declarator "FUN_000245f4(int *param_1,undefined4 *param_2)" identifier (parameter_list "(int *param_1,undefined4 *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );" do (compound_statement "{\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  }" { (if_statement "if (uVar4 <= uVar3) {\n      return uVar3;\n    }" if (parenthesized_expression "(uVar4 <= uVar3)" ( (binary_expression "uVar4 <= uVar3" identifier <= identifier) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar6 = param_1[3];" (assignment_expression "iVar6 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (while_statement "while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" { (expression_statement "uVar2 = uVar3 + uVar4 >> 1;" (assignment_expression "uVar2 = uVar3 + uVar4 >> 1" identifier = (binary_expression "uVar3 + uVar4 >> 1" (binary_expression "uVar3 + uVar4" identifier + identifier) >> number_literal)) ;) (expression_statement "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" identifier = (call_expression "(*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" (parenthesized_expression "(*(code *)PTR_strcmp_001321e0)" ( (pointer_expression "*(code *)PTR_strcmp_001321e0" * (cast_expression "(code *)PTR_strcmp_001321e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" ( identifier , (pointer_expression "*(undefined4 *)(uVar2 * iVar6 + iVar7)" * (cast_expression "(undefined4 *)(uVar2 * iVar6 + iVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar2 * iVar6 + iVar7)" ( (binary_expression "uVar2 * iVar6 + iVar7" (binary_expression "uVar2 * iVar6" identifier * identifier) + identifier) )))) )))) ;) (if_statement "if (iVar1 == 0) {\n        return uVar2;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return uVar2;\n      }" { (return_statement "return uVar2;" return identifier ;) })) (if_statement "if (-1 < iVar1) break;" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) (if_statement "if (uVar2 <= uVar3) {\n        return uVar3;\n      }" if (parenthesized_expression "(uVar2 <= uVar3)" ( (binary_expression "uVar2 <= uVar3" identifier <= identifier) )) (compound_statement "{\n        return uVar3;\n      }" { (return_statement "return uVar3;" return identifier ;) })) })) (expression_statement "uVar3 = uVar2 + 1;" (assignment_expression "uVar3 = uVar2 + 1" identifier = (binary_expression "uVar2 + 1" identifier + number_literal)) ;) }) 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) + IDENT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return IDENT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint FUN_000245f4(int *param_1,undefined4 *param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" (type_identifier "uint") (function_declarator "FUN_000245f4(int *param_1,undefined4 *param_2)" (identifier "FUN_000245f4") (parameter_list "(int *param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  \n  uVar4 = param_1[1];\n  uVar3 = 0;\n  do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" (identifier "uVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    if (uVar4 <= uVar3) {\n      return uVar3;\n    }\n    iVar7 = *param_1;\n    iVar6 = param_1[3];\n    uVar5 = *param_2;\n    while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }\n    uVar3 = uVar2 + 1;\n  }" ({ "{") (if_statement "if (uVar4 <= uVar3) {\n      return uVar3;\n    }" (if "if") (parenthesized_expression "(uVar4 <= uVar3)" (( "(") (binary_expression "uVar4 <= uVar3" (identifier "uVar4") (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n      return uVar3;\n    }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "iVar7 = *param_1;" (assignment_expression "iVar7 = *param_1" (identifier "iVar7") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar6 = param_1[3];" (assignment_expression "iVar6 = param_1[3]" (identifier "iVar6") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar5 = *param_2;" (assignment_expression "uVar5 = *param_2" (identifier "uVar5") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (while_statement "while( true ) {\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      uVar2 = uVar3 + uVar4 >> 1;\n      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));\n      if (iVar1 == 0) {\n        return uVar2;\n      }\n      if (-1 < iVar1) break;\n      uVar4 = uVar2;\n      if (uVar2 <= uVar3) {\n        return uVar3;\n      }\n    }" ({ "{") (expression_statement "uVar2 = uVar3 + uVar4 >> 1;" (assignment_expression "uVar2 = uVar3 + uVar4 >> 1" (identifier "uVar2") (= "=") (binary_expression "uVar3 + uVar4 >> 1" (binary_expression "uVar3 + uVar4" (identifier "uVar3") (+ "+") (identifier "uVar4")) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));" (assignment_expression "iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" (identifier "iVar1") (= "=") (call_expression "(*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" (parenthesized_expression "(*(code *)PTR_strcmp_001321e0)" (( "(") (pointer_expression "*(code *)PTR_strcmp_001321e0" (* "*") (cast_expression "(code *)PTR_strcmp_001321e0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_strcmp_001321e0"))) () ")")) (argument_list "(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7))" (( "(") (identifier "uVar5") (, ",") (pointer_expression "*(undefined4 *)(uVar2 * iVar6 + iVar7)" (* "*") (cast_expression "(undefined4 *)(uVar2 * iVar6 + iVar7)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar2 * iVar6 + iVar7)" (( "(") (binary_expression "uVar2 * iVar6 + iVar7" (binary_expression "uVar2 * iVar6" (identifier "uVar2") (* "*") (identifier "iVar6")) (+ "+") (identifier "iVar7")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return uVar2;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return uVar2;\n      }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (if_statement "if (-1 < iVar1) break;" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" (identifier "uVar4") (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (uVar2 <= uVar3) {\n        return uVar3;\n      }" (if "if") (parenthesized_expression "(uVar2 <= uVar3)" (( "(") (binary_expression "uVar2 <= uVar3" (identifier "uVar2") (<= "<=") (identifier "uVar3")) () ")")) (compound_statement "{\n        return uVar3;\n      }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar3 = uVar2 + 1;" (assignment_expression "uVar3 = uVar2 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

size_t function_1(type_1 *v,void *ptr)

{
  int var_6;
  type_2 var_4;
  type_2 var_2;
  type_2 var_1;
  type_3 uVar5;
  size_t var_5;
  char *var_3;
  
  var_1 = v->len;
  var_2 = 0;
  do {
    if (var_1 <= var_2) {
      return var_2;
    }
    var_3 = v->v;
    var_5 = v->size;
                    /* WARNING: Load size is inaccurate */
    uVar5 = *ptr;
    while( true ) {
      var_4 = var_2 + var_1 >> 1;
      var_6 = (*(type_4 *)PTR_strcmp_001321e0)(uVar5,*(type_3 *)(var_3 + var_4 * var_5));
      if (var_6 == 0) {
        return var_4;
      }
      if (-1 < var_6) break;
      var_1 = var_4;
      if (var_4 <= var_2) {
        return var_2;
      }
    }
    var_2 = var_4 + 1;
  } while( true );
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (true))))))

uint MASKED(int *param_1,undefined4 *param_2)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  
  uVar4 = param_1[1];
  uVar3 = 0;
  do {
    if (uVar4 <= uVar3) {
      return uVar3;
    }
    iVar7 = *param_1;
    iVar6 = param_1[3];
    uVar5 = *param_2;
    while( true ) {
      uVar2 = uVar3 + uVar4 >> 1;
      iVar1 = (*(code *)PTR_strcmp_001321e0)(uVar5,*(undefined4 *)(uVar2 * iVar6 + iVar7));
      if (iVar1 == 0) {
        return uVar2;
      }
      if (-1 < iVar1) break;
      uVar4 = uVar2;
      if (uVar2 <= uVar3) {
        return uVar3;
      }
    }
    uVar3 = uVar2 + 1;
  } while( true );
}

