
Bignum_conflict bignum_random_in_range(Bignum_conflict lower,Bignum_conflict upper)

{
  uint uVar1;
  uchar *data;
  int iVar2;
  int iVar3;
  uchar *puVar4;
  int nbytes;
  uint uVar5;
  
  uVar1 = bignum_bitcount(upper);
  uVar5 = uVar1;
  if ((int)uVar1 < 0) {
    uVar5 = uVar1 + 7;
  }
  uVar1 = uVar1 & 0x80000007;
  nbytes = (int)uVar5 >> 3;
  if ((int)uVar1 < 0) {
    uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;
  }
  if (uVar1 != 0) {
    nbytes = nbytes + 1;
  }
  data = (uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1);
  iVar2 = nbytes;
  if (nbytes < 0) {
    iVar2 = 0;
  }
  puVar4 = data;
  if (0 < nbytes) {
    do {
      iVar3 = random_byte();
      *puVar4 = (uchar)iVar3;
      puVar4 = puVar4 + 1;
    } while (puVar4 != data + nbytes);
  }
  if (uVar1 != 0) {
    data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];
  }
                    /* WARNING: Subroutine does not return */
  bignum_from_bytes(data,nbytes);
}



int bignum_random_in_range(undefined4 param_1,undefined4 param_2)

{
  undefined *puVar1;
  uint uVar2;
  undefined1 *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined1 uVar7;
  undefined1 *puVar8;
  int iVar9;
  uint uVar10;
  
  uVar2 = bignum_bitcount(param_2);
  uVar10 = uVar2;
  if ((int)uVar2 < 0) {
    uVar10 = uVar2 + 7;
  }
  uVar2 = uVar2 & 0x80000007;
  iVar9 = (int)uVar10 >> 3;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;
  }
  if (uVar2 != 0) {
    iVar9 = iVar9 + 1;
  }
  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);
  puVar1 = PTR_freebn_000b86e0;
  iVar4 = iVar9;
  if (iVar9 < 0) {
    iVar4 = 0;
  }
  while( true ) {
    puVar8 = puVar3;
    if (0 < iVar9) {
      do {
        uVar7 = random_byte();
        *puVar8 = uVar7;
        puVar8 = puVar8 + 1;
      } while (puVar8 != puVar3 + iVar9);
    }
    if (uVar2 != 0) {
      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];
    }
    iVar5 = bignum_from_bytes(puVar3,iVar9);
    iVar6 = bignum_cmp(iVar5,param_1);
    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;
    if (iVar5 != 0) {
      (*(code *)puVar1)(iVar5);
    }
  }
  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);
  (*(code *)PTR_safefree_000b82e8)(puVar3);
  return iVar5;
}


lui gp,0x7
addiu gp,gp,-0x4d04
addu gp,gp,t9
addiu sp,sp,-0x48
sw ra,0x44(sp)
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s2,0x28(sp)
sw s1,0x24(sp)
sw s0,0x20(sp)
sw gp,0x10(sp)
sw a0,0x48(sp)
sw a1,0x4c(sp)
or a0,a1,zero
lw t9,-0x7cc8(gp)
bal 0x00054944
_nop
lw gp,0x10(sp)
bltz v0,0x00055074
_or s2,v0,zero
lui s4,0x8000
addiu s4,s4,0x7
and s4,v0,s4
bltz s4,0x0005507c
_sra s2,s2,0x3
beq s4,zero,0x00055014
_nop
addiu s2,s2,0x1
sw s2,0x1c(sp)
li a1,0x1
or a0,s2,zero
lw t9,-0x7f98(gp)
jalr t9
_nop
lw gp,0x10(sp)
or s3,v0,zero
li v0,0x8
subu v0,v0,s4
li s8,0xff
srav s8,s8,v0
seb s8,s8
slti s6,s2,0x0
or v0,s2,zero
movn v0,zero,s6
addiu s6,v0,-0x1
addu s6,s3,s6
addu s1,s2,s3
lw s7,-0x7ccc(gp)
lw s5,-0x7acc(gp)
lw v0,-0x7bb0(gp)
b 0x000550fc
_sw v0,0x18(sp)
b 0x00054ff4
_addiu s2,v0,0x7
addiu s4,s4,-0x1
li v0,-0x8
or s4,s4,v0
b 0x00055008
_addiu s4,s4,0x1
or a0,s3,zero
or t9,s7,zero
bal 0x000545b4
_nop
lw gp,0x10(sp)
or s0,v0,zero
lw a1,0x48(sp)
or a0,v0,zero
or t9,s5,zero
bal 0x00054e08
_nop
lw gp,0x10(sp)
bltz v0,0x000550e4
_lw a1,0x4c(sp)
or a0,s0,zero
or t9,s5,zero
bal 0x00054e08
_nop
lw gp,0x10(sp)
blez v0,0x0005513c
_lw a1,0x1c(sp)
beq s0,zero,0x000550fc
_or a0,s0,zero
lw t9,0x18(sp)
jalr t9
_nop
lw gp,0x10(sp)
blez s2,0x00055124
_or s0,s3,zero
lw t9,-0x7ce0(gp)
bal 0x0006ef88
_nop
lw gp,0x10(sp)
sb v0,0x0(s0)
addiu s0,s0,0x1
bne s0,s1,0x00055108
_lw t9,-0x7ce0(gp)
beq s4,zero,0x00055090
_or a1,s2,zero
lbu v0,0x0(s6)
and v0,s8,v0
b 0x00055090
_sb v0,0x0(s6)
or a0,s3,zero
lw t9,-0x7f68(gp)
jalr t9
_nop
lw gp,0x10(sp)
or a0,s3,zero
lw t9,-0x7fa8(gp)
jalr t9
_nop
lw gp,0x10(sp)
or v0,s0,zero
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x48
(translation_unit "int bignum_random_in_range(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}\n\n" (function_definition "int bignum_random_in_range(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}" primitive_type (function_declarator "bignum_random_in_range(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (expression_statement "uVar2 = bignum_bitcount(param_2);" (assignment_expression "uVar2 = bignum_bitcount(param_2)" identifier = (call_expression "bignum_bitcount(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "uVar10 = uVar2;" (assignment_expression "uVar10 = uVar2" identifier = identifier) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar10 = uVar2 + 7;\n  }" { (expression_statement "uVar10 = uVar2 + 7;" (assignment_expression "uVar10 = uVar2 + 7" identifier = (binary_expression "uVar2 + 7" identifier + number_literal)) ;) })) (expression_statement "uVar2 = uVar2 & 0x80000007;" (assignment_expression "uVar2 = uVar2 & 0x80000007" identifier = (binary_expression "uVar2 & 0x80000007" identifier & number_literal)) ;) (expression_statement "iVar9 = (int)uVar10 >> 3;" (assignment_expression "iVar9 = (int)uVar10 >> 3" identifier = (binary_expression "(int)uVar10 >> 3" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }" { (expression_statement "uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar2 = (uVar2 - 1 | 0xfffffff8) + 1" identifier = (binary_expression "(uVar2 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar2 - 1 | 0xfffffff8)" ( (binary_expression "uVar2 - 1 | 0xfffffff8" (binary_expression "uVar2 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (if_statement "if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar9 = iVar9 + 1;\n  }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b82f8)" ( (pointer_expression "*(code *)PTR_safemalloc_000b82f8" * (cast_expression "(code *)PTR_safemalloc_000b82f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,1)" ( identifier , number_literal ))))) ;) (expression_statement "puVar1 = PTR_freebn_000b86e0;" (assignment_expression "puVar1 = PTR_freebn_000b86e0" identifier = identifier) ;) (expression_statement "iVar4 = iVar9;" (assignment_expression "iVar4 = iVar9" identifier = identifier) ;) (if_statement "if (iVar9 < 0) {\n    iVar4 = 0;\n  }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar4 = 0;\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) })) (while_statement "while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }" { (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" identifier = identifier) ;) (if_statement "if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }" { (do_statement "do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);" do (compound_statement "{\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      }" { (expression_statement "uVar7 = random_byte();" (assignment_expression "uVar7 = random_byte()" identifier = (call_expression "random_byte()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar3 + iVar9)" ( (binary_expression "puVar8 != puVar3 + iVar9" identifier != (binary_expression "puVar3 + iVar9" identifier + identifier)) )) ;) })) (if_statement "if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }" { (expression_statement "puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];" (assignment_expression "puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1]" (subscript_expression "puVar3[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ]) = (binary_expression "(byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1]" (call_expression "(byte)(0xff >> (8 - uVar2 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0xff >> (8 - uVar2 & 0x1f))" ( (binary_expression "0xff >> (8 - uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(8 - uVar2 & 0x1f)" ( (binary_expression "8 - uVar2 & 0x1f" (binary_expression "8 - uVar2" number_literal - identifier) & number_literal) ))) ))) & (subscript_expression "puVar3[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ]))) ;) })) (expression_statement "iVar5 = bignum_from_bytes(puVar3,iVar9);" (assignment_expression "iVar5 = bignum_from_bytes(puVar3,iVar9)" identifier = (call_expression "bignum_from_bytes(puVar3,iVar9)" identifier (argument_list "(puVar3,iVar9)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = bignum_cmp(iVar5,param_1);" (assignment_expression "iVar6 = bignum_cmp(iVar5,param_1)" identifier = (call_expression "bignum_cmp(iVar5,param_1)" identifier (argument_list "(iVar5,param_1)" ( identifier , identifier )))) ;) (if_statement "if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;" if (parenthesized_expression "((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1))" ( (binary_expression "(-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)" (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) && (parenthesized_expression "(iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)" ( (comma_expression "iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1" (assignment_expression "iVar6 = bignum_cmp(iVar5,param_2)" identifier = (call_expression "bignum_cmp(iVar5,param_2)" identifier (argument_list "(iVar5,param_2)" ( identifier , identifier )))) , (binary_expression "iVar6 < 1" identifier < number_literal)) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)puVar1)(iVar5);\n    }" { (expression_statement "(*(code *)puVar1)(iVar5);" (call_expression "(*(code *)puVar1)(iVar5)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar5)" ( identifier ))) ;) })) })) (expression_statement "(*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);" (call_expression "(*(code *)PTR_smemclr_000b8328)(puVar3,iVar9)" (parenthesized_expression "(*(code *)PTR_smemclr_000b8328)" ( (pointer_expression "*(code *)PTR_smemclr_000b8328" * (cast_expression "(code *)PTR_smemclr_000b8328" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,iVar9)" ( identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_safefree_000b82e8)(puVar3);" (call_expression "(*(code *)PTR_safefree_000b82e8)(puVar3)" (parenthesized_expression "(*(code *)PTR_safefree_000b82e8)" ( (pointer_expression "*(code *)PTR_safefree_000b82e8" * (cast_expression "(code *)PTR_safefree_000b82e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3)" ( identifier ))) ;) (return_statement "return iVar5;" return identifier ;) })))
(translation_unit "Bignum_conflict bignum_random_in_range(Bignum_conflict lower,Bignum_conflict upper)\n\n{\n  uint uVar1;\n  uchar *data;\n  int iVar2;\n  int iVar3;\n  uchar *puVar4;\n  int nbytes;\n  uint uVar5;\n  \n  uVar1 = bignum_bitcount(upper);\n  uVar5 = uVar1;\n  if ((int)uVar1 < 0) {\n    uVar5 = uVar1 + 7;\n  }\n  uVar1 = uVar1 & 0x80000007;\n  nbytes = (int)uVar5 >> 3;\n  if ((int)uVar1 < 0) {\n    uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar1 != 0) {\n    nbytes = nbytes + 1;\n  }\n  data = (uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1);\n  iVar2 = nbytes;\n  if (nbytes < 0) {\n    iVar2 = 0;\n  }\n  puVar4 = data;\n  if (0 < nbytes) {\n    do {\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    } while (puVar4 != data + nbytes);\n  }\n  if (uVar1 != 0) {\n    data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];\n  }\n                    /* WARNING: Subroutine does not return */\n  bignum_from_bytes(data,nbytes);\n}\n\n" (function_definition "Bignum_conflict bignum_random_in_range(Bignum_conflict lower,Bignum_conflict upper)\n\n{\n  uint uVar1;\n  uchar *data;\n  int iVar2;\n  int iVar3;\n  uchar *puVar4;\n  int nbytes;\n  uint uVar5;\n  \n  uVar1 = bignum_bitcount(upper);\n  uVar5 = uVar1;\n  if ((int)uVar1 < 0) {\n    uVar5 = uVar1 + 7;\n  }\n  uVar1 = uVar1 & 0x80000007;\n  nbytes = (int)uVar5 >> 3;\n  if ((int)uVar1 < 0) {\n    uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar1 != 0) {\n    nbytes = nbytes + 1;\n  }\n  data = (uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1);\n  iVar2 = nbytes;\n  if (nbytes < 0) {\n    iVar2 = 0;\n  }\n  puVar4 = data;\n  if (0 < nbytes) {\n    do {\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    } while (puVar4 != data + nbytes);\n  }\n  if (uVar1 != 0) {\n    data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];\n  }\n                    /* WARNING: Subroutine does not return */\n  bignum_from_bytes(data,nbytes);\n}" type_identifier (function_declarator "bignum_random_in_range(Bignum_conflict lower,Bignum_conflict upper)" identifier (parameter_list "(Bignum_conflict lower,Bignum_conflict upper)" ( (parameter_declaration "Bignum_conflict lower" type_identifier identifier) , (parameter_declaration "Bignum_conflict upper" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  uchar *data;\n  int iVar2;\n  int iVar3;\n  uchar *puVar4;\n  int nbytes;\n  uint uVar5;\n  \n  uVar1 = bignum_bitcount(upper);\n  uVar5 = uVar1;\n  if ((int)uVar1 < 0) {\n    uVar5 = uVar1 + 7;\n  }\n  uVar1 = uVar1 & 0x80000007;\n  nbytes = (int)uVar5 >> 3;\n  if ((int)uVar1 < 0) {\n    uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar1 != 0) {\n    nbytes = nbytes + 1;\n  }\n  data = (uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1);\n  iVar2 = nbytes;\n  if (nbytes < 0) {\n    iVar2 = 0;\n  }\n  puVar4 = data;\n  if (0 < nbytes) {\n    do {\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    } while (puVar4 != data + nbytes);\n  }\n  if (uVar1 != 0) {\n    data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];\n  }\n                    /* WARNING: Subroutine does not return */\n  bignum_from_bytes(data,nbytes);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uchar *data;" type_identifier (pointer_declarator "*data" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uchar *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int nbytes;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar1 = bignum_bitcount(upper);" (assignment_expression "uVar1 = bignum_bitcount(upper)" identifier = (call_expression "bignum_bitcount(upper)" identifier (argument_list "(upper)" ( identifier )))) ;) (expression_statement "uVar5 = uVar1;" (assignment_expression "uVar5 = uVar1" identifier = identifier) ;) (if_statement "if ((int)uVar1 < 0) {\n    uVar5 = uVar1 + 7;\n  }" if (parenthesized_expression "((int)uVar1 < 0)" ( (binary_expression "(int)uVar1 < 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar5 = uVar1 + 7;\n  }" { (expression_statement "uVar5 = uVar1 + 7;" (assignment_expression "uVar5 = uVar1 + 7" identifier = (binary_expression "uVar1 + 7" identifier + number_literal)) ;) })) (expression_statement "uVar1 = uVar1 & 0x80000007;" (assignment_expression "uVar1 = uVar1 & 0x80000007" identifier = (binary_expression "uVar1 & 0x80000007" identifier & number_literal)) ;) (expression_statement "nbytes = (int)uVar5 >> 3;" (assignment_expression "nbytes = (int)uVar5 >> 3" identifier = (binary_expression "(int)uVar5 >> 3" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)uVar1 < 0) {\n    uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;\n  }" if (parenthesized_expression "((int)uVar1 < 0)" ( (binary_expression "(int)uVar1 < 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;\n  }" { (expression_statement "uVar1 = (uVar1 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar1 = (uVar1 - 1 | 0xfffffff8) + 1" identifier = (binary_expression "(uVar1 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar1 - 1 | 0xfffffff8)" ( (binary_expression "uVar1 - 1 | 0xfffffff8" (binary_expression "uVar1 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (if_statement "if (uVar1 != 0) {\n    nbytes = nbytes + 1;\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    nbytes = nbytes + 1;\n  }" { (expression_statement "nbytes = nbytes + 1;" (assignment_expression "nbytes = nbytes + 1" identifier = (binary_expression "nbytes + 1" identifier + number_literal)) ;) })) (expression_statement "data = (uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1);" (assignment_expression "data = (uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1)" identifier = (cast_expression "(uchar *)(*(code *)PTR_safemalloc_000b82f8)(nbytes,1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b82f8)(nbytes,1)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b82f8)" ( (pointer_expression "*(code *)PTR_safemalloc_000b82f8" * (cast_expression "(code *)PTR_safemalloc_000b82f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(nbytes,1)" ( identifier , number_literal ))))) ;) (expression_statement "iVar2 = nbytes;" (assignment_expression "iVar2 = nbytes" identifier = identifier) ;) (if_statement "if (nbytes < 0) {\n    iVar2 = 0;\n  }" if (parenthesized_expression "(nbytes < 0)" ( (binary_expression "nbytes < 0" identifier < number_literal) )) (compound_statement "{\n    iVar2 = 0;\n  }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) (expression_statement "puVar4 = data;" (assignment_expression "puVar4 = data" identifier = identifier) ;) (if_statement "if (0 < nbytes) {\n    do {\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    } while (puVar4 != data + nbytes);\n  }" if (parenthesized_expression "(0 < nbytes)" ( (binary_expression "0 < nbytes" number_literal < identifier) )) (compound_statement "{\n    do {\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    } while (puVar4 != data + nbytes);\n  }" { (do_statement "do {\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    } while (puVar4 != data + nbytes);" do (compound_statement "{\n      iVar3 = random_byte();\n      *puVar4 = (uchar)iVar3;\n      puVar4 = puVar4 + 1;\n    }" { (expression_statement "iVar3 = random_byte();" (assignment_expression "iVar3 = random_byte()" identifier = (call_expression "random_byte()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar4 = (uchar)iVar3;" (assignment_expression "*puVar4 = (uchar)iVar3" (pointer_expression "*puVar4" * identifier) = (cast_expression "(uchar)iVar3" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != data + nbytes)" ( (binary_expression "puVar4 != data + nbytes" identifier != (binary_expression "data + nbytes" identifier + identifier)) )) ;) })) (if_statement "if (uVar1 != 0) {\n    data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];\n  }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];\n  }" { (expression_statement "data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1];" (assignment_expression "data[iVar2 + -1] = (byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1]" (subscript_expression "data[iVar2 + -1]" identifier [ (binary_expression "iVar2 + -1" identifier + number_literal) ]) = (binary_expression "(byte)(0xff >> (8 - uVar1 & 0x1f)) & data[iVar2 + -1]" (call_expression "(byte)(0xff >> (8 - uVar1 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0xff >> (8 - uVar1 & 0x1f))" ( (binary_expression "0xff >> (8 - uVar1 & 0x1f)" number_literal >> (parenthesized_expression "(8 - uVar1 & 0x1f)" ( (binary_expression "8 - uVar1 & 0x1f" (binary_expression "8 - uVar1" number_literal - identifier) & number_literal) ))) ))) & (subscript_expression "data[iVar2 + -1]" identifier [ (binary_expression "iVar2 + -1" identifier + number_literal) ]))) ;) })) comment (expression_statement "bignum_from_bytes(data,nbytes);" (call_expression "bignum_from_bytes(data,nbytes)" identifier (argument_list "(data,nbytes)" ( identifier , identifier ))) ;) })))
(translation_unit "int bignum_random_in_range(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}\n\n" (function_definition "int bignum_random_in_range(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}" primitive_type (function_declarator "bignum_random_in_range(undefined4 param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined1 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (expression_statement "uVar2 = bignum_bitcount(param_2);" (assignment_expression "uVar2 = bignum_bitcount(param_2)" identifier = (call_expression "bignum_bitcount(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "uVar10 = uVar2;" (assignment_expression "uVar10 = uVar2" identifier = identifier) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar10 = uVar2 + 7;\n  }" { (expression_statement "uVar10 = uVar2 + 7;" (assignment_expression "uVar10 = uVar2 + 7" identifier = (binary_expression "uVar2 + 7" identifier + number_literal)) ;) })) (expression_statement "uVar2 = uVar2 & 0x80000007;" (assignment_expression "uVar2 = uVar2 & 0x80000007" identifier = (binary_expression "uVar2 & 0x80000007" identifier & number_literal)) ;) (expression_statement "iVar9 = (int)uVar10 >> 3;" (assignment_expression "iVar9 = (int)uVar10 >> 3" identifier = (binary_expression "(int)uVar10 >> 3" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (if_statement "if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }" if (parenthesized_expression "((int)uVar2 < 0)" ( (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }" { (expression_statement "uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar2 = (uVar2 - 1 | 0xfffffff8) + 1" identifier = (binary_expression "(uVar2 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar2 - 1 | 0xfffffff8)" ( (binary_expression "uVar2 - 1 | 0xfffffff8" (binary_expression "uVar2 - 1" identifier - number_literal) | number_literal) )) + number_literal)) ;) })) (if_statement "if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    iVar9 = iVar9 + 1;\n  }" { (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" identifier = (cast_expression "(undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b82f8)" ( (pointer_expression "*(code *)PTR_safemalloc_000b82f8" * (cast_expression "(code *)PTR_safemalloc_000b82f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,1)" ( identifier , number_literal ))))) ;) (expression_statement "puVar1 = PTR_freebn_000b86e0;" (assignment_expression "puVar1 = PTR_freebn_000b86e0" identifier = identifier) ;) (expression_statement "iVar4 = iVar9;" (assignment_expression "iVar4 = iVar9" identifier = identifier) ;) (if_statement "if (iVar9 < 0) {\n    iVar4 = 0;\n  }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar4 = 0;\n  }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) })) (while_statement "while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }" { (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" identifier = identifier) ;) (if_statement "if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }" if (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) (compound_statement "{\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }" { (do_statement "do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);" do (compound_statement "{\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      }" { (expression_statement "uVar7 = random_byte();" (assignment_expression "uVar7 = random_byte()" identifier = (call_expression "random_byte()" identifier (argument_list "()" ( )))) ;) (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar3 + iVar9)" ( (binary_expression "puVar8 != puVar3 + iVar9" identifier != (binary_expression "puVar3 + iVar9" identifier + identifier)) )) ;) })) (if_statement "if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }" { (expression_statement "puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];" (assignment_expression "puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1]" (subscript_expression "puVar3[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ]) = (binary_expression "(byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1]" (call_expression "(byte)(0xff >> (8 - uVar2 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0xff >> (8 - uVar2 & 0x1f))" ( (binary_expression "0xff >> (8 - uVar2 & 0x1f)" number_literal >> (parenthesized_expression "(8 - uVar2 & 0x1f)" ( (binary_expression "8 - uVar2 & 0x1f" (binary_expression "8 - uVar2" number_literal - identifier) & number_literal) ))) ))) & (subscript_expression "puVar3[iVar4 + -1]" identifier [ (binary_expression "iVar4 + -1" identifier + number_literal) ]))) ;) })) (expression_statement "iVar5 = bignum_from_bytes(puVar3,iVar9);" (assignment_expression "iVar5 = bignum_from_bytes(puVar3,iVar9)" identifier = (call_expression "bignum_from_bytes(puVar3,iVar9)" identifier (argument_list "(puVar3,iVar9)" ( identifier , identifier )))) ;) (expression_statement "iVar6 = bignum_cmp(iVar5,param_1);" (assignment_expression "iVar6 = bignum_cmp(iVar5,param_1)" identifier = (call_expression "bignum_cmp(iVar5,param_1)" identifier (argument_list "(iVar5,param_1)" ( identifier , identifier )))) ;) (if_statement "if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;" if (parenthesized_expression "((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1))" ( (binary_expression "(-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)" (parenthesized_expression "(-1 < iVar6)" ( (binary_expression "-1 < iVar6" number_literal < identifier) )) && (parenthesized_expression "(iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)" ( (comma_expression "iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1" (assignment_expression "iVar6 = bignum_cmp(iVar5,param_2)" identifier = (call_expression "bignum_cmp(iVar5,param_2)" identifier (argument_list "(iVar5,param_2)" ( identifier , identifier )))) , (binary_expression "iVar6 < 1" identifier < number_literal)) ))) )) (break_statement "break;" break ;)) (if_statement "if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)puVar1)(iVar5);\n    }" { (expression_statement "(*(code *)puVar1)(iVar5);" (call_expression "(*(code *)puVar1)(iVar5)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar5)" ( identifier ))) ;) })) })) (expression_statement "(*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);" (call_expression "(*(code *)PTR_smemclr_000b8328)(puVar3,iVar9)" (parenthesized_expression "(*(code *)PTR_smemclr_000b8328)" ( (pointer_expression "*(code *)PTR_smemclr_000b8328" * (cast_expression "(code *)PTR_smemclr_000b8328" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,iVar9)" ( identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_safefree_000b82e8)(puVar3);" (call_expression "(*(code *)PTR_safefree_000b82e8)(puVar3)" (parenthesized_expression "(*(code *)PTR_safefree_000b82e8)" ( (pointer_expression "*(code *)PTR_safefree_000b82e8" * (cast_expression "(code *)PTR_safefree_000b82e8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3)" ( identifier ))) ;) (return_statement "return iVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) | LIT) )) + LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) & LIT) ))) ))) & (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT < LIT)) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "int bignum_random_in_range(undefined4 param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}" (primitive_type "int") (function_declarator "bignum_random_in_range(undefined4 param_1,undefined4 param_2)" (identifier "bignum_random_in_range") (parameter_list "(undefined4 param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined1 *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  undefined1 uVar7;\n  undefined1 *puVar8;\n  int iVar9;\n  uint uVar10;\n  \n  uVar2 = bignum_bitcount(param_2);\n  uVar10 = uVar2;\n  if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }\n  uVar2 = uVar2 & 0x80000007;\n  iVar9 = (int)uVar10 >> 3;\n  if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }\n  if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }\n  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);\n  puVar1 = PTR_freebn_000b86e0;\n  iVar4 = iVar9;\n  if (iVar9 < 0) {\n    iVar4 = 0;\n  }\n  while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }\n  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);\n  (*(code *)PTR_safefree_000b82e8)(puVar3);\n  return iVar5;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined1 *puVar3;" (type_identifier "undefined1") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "undefined1 uVar7;" (type_identifier "undefined1") (identifier "uVar7") (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (expression_statement "uVar2 = bignum_bitcount(param_2);" (assignment_expression "uVar2 = bignum_bitcount(param_2)" (identifier "uVar2") (= "=") (call_expression "bignum_bitcount(param_2)" (identifier "bignum_bitcount") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar10 = uVar2;" (assignment_expression "uVar10 = uVar2" (identifier "uVar10") (= "=") (identifier "uVar2")) (; ";")) (if_statement "if ((int)uVar2 < 0) {\n    uVar10 = uVar2 + 7;\n  }" (if "if") (parenthesized_expression "((int)uVar2 < 0)" (( "(") (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = uVar2 + 7;\n  }" ({ "{") (expression_statement "uVar10 = uVar2 + 7;" (assignment_expression "uVar10 = uVar2 + 7" (identifier "uVar10") (= "=") (binary_expression "uVar2 + 7" (identifier "uVar2") (+ "+") (number_literal "7"))) (; ";")) (} "}"))) (expression_statement "uVar2 = uVar2 & 0x80000007;" (assignment_expression "uVar2 = uVar2 & 0x80000007" (identifier "uVar2") (= "=") (binary_expression "uVar2 & 0x80000007" (identifier "uVar2") (& "&") (number_literal "0x80000007"))) (; ";")) (expression_statement "iVar9 = (int)uVar10 >> 3;" (assignment_expression "iVar9 = (int)uVar10 >> 3" (identifier "iVar9") (= "=") (binary_expression "(int)uVar10 >> 3" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "3"))) (; ";")) (if_statement "if ((int)uVar2 < 0) {\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }" (if "if") (parenthesized_expression "((int)uVar2 < 0)" (( "(") (binary_expression "(int)uVar2 < 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;\n  }" ({ "{") (expression_statement "uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;" (assignment_expression "uVar2 = (uVar2 - 1 | 0xfffffff8) + 1" (identifier "uVar2") (= "=") (binary_expression "(uVar2 - 1 | 0xfffffff8) + 1" (parenthesized_expression "(uVar2 - 1 | 0xfffffff8)" (( "(") (binary_expression "uVar2 - 1 | 0xfffffff8" (binary_expression "uVar2 - 1" (identifier "uVar2") (- "-") (number_literal "1")) (| "|") (number_literal "0xfffffff8")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar2 != 0) {\n    iVar9 = iVar9 + 1;\n  }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = iVar9 + 1;\n  }" ({ "{") (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);" (assignment_expression "puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" (identifier "puVar3") (= "=") (cast_expression "(undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_safemalloc_000b82f8)(iVar9,1)" (parenthesized_expression "(*(code *)PTR_safemalloc_000b82f8)" (( "(") (pointer_expression "*(code *)PTR_safemalloc_000b82f8" (* "*") (cast_expression "(code *)PTR_safemalloc_000b82f8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safemalloc_000b82f8"))) () ")")) (argument_list "(iVar9,1)" (( "(") (identifier "iVar9") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "puVar1 = PTR_freebn_000b86e0;" (assignment_expression "puVar1 = PTR_freebn_000b86e0" (identifier "puVar1") (= "=") (identifier "PTR_freebn_000b86e0")) (; ";")) (expression_statement "iVar4 = iVar9;" (assignment_expression "iVar4 = iVar9" (identifier "iVar4") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 < 0) {\n    iVar4 = 0;\n  }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar4 = 0;\n  }" ({ "{") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (} "}"))) (while_statement "while( true ) {\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    puVar8 = puVar3;\n    if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }\n    if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }\n    iVar5 = bignum_from_bytes(puVar3,iVar9);\n    iVar6 = bignum_cmp(iVar5,param_1);\n    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;\n    if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }\n  }" ({ "{") (expression_statement "puVar8 = puVar3;" (assignment_expression "puVar8 = puVar3" (identifier "puVar8") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if (0 < iVar9) {\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }" (if "if") (parenthesized_expression "(0 < iVar9)" (( "(") (binary_expression "0 < iVar9" (number_literal "0") (< "<") (identifier "iVar9")) () ")")) (compound_statement "{\n      do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);\n    }" ({ "{") (do_statement "do {\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      } while (puVar8 != puVar3 + iVar9);" (do "do") (compound_statement "{\n        uVar7 = random_byte();\n        *puVar8 = uVar7;\n        puVar8 = puVar8 + 1;\n      }" ({ "{") (expression_statement "uVar7 = random_byte();" (assignment_expression "uVar7 = random_byte()" (identifier "uVar7") (= "=") (call_expression "random_byte()" (identifier "random_byte") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*puVar8 = uVar7;" (assignment_expression "*puVar8 = uVar7" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar8 = puVar8 + 1;" (assignment_expression "puVar8 = puVar8 + 1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar8 != puVar3 + iVar9)" (( "(") (binary_expression "puVar8 != puVar3 + iVar9" (identifier "puVar8") (!= "!=") (binary_expression "puVar3 + iVar9" (identifier "puVar3") (+ "+") (identifier "iVar9"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar2 != 0) {\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];\n    }" ({ "{") (expression_statement "puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];" (assignment_expression "puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1]" (subscript_expression "puVar3[iVar4 + -1]" (identifier "puVar3") ([ "[") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1")) (] "]")) (= "=") (binary_expression "(byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1]" (call_expression "(byte)(0xff >> (8 - uVar2 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(0xff >> (8 - uVar2 & 0x1f))" (( "(") (binary_expression "0xff >> (8 - uVar2 & 0x1f)" (number_literal "0xff") (>> ">>") (parenthesized_expression "(8 - uVar2 & 0x1f)" (( "(") (binary_expression "8 - uVar2 & 0x1f" (binary_expression "8 - uVar2" (number_literal "8") (- "-") (identifier "uVar2")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (subscript_expression "puVar3[iVar4 + -1]" (identifier "puVar3") ([ "[") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1")) (] "]")))) (; ";")) (} "}"))) (expression_statement "iVar5 = bignum_from_bytes(puVar3,iVar9);" (assignment_expression "iVar5 = bignum_from_bytes(puVar3,iVar9)" (identifier "iVar5") (= "=") (call_expression "bignum_from_bytes(puVar3,iVar9)" (identifier "bignum_from_bytes") (argument_list "(puVar3,iVar9)" (( "(") (identifier "puVar3") (, ",") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "iVar6 = bignum_cmp(iVar5,param_1);" (assignment_expression "iVar6 = bignum_cmp(iVar5,param_1)" (identifier "iVar6") (= "=") (call_expression "bignum_cmp(iVar5,param_1)" (identifier "bignum_cmp") (argument_list "(iVar5,param_1)" (( "(") (identifier "iVar5") (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;" (if "if") (parenthesized_expression "((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1))" (( "(") (binary_expression "(-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)" (parenthesized_expression "(-1 < iVar6)" (( "(") (binary_expression "-1 < iVar6" (number_literal "-1") (< "<") (identifier "iVar6")) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)" (( "(") (comma_expression "iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1" (assignment_expression "iVar6 = bignum_cmp(iVar5,param_2)" (identifier "iVar6") (= "=") (call_expression "bignum_cmp(iVar5,param_2)" (identifier "bignum_cmp") (argument_list "(iVar5,param_2)" (( "(") (identifier "iVar5") (, ",") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar6 < 1" (identifier "iVar6") (< "<") (number_literal "1"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (iVar5 != 0) {\n      (*(code *)puVar1)(iVar5);\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)puVar1)(iVar5);\n    }" ({ "{") (expression_statement "(*(code *)puVar1)(iVar5);" (call_expression "(*(code *)puVar1)(iVar5)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "(*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);" (call_expression "(*(code *)PTR_smemclr_000b8328)(puVar3,iVar9)" (parenthesized_expression "(*(code *)PTR_smemclr_000b8328)" (( "(") (pointer_expression "*(code *)PTR_smemclr_000b8328" (* "*") (cast_expression "(code *)PTR_smemclr_000b8328" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_smemclr_000b8328"))) () ")")) (argument_list "(puVar3,iVar9)" (( "(") (identifier "puVar3") (, ",") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_safefree_000b82e8)(puVar3);" (call_expression "(*(code *)PTR_safefree_000b82e8)(puVar3)" (parenthesized_expression "(*(code *)PTR_safefree_000b82e8)" (( "(") (pointer_expression "*(code *)PTR_safefree_000b82e8" (* "*") (cast_expression "(code *)PTR_safefree_000b82e8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safefree_000b82e8"))) () ")")) (argument_list "(puVar3)" (( "(") (identifier "puVar3") () ")"))) (; ";")) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}")))

type_1 function_1(type_1 lower,type_1 upper)

{
  type_2 var_2;
  type_3 *var_6;
  int var_7;
  int iVar3;
  type_3 *var_5;
  int var_3;
  type_2 uVar5;
  
  var_2 = var_1(upper);
  uVar5 = var_2;
  if ((int)var_2 < 0) {
    uVar5 = var_2 + 7;
  }
  var_2 = var_2 & 0x80000007;
  var_3 = (int)uVar5 >> 3;
  if ((int)var_2 < 0) {
    var_2 = (var_2 - 1 | 0xfffffff8) + 1;
  }
  if (var_2 != 0) {
    var_3 = var_3 + 1;
  }
  var_6 = (type_3 *)(*(type_4 *)PTR_safemalloc_000b82f8)(var_3,1);
  var_7 = var_3;
  if (var_3 < 0) {
    var_7 = 0;
  }
  var_5 = var_6;
  if (0 < var_3) {
    do {
      iVar3 = var_4();
      *var_5 = (type_3)iVar3;
      var_5 = var_5 + 1;
    } while (var_5 != var_6 + var_3);
  }
  if (var_2 != 0) {
    var_6[var_7 + -1] = (byte)(0xff >> (8 - var_2 & 0x1f)) & var_6[var_7 + -1];
  }
                    /* WARNING: Subroutine does not return */
  var_8(var_6,var_3);
}


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

int MASKED(undefined4 param_1,undefined4 param_2)

{
  undefined *puVar1;
  uint uVar2;
  undefined1 *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  undefined1 uVar7;
  undefined1 *puVar8;
  int iVar9;
  uint uVar10;
  
  uVar2 = bignum_bitcount(param_2);
  uVar10 = uVar2;
  if ((int)uVar2 < 0) {
    uVar10 = uVar2 + 7;
  }
  uVar2 = uVar2 & 0x80000007;
  iVar9 = (int)uVar10 >> 3;
  if ((int)uVar2 < 0) {
    uVar2 = (uVar2 - 1 | 0xfffffff8) + 1;
  }
  if (uVar2 != 0) {
    iVar9 = iVar9 + 1;
  }
  puVar3 = (undefined1 *)(*(code *)PTR_safemalloc_000b82f8)(iVar9,1);
  puVar1 = PTR_freebn_000b86e0;
  iVar4 = iVar9;
  if (iVar9 < 0) {
    iVar4 = 0;
  }
  while( true ) {
    puVar8 = puVar3;
    if (0 < iVar9) {
      do {
        uVar7 = random_byte();
        *puVar8 = uVar7;
        puVar8 = puVar8 + 1;
      } while (puVar8 != puVar3 + iVar9);
    }
    if (uVar2 != 0) {
      puVar3[iVar4 + -1] = (byte)(0xff >> (8 - uVar2 & 0x1f)) & puVar3[iVar4 + -1];
    }
    iVar5 = bignum_from_bytes(puVar3,iVar9);
    iVar6 = bignum_cmp(iVar5,param_1);
    if ((-1 < iVar6) && (iVar6 = bignum_cmp(iVar5,param_2), iVar6 < 1)) break;
    if (iVar5 != 0) {
      (*(code *)puVar1)(iVar5);
    }
  }
  (*(code *)PTR_smemclr_000b8328)(puVar3,iVar9);
  (*(code *)PTR_safefree_000b82e8)(puVar3);
  return iVar5;
}

