
void * xrealloc(void *p,size_t n)

{
  void *pvVar1;
  
  if (n == 0) {
    if (p == (void *)0x0) {
      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);
    }
    else {
      (*(code *)PTR_free_000323c8)();
      pvVar1 = (void *)0x0;
    }
  }
  else {
    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();
    if (pvVar1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      xalloc_die();
    }
  }
  return pvVar1;
}



int xrealloc(int param_1,uint param_2,uint param_3)

{
  longlong lVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  
  if (param_2 == 0) {
    if (param_1 == 0) {
      iVar2 = (*(code *)PTR_malloc_0003235c)(0);
    }
    else {
      (*(code *)PTR_free_000323c8)();
      iVar2 = 0;
    }
    return iVar2;
  }
  iVar2 = (*(code *)PTR_realloc_00032360)();
  if (iVar2 != 0) {
    return iVar2;
  }
  xalloc_die();
  puVar4 = (uint *)(param_2 * param_3);
  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&
      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {
    iVar2 = xrealloc();
    return iVar2;
  }
  xalloc_die();
  uVar3 = *puVar4;
  if (param_1 == 0) {
    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;
    if (uVar3 == 0) {
      if (param_3 == 0) {
        trap(7);
      }
      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;
      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;
    }
    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;
    xalloc_die();
  }
  else {
    if (param_3 == 0) {
      trap(7);
    }
    if (uVar3 < 0x55555554 / param_3) {
      uVar3 = (uVar3 >> 1) + uVar3 + 1;
LAB_0001ae08:
      *puVar4 = uVar3;
      iVar2 = xrealloc();
      return iVar2;
    }
  }
  xalloc_die();
  uVar3 = *puVar4;
  if (param_1 == 0) {
    if (uVar3 != 0) {
      if (-1 < (int)uVar3) goto LAB_0001aec4;
      xalloc_die();
      goto LAB_0001af00;
    }
  }
  else {
    if (uVar3 < 0x55555554) {
      uVar3 = uVar3 + 1 + (uVar3 >> 1);
      goto LAB_0001aec4;
    }
LAB_0001af00:
    xalloc_die();
  }
  uVar3 = 0x40;
LAB_0001aec4:
  *puVar4 = uVar3;
  iVar2 = xrealloc();
  return iVar2;
}


lui gp,0x2
addiu gp,gp,-0xc00
addu gp,gp,t9
addiu sp,sp,-0x20
sw ra,0x1c(sp)
sw gp,0x10(sp)
bne a1,zero,0x0001ad3c
_lw t9,-0x7d80(gp)
bne a0,zero,0x0001ad24
_lw t9,-0x7d84(gp)
or a0,zero,zero
jalr t9
_nop
lw gp,0x10(sp)
lw ra,0x1c(sp)
jr ra
_addiu sp,sp,0x20
lw t9,-0x7d18(gp)
jalr t9
_nop
lw gp,0x10(sp)
b 0x0001ad18
_or v0,zero,zero
jalr t9
_nop
lw gp,0x10(sp)
bne v0,zero,0x0001ad1c
_lw ra,0x1c(sp)
lw t9,-0x7fa4(gp)
bal 0x0001b0a0
_nop
lui gp,0x2
addiu gp,gp,-0xc7c
addu gp,gp,t9
addiu sp,sp,-0x20
sw ra,0x1c(sp)
sw gp,0x10(sp)
multu a1,a2
mflo t1
mfhi t0
sltu a3,zero,t0
slti v0,t1,0x0
li v1,0x1
movz v1,a3,v0
bne v1,zero,0x0001adb4
_mul a1,a1,a2
lw t9,-0x7ef4(gp)
bal 0x0001ace0
_nop
lw gp,0x10(sp)
lw ra,0x1c(sp)
jr ra
_addiu sp,sp,0x20
lw t9,-0x7fa4(gp)
bal 0x0001b0a0
_nop
lui gp,0x2
addiu gp,gp,-0xce0
addu gp,gp,t9
addiu sp,sp,-0x20
sw ra,0x1c(sp)
sw gp,0x10(sp)
beq a0,zero,0x0001ae2c
_lw v0,0x0(a1)
lui v1,0x5555
addiu v1,v1,0x5554
teq a2,zero
divu v1,a2
mflo v1
sltu v1,v0,v1
beq v1,zero,0x0001ae7c
_srl v1,v0,0x1
addiu v0,v0,0x1
addu v0,v1,v0
sw v0,0x0(a1)
mul a1,v0,a2
lw t9,-0x7ef4(gp)
bal 0x0001ace0
_nop
lw gp,0x10(sp)
lw ra,0x1c(sp)
jr ra
_addiu sp,sp,0x20
bne v0,zero,0x0001ae54
_multu v0,a2
li v0,0x40
teq a2,zero
divu v0,a2
sltiu v0,a2,0x41
xori v0,v0,0x1
mflo v1
addu v0,v0,v1
multu v0,a2
mflo t3
mfhi t2
sltu t0,zero,t2
slti v1,t3,0x0
li a3,0x1
movz a3,t0,v1
beq a3,zero,0x0001ae08
_lw t9,-0x7fa4(gp)
bal 0x0001b0a0
_nop
lw t9,-0x7fa4(gp)
bal 0x0001b0a0
_nop
lui gp,0x2
addiu gp,gp,-0xda8
addu gp,gp,t9
addiu sp,sp,-0x20
sw ra,0x1c(sp)
sw gp,0x10(sp)
beq a0,zero,0x0001aee8
_lw v0,0x0(a1)
lui v1,0x5555
addiu v1,v1,0x5554
sltu v1,v0,v1
beq v1,zero,0x0001af00
_srl v1,v0,0x1
addiu v0,v0,0x1
addu v0,v0,v1
sw v0,0x0(a1)
or a1,v0,zero
lw t9,-0x7ef4(gp)
bal 0x0001ace0
_nop
lw gp,0x10(sp)
lw ra,0x1c(sp)
jr ra
_addiu sp,sp,0x20
beq v0,zero,0x0001af0c
_nop
bgez v0,0x0001aec4
_lw t9,-0x7fa4(gp)
bal 0x0001b0a0
_nop
lw t9,-0x7fa4(gp)
bal 0x0001b0a0
_nop
b 0x0001aec4
_li v0,0x40
(translation_unit "int xrealloc(int param_1,uint param_2,uint param_3)\n\n{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}\n\n" (function_definition "int xrealloc(int param_1,uint param_2,uint param_3)\n\n{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}" primitive_type (function_declarator "xrealloc(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (if_statement "if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }" { (if_statement "if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }" { (expression_statement "iVar2 = (*(code *)PTR_malloc_0003235c)(0);" (assignment_expression "iVar2 = (*(code *)PTR_malloc_0003235c)(0)" identifier = (call_expression "(*(code *)PTR_malloc_0003235c)(0)" (parenthesized_expression "(*(code *)PTR_malloc_0003235c)" ( (pointer_expression "*(code *)PTR_malloc_0003235c" * (cast_expression "(code *)PTR_malloc_0003235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal )))) ;) }) (else_clause "else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" else (compound_statement "{\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" { (expression_statement "(*(code *)PTR_free_000323c8)();" (call_expression "(*(code *)PTR_free_000323c8)()" (parenthesized_expression "(*(code *)PTR_free_000323c8)" ( (pointer_expression "*(code *)PTR_free_000323c8" * (cast_expression "(code *)PTR_free_000323c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }))) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar2 = (*(code *)PTR_realloc_00032360)();" (assignment_expression "iVar2 = (*(code *)PTR_realloc_00032360)()" identifier = (call_expression "(*(code *)PTR_realloc_00032360)()" (parenthesized_expression "(*(code *)PTR_realloc_00032360)" ( (pointer_expression "*(code *)PTR_realloc_00032360" * (cast_expression "(code *)PTR_realloc_00032360" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n    return iVar2;\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)(param_2 * param_3);" (assignment_expression "puVar4 = (uint *)(param_2 * param_3)" identifier = (cast_expression "(uint *)(param_2 * param_3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 * param_3)" ( (binary_expression "param_2 * param_3" identifier * identifier) )))) ;) (if_statement "if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }" if (parenthesized_expression "(-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0)" ( (binary_expression "-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0" (binary_expression "-1 < (int)((ulonglong)param_2 * (ulonglong)param_3)" number_literal < (cast_expression "(int)((ulonglong)param_2 * (ulonglong)param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_2 * (ulonglong)param_3)" ( (binary_expression "(ulonglong)param_2 * (ulonglong)param_3" (cast_expression "(ulonglong)param_2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) && (binary_expression "(int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0" (cast_expression "(int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_2 * (ulonglong)param_3 >> 0x20)" ( (binary_expression "(ulonglong)param_2 * (ulonglong)param_3 >> 0x20" (binary_expression "(ulonglong)param_2 * (ulonglong)param_3" (cast_expression "(ulonglong)param_2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) == number_literal)) )) (compound_statement "{\n    iVar2 = xrealloc();\n    return iVar2;\n  }" { (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" identifier = (call_expression "xrealloc()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }" { (expression_statement "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;" (assignment_expression "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3" identifier = (binary_expression "(ulonglong)uVar3 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (if_statement "if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }" { (if_statement "if (param_3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;" (assignment_expression "uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3" identifier = (binary_expression "(param_3 < 0x41 ^ 1) + 0x40 / param_3" (parenthesized_expression "(param_3 < 0x41 ^ 1)" ( (binary_expression "param_3 < 0x41 ^ 1" (binary_expression "param_3 < 0x41" identifier < number_literal) ^ number_literal) )) + (binary_expression "0x40 / param_3" number_literal / identifier))) ;) (expression_statement "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;" (assignment_expression "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3" identifier = (binary_expression "(ulonglong)uVar3 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) })) (if_statement "if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;" if (parenthesized_expression "(-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0)" ( (binary_expression "-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0" (binary_expression "-1 < (int)lVar1" number_literal < (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier)) && (binary_expression "(int)((ulonglong)lVar1 >> 0x20) == 0" (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal)) )) (goto_statement "goto LAB_0001ae08;" goto statement_identifier ;)) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" else (compound_statement "{\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" { (if_statement "if (param_3 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }" if (parenthesized_expression "(uVar3 < 0x55555554 / param_3)" ( (binary_expression "uVar3 < 0x55555554 / param_3" identifier < (binary_expression "0x55555554 / param_3" number_literal / identifier)) )) (compound_statement "{\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }" { (expression_statement "uVar3 = (uVar3 >> 1) + uVar3 + 1;" (assignment_expression "uVar3 = (uVar3 >> 1) + uVar3 + 1" identifier = (binary_expression "(uVar3 >> 1) + uVar3 + 1" (binary_expression "(uVar3 >> 1) + uVar3" (parenthesized_expression "(uVar3 >> 1)" ( (binary_expression "uVar3 >> 1" identifier >> number_literal) )) + identifier) + number_literal)) ;) (labeled_statement "LAB_0001ae08:\n      *puVar4 = uVar3;" statement_identifier : (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;)) (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" identifier = (call_expression "xrealloc()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) }))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }" { (if_statement "if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }" { (if_statement "if (-1 < (int)uVar3) goto LAB_0001aec4;" if (parenthesized_expression "(-1 < (int)uVar3)" ( (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001aec4;" goto statement_identifier ;)) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0001af00;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" else (compound_statement "{\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" { (if_statement "if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }" if (parenthesized_expression "(uVar3 < 0x55555554)" ( (binary_expression "uVar3 < 0x55555554" identifier < number_literal) )) (compound_statement "{\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }" { (expression_statement "uVar3 = uVar3 + 1 + (uVar3 >> 1);" (assignment_expression "uVar3 = uVar3 + 1 + (uVar3 >> 1)" identifier = (binary_expression "uVar3 + 1 + (uVar3 >> 1)" (binary_expression "uVar3 + 1" identifier + number_literal) + (parenthesized_expression "(uVar3 >> 1)" ( (binary_expression "uVar3 >> 1" identifier >> number_literal) )))) ;) (goto_statement "goto LAB_0001aec4;" goto statement_identifier ;) })) (labeled_statement "LAB_0001af00:\n    xalloc_die();" statement_identifier : (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) }))) (expression_statement "uVar3 = 0x40;" (assignment_expression "uVar3 = 0x40" identifier = number_literal) ;) (labeled_statement "LAB_0001aec4:\n  *puVar4 = uVar3;" statement_identifier : (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;)) (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" identifier = (call_expression "xrealloc()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "void * xrealloc(void *p,size_t n)\n\n{\n  void *pvVar1;\n  \n  if (n == 0) {\n    if (p == (void *)0x0) {\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }\n  }\n  else {\n    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();\n    if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  return pvVar1;\n}\n\n" (function_definition "void * xrealloc(void *p,size_t n)\n\n{\n  void *pvVar1;\n  \n  if (n == 0) {\n    if (p == (void *)0x0) {\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }\n  }\n  else {\n    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();\n    if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  return pvVar1;\n}" primitive_type (pointer_declarator "* xrealloc(void *p,size_t n)" * (function_declarator "xrealloc(void *p,size_t n)" identifier (parameter_list "(void *p,size_t n)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "size_t n" primitive_type identifier) )))) (compound_statement "{\n  void *pvVar1;\n  \n  if (n == 0) {\n    if (p == (void *)0x0) {\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }\n  }\n  else {\n    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();\n    if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }\n  return pvVar1;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (if_statement "if (n == 0) {\n    if (p == (void *)0x0) {\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }\n  }\n  else {\n    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();\n    if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" if (parenthesized_expression "(n == 0)" ( (binary_expression "n == 0" identifier == number_literal) )) (compound_statement "{\n    if (p == (void *)0x0) {\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }\n  }" { (if_statement "if (p == (void *)0x0) {\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }" if (parenthesized_expression "(p == (void *)0x0)" ( (binary_expression "p == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);\n    }" { (expression_statement "pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0);" (assignment_expression "pvVar1 = (void *)(*(code *)PTR_malloc_0003235c)(0)" identifier = (cast_expression "(void *)(*(code *)PTR_malloc_0003235c)(0)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_0003235c)(0)" (parenthesized_expression "(*(code *)PTR_malloc_0003235c)" ( (pointer_expression "*(code *)PTR_malloc_0003235c" * (cast_expression "(code *)PTR_malloc_0003235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal ))))) ;) }) (else_clause "else {\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }" else (compound_statement "{\n      (*(code *)PTR_free_000323c8)();\n      pvVar1 = (void *)0x0;\n    }" { (expression_statement "(*(code *)PTR_free_000323c8)();" (call_expression "(*(code *)PTR_free_000323c8)()" (parenthesized_expression "(*(code *)PTR_free_000323c8)" ( (pointer_expression "*(code *)PTR_free_000323c8" * (cast_expression "(code *)PTR_free_000323c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pvVar1 = (void *)0x0;" (assignment_expression "pvVar1 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();\n    if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" else (compound_statement "{\n    pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();\n    if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }\n  }" { (expression_statement "pvVar1 = (void *)(*(code *)PTR_realloc_00032360)();" (assignment_expression "pvVar1 = (void *)(*(code *)PTR_realloc_00032360)()" identifier = (cast_expression "(void *)(*(code *)PTR_realloc_00032360)()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_00032360)()" (parenthesized_expression "(*(code *)PTR_realloc_00032360)" ( (pointer_expression "*(code *)PTR_realloc_00032360" * (cast_expression "(code *)PTR_realloc_00032360" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (if_statement "if (pvVar1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      xalloc_die();\n    }" { comment (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) })) }))) (return_statement "return pvVar1;" return identifier ;) })))
(translation_unit "int xrealloc(int param_1,uint param_2,uint param_3)\n\n{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}\n\n" (function_definition "int xrealloc(int param_1,uint param_2,uint param_3)\n\n{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}" primitive_type (function_declarator "xrealloc(int param_1,uint param_2,uint param_3)" identifier (parameter_list "(int param_1,uint param_2,uint param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}" { (declaration "longlong lVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (if_statement "if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }" { (if_statement "if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }" { (expression_statement "iVar2 = (*(code *)PTR_malloc_0003235c)(0);" (assignment_expression "iVar2 = (*(code *)PTR_malloc_0003235c)(0)" identifier = (call_expression "(*(code *)PTR_malloc_0003235c)(0)" (parenthesized_expression "(*(code *)PTR_malloc_0003235c)" ( (pointer_expression "*(code *)PTR_malloc_0003235c" * (cast_expression "(code *)PTR_malloc_0003235c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0)" ( number_literal )))) ;) }) (else_clause "else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" else (compound_statement "{\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" { (expression_statement "(*(code *)PTR_free_000323c8)();" (call_expression "(*(code *)PTR_free_000323c8)()" (parenthesized_expression "(*(code *)PTR_free_000323c8)" ( (pointer_expression "*(code *)PTR_free_000323c8" * (cast_expression "(code *)PTR_free_000323c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) }))) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "iVar2 = (*(code *)PTR_realloc_00032360)();" (assignment_expression "iVar2 = (*(code *)PTR_realloc_00032360)()" identifier = (call_expression "(*(code *)PTR_realloc_00032360)()" (parenthesized_expression "(*(code *)PTR_realloc_00032360)" ( (pointer_expression "*(code *)PTR_realloc_00032360" * (cast_expression "(code *)PTR_realloc_00032360" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\n    return iVar2;\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) })) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)(param_2 * param_3);" (assignment_expression "puVar4 = (uint *)(param_2 * param_3)" identifier = (cast_expression "(uint *)(param_2 * param_3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 * param_3)" ( (binary_expression "param_2 * param_3" identifier * identifier) )))) ;) (if_statement "if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }" if (parenthesized_expression "(-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0)" ( (binary_expression "-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0" (binary_expression "-1 < (int)((ulonglong)param_2 * (ulonglong)param_3)" number_literal < (cast_expression "(int)((ulonglong)param_2 * (ulonglong)param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_2 * (ulonglong)param_3)" ( (binary_expression "(ulonglong)param_2 * (ulonglong)param_3" (cast_expression "(ulonglong)param_2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) && (binary_expression "(int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0" (cast_expression "(int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_2 * (ulonglong)param_3 >> 0x20)" ( (binary_expression "(ulonglong)param_2 * (ulonglong)param_3 >> 0x20" (binary_expression "(ulonglong)param_2 * (ulonglong)param_3" (cast_expression "(ulonglong)param_2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))) == number_literal)) )) (compound_statement "{\n    iVar2 = xrealloc();\n    return iVar2;\n  }" { (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" identifier = (call_expression "xrealloc()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }" { (expression_statement "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;" (assignment_expression "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3" identifier = (binary_expression "(ulonglong)uVar3 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) (if_statement "if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }" { (if_statement "if (param_3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;" (assignment_expression "uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3" identifier = (binary_expression "(param_3 < 0x41 ^ 1) + 0x40 / param_3" (parenthesized_expression "(param_3 < 0x41 ^ 1)" ( (binary_expression "param_3 < 0x41 ^ 1" (binary_expression "param_3 < 0x41" identifier < number_literal) ^ number_literal) )) + (binary_expression "0x40 / param_3" number_literal / identifier))) ;) (expression_statement "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;" (assignment_expression "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3" identifier = (binary_expression "(ulonglong)uVar3 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier))) ;) })) (if_statement "if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;" if (parenthesized_expression "(-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0)" ( (binary_expression "-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0" (binary_expression "-1 < (int)lVar1" number_literal < (cast_expression "(int)lVar1" ( (type_descriptor "int" primitive_type) ) identifier)) && (binary_expression "(int)((ulonglong)lVar1 >> 0x20) == 0" (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" ( (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) == number_literal)) )) (goto_statement "goto LAB_0001ae08;" goto statement_identifier ;)) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" else (compound_statement "{\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" { (if_statement "if (param_3 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }" if (parenthesized_expression "(uVar3 < 0x55555554 / param_3)" ( (binary_expression "uVar3 < 0x55555554 / param_3" identifier < (binary_expression "0x55555554 / param_3" number_literal / identifier)) )) (compound_statement "{\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }" { (expression_statement "uVar3 = (uVar3 >> 1) + uVar3 + 1;" (assignment_expression "uVar3 = (uVar3 >> 1) + uVar3 + 1" identifier = (binary_expression "(uVar3 >> 1) + uVar3 + 1" (binary_expression "(uVar3 >> 1) + uVar3" (parenthesized_expression "(uVar3 >> 1)" ( (binary_expression "uVar3 >> 1" identifier >> number_literal) )) + identifier) + number_literal)) ;) (labeled_statement "LAB_0001ae08:\n      *puVar4 = uVar3;" statement_identifier : (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;)) (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" identifier = (call_expression "xrealloc()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })) }))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }" { (if_statement "if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }" { (if_statement "if (-1 < (int)uVar3) goto LAB_0001aec4;" if (parenthesized_expression "(-1 < (int)uVar3)" ( (binary_expression "-1 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001aec4;" goto statement_identifier ;)) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;) (goto_statement "goto LAB_0001af00;" goto statement_identifier ;) })) }) (else_clause "else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" else (compound_statement "{\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" { (if_statement "if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }" if (parenthesized_expression "(uVar3 < 0x55555554)" ( (binary_expression "uVar3 < 0x55555554" identifier < number_literal) )) (compound_statement "{\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }" { (expression_statement "uVar3 = uVar3 + 1 + (uVar3 >> 1);" (assignment_expression "uVar3 = uVar3 + 1 + (uVar3 >> 1)" identifier = (binary_expression "uVar3 + 1 + (uVar3 >> 1)" (binary_expression "uVar3 + 1" identifier + number_literal) + (parenthesized_expression "(uVar3 >> 1)" ( (binary_expression "uVar3 >> 1" identifier >> number_literal) )))) ;) (goto_statement "goto LAB_0001aec4;" goto statement_identifier ;) })) (labeled_statement "LAB_0001af00:\n    xalloc_die();" statement_identifier : (expression_statement "xalloc_die();" (call_expression "xalloc_die()" identifier (argument_list "()" ( ))) ;)) }))) (expression_statement "uVar3 = 0x40;" (assignment_expression "uVar3 = 0x40" identifier = number_literal) ;) (labeled_statement "LAB_0001aec4:\n  *puVar4 = uVar3;" statement_identifier : (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" * identifier) = identifier) ;)) (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" identifier = (call_expression "xrealloc()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) && (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT < LIT) ^ LIT) )) + (binary_expression LIT / IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) && (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) == LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression LIT / IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + IDENT) + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "int xrealloc(int param_1,uint param_2,uint param_3)\n\n{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}" (primitive_type "int") (function_declarator "xrealloc(int param_1,uint param_2,uint param_3)" (identifier "xrealloc") (parameter_list "(int param_1,uint param_2,uint param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  longlong lVar1;\n  int iVar2;\n  uint uVar3;\n  uint *puVar4;\n  \n  if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }\n  iVar2 = (*(code *)PTR_realloc_00032360)();\n  if (iVar2 != 0) {\n    return iVar2;\n  }\n  xalloc_die();\n  puVar4 = (uint *)(param_2 * param_3);\n  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }\n  xalloc_die();\n  uVar3 = *puVar4;\n  if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }\n  uVar3 = 0x40;\nLAB_0001aec4:\n  *puVar4 = uVar3;\n  iVar2 = xrealloc();\n  return iVar2;\n}" ({ "{") (declaration "longlong lVar1;" (type_identifier "longlong") (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (if_statement "if (param_2 == 0) {\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }\n    return iVar2;\n  }" ({ "{") (if_statement "if (param_1 == 0) {\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }\n    else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar2 = (*(code *)PTR_malloc_0003235c)(0);\n    }" ({ "{") (expression_statement "iVar2 = (*(code *)PTR_malloc_0003235c)(0);" (assignment_expression "iVar2 = (*(code *)PTR_malloc_0003235c)(0)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_malloc_0003235c)(0)" (parenthesized_expression "(*(code *)PTR_malloc_0003235c)" (( "(") (pointer_expression "*(code *)PTR_malloc_0003235c" (* "*") (cast_expression "(code *)PTR_malloc_0003235c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_malloc_0003235c"))) () ")")) (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" (else "else") (compound_statement "{\n      (*(code *)PTR_free_000323c8)();\n      iVar2 = 0;\n    }" ({ "{") (expression_statement "(*(code *)PTR_free_000323c8)();" (call_expression "(*(code *)PTR_free_000323c8)()" (parenthesized_expression "(*(code *)PTR_free_000323c8)" (( "(") (pointer_expression "*(code *)PTR_free_000323c8" (* "*") (cast_expression "(code *)PTR_free_000323c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_000323c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}")))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "iVar2 = (*(code *)PTR_realloc_00032360)();" (assignment_expression "iVar2 = (*(code *)PTR_realloc_00032360)()" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_realloc_00032360)()" (parenthesized_expression "(*(code *)PTR_realloc_00032360)" (( "(") (pointer_expression "*(code *)PTR_realloc_00032360" (* "*") (cast_expression "(code *)PTR_realloc_00032360" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_realloc_00032360"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)(param_2 * param_3);" (assignment_expression "puVar4 = (uint *)(param_2 * param_3)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(param_2 * param_3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 * param_3)" (( "(") (binary_expression "param_2 * param_3" (identifier "param_2") (* "*") (identifier "param_3")) () ")")))) (; ";")) (if_statement "if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {\n    iVar2 = xrealloc();\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0)" (( "(") (binary_expression "-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&\n      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0" (binary_expression "-1 < (int)((ulonglong)param_2 * (ulonglong)param_3)" (number_literal "-1") (< "<") (cast_expression "(int)((ulonglong)param_2 * (ulonglong)param_3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)param_2 * (ulonglong)param_3)" (( "(") (binary_expression "(ulonglong)param_2 * (ulonglong)param_3" (cast_expression "(ulonglong)param_2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_2")) (* "*") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3"))) () ")")))) (&& "&&") (binary_expression "(int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0" (cast_expression "(int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)param_2 * (ulonglong)param_3 >> 0x20)" (( "(") (binary_expression "(ulonglong)param_2 * (ulonglong)param_3 >> 0x20" (binary_expression "(ulonglong)param_2 * (ulonglong)param_3" (cast_expression "(ulonglong)param_2" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_2")) (* "*") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3"))) (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    iVar2 = xrealloc();\n    return iVar2;\n  }" ({ "{") (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" (identifier "iVar2") (= "=") (call_expression "xrealloc()" (identifier "xrealloc") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" (identifier "uVar3") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (param_1 == 0) {\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }\n  else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }\n    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;\n    xalloc_die();\n  }" ({ "{") (expression_statement "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;" (assignment_expression "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)uVar3 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3")) (* "*") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3")))) (; ";")) (if_statement "if (uVar3 == 0) {\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_3 == 0) {\n        trap(7);\n      }\n      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;\n      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;\n    }" ({ "{") (if_statement "if (param_3 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;" (assignment_expression "uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3" (identifier "uVar3") (= "=") (binary_expression "(param_3 < 0x41 ^ 1) + 0x40 / param_3" (parenthesized_expression "(param_3 < 0x41 ^ 1)" (( "(") (binary_expression "param_3 < 0x41 ^ 1" (binary_expression "param_3 < 0x41" (identifier "param_3") (< "<") (number_literal "0x41")) (^ "^") (number_literal "1")) () ")")) (+ "+") (binary_expression "0x40 / param_3" (number_literal "0x40") (/ "/") (identifier "param_3")))) (; ";")) (expression_statement "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;" (assignment_expression "lVar1 = (ulonglong)uVar3 * (ulonglong)param_3" (identifier "lVar1") (= "=") (binary_expression "(ulonglong)uVar3 * (ulonglong)param_3" (cast_expression "(ulonglong)uVar3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar3")) (* "*") (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3")))) (; ";")) (} "}"))) (if_statement "if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;" (if "if") (parenthesized_expression "(-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0)" (( "(") (binary_expression "-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0" (binary_expression "-1 < (int)lVar1" (number_literal "-1") (< "<") (cast_expression "(int)lVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar1"))) (&& "&&") (binary_expression "(int)((ulonglong)lVar1 >> 0x20) == 0" (cast_expression "(int)((ulonglong)lVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)lVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)lVar1 >> 0x20" (cast_expression "(ulonglong)lVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "lVar1")) (>> ">>") (number_literal "0x20")) () ")"))) (== "==") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0001ae08;" (goto "goto") (statement_identifier "LAB_0001ae08") (; ";"))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" (else "else") (compound_statement "{\n    if (param_3 == 0) {\n      trap(7);\n    }\n    if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }\n  }" ({ "{") (if_statement "if (param_3 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar3 < 0x55555554 / param_3) {\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }" (if "if") (parenthesized_expression "(uVar3 < 0x55555554 / param_3)" (( "(") (binary_expression "uVar3 < 0x55555554 / param_3" (identifier "uVar3") (< "<") (binary_expression "0x55555554 / param_3" (number_literal "0x55555554") (/ "/") (identifier "param_3"))) () ")")) (compound_statement "{\n      uVar3 = (uVar3 >> 1) + uVar3 + 1;\nLAB_0001ae08:\n      *puVar4 = uVar3;\n      iVar2 = xrealloc();\n      return iVar2;\n    }" ({ "{") (expression_statement "uVar3 = (uVar3 >> 1) + uVar3 + 1;" (assignment_expression "uVar3 = (uVar3 >> 1) + uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "(uVar3 >> 1) + uVar3 + 1" (binary_expression "(uVar3 >> 1) + uVar3" (parenthesized_expression "(uVar3 >> 1)" (( "(") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1")) () ")")) (+ "+") (identifier "uVar3")) (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_0001ae08:\n      *puVar4 = uVar3;" (statement_identifier "LAB_0001ae08") (: ":") (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar3")) (; ";"))) (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" (identifier "iVar2") (= "=") (call_expression "xrealloc()" (identifier "xrealloc") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (} "}")))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" (identifier "uVar3") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (param_1 == 0) {\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }\n  else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }\n  }" ({ "{") (if_statement "if (uVar3 != 0) {\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (-1 < (int)uVar3) goto LAB_0001aec4;\n      xalloc_die();\n      goto LAB_0001af00;\n    }" ({ "{") (if_statement "if (-1 < (int)uVar3) goto LAB_0001aec4;" (if "if") (parenthesized_expression "(-1 < (int)uVar3)" (( "(") (binary_expression "-1 < (int)uVar3" (number_literal "-1") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) () ")")) (goto_statement "goto LAB_0001aec4;" (goto "goto") (statement_identifier "LAB_0001aec4") (; ";"))) (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";")) (goto_statement "goto LAB_0001af00;" (goto "goto") (statement_identifier "LAB_0001af00") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" (else "else") (compound_statement "{\n    if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }\nLAB_0001af00:\n    xalloc_die();\n  }" ({ "{") (if_statement "if (uVar3 < 0x55555554) {\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }" (if "if") (parenthesized_expression "(uVar3 < 0x55555554)" (( "(") (binary_expression "uVar3 < 0x55555554" (identifier "uVar3") (< "<") (number_literal "0x55555554")) () ")")) (compound_statement "{\n      uVar3 = uVar3 + 1 + (uVar3 >> 1);\n      goto LAB_0001aec4;\n    }" ({ "{") (expression_statement "uVar3 = uVar3 + 1 + (uVar3 >> 1);" (assignment_expression "uVar3 = uVar3 + 1 + (uVar3 >> 1)" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1 + (uVar3 >> 1)" (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (+ "+") (parenthesized_expression "(uVar3 >> 1)" (( "(") (binary_expression "uVar3 >> 1" (identifier "uVar3") (>> ">>") (number_literal "1")) () ")")))) (; ";")) (goto_statement "goto LAB_0001aec4;" (goto "goto") (statement_identifier "LAB_0001aec4") (; ";")) (} "}"))) (labeled_statement "LAB_0001af00:\n    xalloc_die();" (statement_identifier "LAB_0001af00") (: ":") (expression_statement "xalloc_die();" (call_expression "xalloc_die()" (identifier "xalloc_die") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (expression_statement "uVar3 = 0x40;" (assignment_expression "uVar3 = 0x40" (identifier "uVar3") (= "=") (number_literal "0x40")) (; ";")) (labeled_statement "LAB_0001aec4:\n  *puVar4 = uVar3;" (statement_identifier "LAB_0001aec4") (: ":") (expression_statement "*puVar4 = uVar3;" (assignment_expression "*puVar4 = uVar3" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "uVar3")) (; ";"))) (expression_statement "iVar2 = xrealloc();" (assignment_expression "iVar2 = xrealloc()" (identifier "iVar2") (= "=") (call_expression "xrealloc()" (identifier "xrealloc") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

void * function_1(void *var_2,size_t var_1)

{
  void *var_3;
  
  if (var_1 == 0) {
    if (var_2 == (void *)0x0) {
      var_3 = (void *)(*(type_1 *)PTR_malloc_0003235c)(0);
    }
    else {
      (*(type_1 *)PTR_free_000323c8)();
      var_3 = (void *)0x0;
    }
  }
  else {
    var_3 = (void *)(*(type_1 *)PTR_realloc_00032360)();
    if (var_3 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_4();
    }
  }
  return var_3;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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 (number_literal)))))) alternative: (else_clause (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))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (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: (binary_expression left: (number_literal) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (return_statement (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (return_statement (identifier)))))

int MASKED(int param_1,uint param_2,uint param_3)

{
  longlong lVar1;
  int iVar2;
  uint uVar3;
  uint *puVar4;
  
  if (param_2 == 0) {
    if (param_1 == 0) {
      iVar2 = (*(code *)PTR_malloc_0003235c)(0);
    }
    else {
      (*(code *)PTR_free_000323c8)();
      iVar2 = 0;
    }
    return iVar2;
  }
  iVar2 = (*(code *)PTR_realloc_00032360)();
  if (iVar2 != 0) {
    return iVar2;
  }
  xalloc_die();
  puVar4 = (uint *)(param_2 * param_3);
  if (-1 < (int)((ulonglong)param_2 * (ulonglong)param_3) &&
      (int)((ulonglong)param_2 * (ulonglong)param_3 >> 0x20) == 0) {
    iVar2 = MASKED();
    return iVar2;
  }
  xalloc_die();
  uVar3 = *puVar4;
  if (param_1 == 0) {
    lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;
    if (uVar3 == 0) {
      if (param_3 == 0) {
        trap(7);
      }
      uVar3 = (param_3 < 0x41 ^ 1) + 0x40 / param_3;
      lVar1 = (ulonglong)uVar3 * (ulonglong)param_3;
    }
    if (-1 < (int)lVar1 && (int)((ulonglong)lVar1 >> 0x20) == 0) goto LAB_0001ae08;
    xalloc_die();
  }
  else {
    if (param_3 == 0) {
      trap(7);
    }
    if (uVar3 < 0x55555554 / param_3) {
      uVar3 = (uVar3 >> 1) + uVar3 + 1;
LAB_0001ae08:
      *puVar4 = uVar3;
      iVar2 = MASKED();
      return iVar2;
    }
  }
  xalloc_die();
  uVar3 = *puVar4;
  if (param_1 == 0) {
    if (uVar3 != 0) {
      if (-1 < (int)uVar3) goto LAB_0001aec4;
      xalloc_die();
      goto LAB_0001af00;
    }
  }
  else {
    if (uVar3 < 0x55555554) {
      uVar3 = uVar3 + 1 + (uVar3 >> 1);
      goto LAB_0001aec4;
    }
LAB_0001af00:
    xalloc_die();
  }
  uVar3 = 0x40;
LAB_0001aec4:
  *puVar4 = uVar3;
  iVar2 = MASKED();
  return iVar2;
}

