
void zbc_num_divmod(BcNum *param_1,BcNum *param_2,BcNum *param_3,BcNum *param_4,size_t param_5)

{
  undefined *puVar1;
  BcDig *pBVar2;
  uint uVar3;
  size_t sVar4;
  BcNum *size;
  uint uVar5;
  uint ts;
  int iVar6;
  BcNum *size_00;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  sVar4 = param_2->rdx;
  uVar3 = param_1->rdx;
  ts = sVar4 + param_5;
  if (sVar4 + param_5 < uVar3) {
    ts = uVar3;
  }
  uVar5 = uVar3 + sVar4;
  if (uVar3 + sVar4 < ts) {
    uVar5 = ts;
  }
  iVar6 = *(int *)PTR___stack_chk_guard_0012b14c;
  size_00 = (BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5);
  if (size_00 < (BcNum *)0x10) {
    size_00 = (BcNum *)0x10;
  }
  if (param_1 == param_3) {
                    /* WARNING: Subroutine does not return */
    xmalloc((size_t)size_00);
  }
  size = size_00;
  if ((BcNum *)param_3->cap < size_00) goto LAB_000288f0;
  while( true ) {
    size = param_2;
    zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);
    if (iVar6 == *(int *)puVar1) break;
    (*(code *)PTR___stack_chk_fail_0012b0c8)();
LAB_000288f0:
    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);
    param_3->num = pBVar2;
    param_3->cap = (size_t)size_00;
  }
  return;
}



undefined4
FUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)

{
  undefined *puVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined4 local_38;
  uint local_34;
  int local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  iVar4 = *(int *)(param_2 + 4);
  uVar3 = param_1[1];
  uVar5 = iVar4 + param_5;
  if ((uint)(iVar4 + param_5) < uVar3) {
    uVar5 = uVar3;
  }
  uVar6 = uVar3 + iVar4;
  if (uVar3 + iVar4 < uVar5) {
    uVar6 = uVar5;
  }
  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;
  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;
  if (uVar6 < 0x10) {
    uVar6 = 0x10;
  }
  if (param_1 == param_3) {
    local_38 = *param_1;
    local_2c = param_1[3];
    local_28 = param_1[4];
    local_34 = uVar3;
    local_30 = param_1[2];
    uVar2 = FUN_0001a1bc(uVar6);
    param_1[3] = uVar6;
    *param_1 = uVar2;
    param_1[1] = 0;
    param_1[2] = 0;
    *(undefined1 *)(param_1 + 4) = 0;
    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);
    (*(code *)PTR_free_0012b168)(local_38);
  }
  else {
    if ((uint)param_3[3] < uVar6) {
      uVar2 = FUN_0001a210(*param_3,uVar6);
      *param_3 = uVar2;
      param_3[3] = uVar6;
    }
    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);
  }
  if (local_24 == *(int *)puVar1) {
    return uVar2;
  }
  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();
  return uVar2;
}


lui gp,0x11
addiu gp,gp,-0x6604
addu gp,gp,t9
addiu sp,sp,-0x60
lw v0,0x8(a1)
sw s2,0x48(sp)
sw s1,0x44(sp)
or s1,a0,zero
lw s2,0x70(sp)
lw a0,0x4(a1)
lw v1,0x4(s1)
sw s5,0x54(sp)
addu t0,a0,s2
sw s6,0x58(sp)
or s6,a1,zero
sw s0,0x40(sp)
sltu s5,t0,v1
sw s4,0x50(sp)
movn t0,v1,s5
addiu s0,v0,0x1
or s4,a3,zero
lw a1,0x8(s1)
addu a3,v1,a0
sw s3,0x4c(sp)
sltu v0,a3,t0
lw s3,-0x7004(gp)
addu s0,s0,a1
movn a3,t0,v0
li v0,0x10
subu s0,s0,a0
sw gp,0x18(sp)
sw ra,0x5c(sp)
or s5,t0,zero
subu s0,s0,v1
lw t1,0x0(s3)
addu s0,s0,a3
sw t1,0x3c(sp)
sltiu a0,s0,0x10
bne s1,a2,0x0002887c
_movn s0,v0,a0
lw a3,0x0(s1)
or a0,s0,zero
lw a2,0xc(s1)
lw v0,0x10(s1)
lw t9,-0x7f20(gp)
sw v1,0x2c(sp)
sw a3,0x28(sp)
sw a1,0x30(sp)
sw a2,0x34(sp)
bal 0x0001a1bc
_sw v0,0x38(sp)
addiu a0,sp,0x28
lw gp,0x18(sp)
or a3,s4,zero
sw s0,0xc(s1)
or a2,s1,zero
sw s5,0x14(sp)
or a1,s6,zero
sw s2,0x10(sp)
sw v0,0x0(s1)
sw zero,0x4(s1)
sw zero,0x8(s1)
lw t9,-0x7db8(gp)
addiu t9,t9,-0x7cfc
bal 0x00028304
_sb zero,0x10(s1)
lw gp,0x18(sp)
lw a0,0x28(sp)
lw t9,-0x6fe8(gp)
jalr t9
_sw v0,0x24(sp)
lw gp,0x18(sp)
b 0x000288b0
_lw v0,0x24(sp)
lw v0,0xc(a2)
sltu v0,v0,s0
bne v0,zero,0x000288f0
_or a1,s0,zero
lw t9,-0x7db8(gp)
or a3,s4,zero
sw s5,0x14(sp)
or a1,s6,zero
sw s2,0x10(sp)
addiu t9,t9,-0x7cfc
bal 0x00028304
_or a0,s1,zero
lw gp,0x18(sp)
lw a0,0x3c(sp)
lw v1,0x0(s3)
bne a0,v1,0x000288e4
_lw ra,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x60
lw t9,-0x7088(gp)
jalr t9
_nop
lw a0,0x0(a2)
lw t9,-0x7eac(gp)
bal 0x0001a210
_sw a2,0x24(sp)
lw a2,0x24(sp)
lw gp,0x18(sp)
sw v0,0x0(a2)
b 0x0002888c
_sw s0,0xc(a2)
(translation_unit "undefined4\nFUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}\n\n" (function_definition "undefined4\nFUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)" identifier (parameter_list "(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)(param_2 + 4);" (assignment_expression "iVar4 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = param_1[1];" (assignment_expression "uVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = iVar4 + param_5;" (assignment_expression "uVar5 = iVar4 + param_5" identifier = (binary_expression "iVar4 + param_5" identifier + identifier)) ;) (if_statement "if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }" if (parenthesized_expression "((uint)(iVar4 + param_5) < uVar3)" ( (binary_expression "(uint)(iVar4 + param_5) < uVar3" (call_expression "(uint)(iVar4 + param_5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 + param_5)" ( (binary_expression "iVar4 + param_5" identifier + identifier) ))) < identifier) )) (compound_statement "{\n    uVar5 = uVar3;\n  }" { (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar6 = uVar3 + iVar4;" (assignment_expression "uVar6 = uVar3 + iVar4" identifier = (binary_expression "uVar3 + iVar4" identifier + identifier)) ;) (if_statement "if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }" if (parenthesized_expression "(uVar3 + iVar4 < uVar5)" ( (binary_expression "uVar3 + iVar4 < uVar5" (binary_expression "uVar3 + iVar4" identifier + identifier) < identifier) )) (compound_statement "{\n    uVar6 = uVar5;\n  }" { (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) })) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;" (assignment_expression "uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6" identifier = (binary_expression "(((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6" (parenthesized_expression "(((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3)" ( (binary_expression "((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3" (parenthesized_expression "((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4)" ( (binary_expression "(*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4" (parenthesized_expression "(*(int *)(param_2 + 8) + 1 + param_1[2])" ( (binary_expression "*(int *)(param_2 + 8) + 1 + param_1[2]" (binary_expression "*(int *)(param_2 + 8) + 1" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) + number_literal) + (subscript_expression "param_1[2]" identifier [ number_literal ])) )) - identifier) )) - identifier) )) + identifier)) ;) (if_statement "if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }" if (parenthesized_expression "(uVar6 < 0x10)" ( (binary_expression "uVar6 < 0x10" identifier < number_literal) )) (compound_statement "{\n    uVar6 = 0x10;\n  }" { (expression_statement "uVar6 = 0x10;" (assignment_expression "uVar6 = 0x10" identifier = number_literal) ;) })) (if_statement "if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" if (parenthesized_expression "(param_1 == param_3)" ( (binary_expression "param_1 == param_3" identifier == identifier) )) (compound_statement "{\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }" { (expression_statement "local_38 = *param_1;" (assignment_expression "local_38 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_2c = param_1[3];" (assignment_expression "local_2c = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_1[4];" (assignment_expression "local_28 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "local_34 = uVar3;" (assignment_expression "local_34 = uVar3" identifier = identifier) ;) (expression_statement "local_30 = param_1[2];" (assignment_expression "local_30 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_0001a1bc(uVar6);" (assignment_expression "uVar2 = FUN_0001a1bc(uVar6)" identifier = (call_expression "FUN_0001a1bc(uVar6)" identifier (argument_list "(uVar6)" ( identifier )))) ;) (expression_statement "param_1[3] = uVar6;" (assignment_expression "param_1[3] = uVar6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 4) = 0" (pointer_expression "*(undefined1 *)(param_1 + 4)" * (cast_expression "(undefined1 *)(param_1 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);" (assignment_expression "uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5)" identifier = (call_expression "FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5)" identifier (argument_list "(&local_38,param_2,param_1,param_4,param_5,uVar5)" ( (pointer_expression "&local_38" & identifier) , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(local_38);" (call_expression "(*(code *)PTR_free_0012b168)(local_38)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38)" ( identifier ))) ;) }) (else_clause "else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" else (compound_statement "{\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" { (if_statement "if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }" if (parenthesized_expression "((uint)param_3[3] < uVar6)" ( (binary_expression "(uint)param_3[3] < uVar6" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }" { (expression_statement "uVar2 = FUN_0001a210(*param_3,uVar6);" (assignment_expression "uVar2 = FUN_0001a210(*param_3,uVar6)" identifier = (call_expression "FUN_0001a210(*param_3,uVar6)" identifier (argument_list "(*param_3,uVar6)" ( (pointer_expression "*param_3" * identifier) , identifier )))) ;) (expression_statement "*param_3 = uVar2;" (assignment_expression "*param_3 = uVar2" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "param_3[3] = uVar6;" (assignment_expression "param_3[3] = uVar6" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);" (assignment_expression "uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5)" identifier = (call_expression "FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,uVar5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }))) (if_statement "if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_24 == *(int *)puVar1)" ( (binary_expression "local_24 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();" (assignment_expression "uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "void zbc_num_divmod(BcNum *param_1,BcNum *param_2,BcNum *param_3,BcNum *param_4,size_t param_5)\n\n{\n  undefined *puVar1;\n  BcDig *pBVar2;\n  uint uVar3;\n  size_t sVar4;\n  BcNum *size;\n  uint uVar5;\n  uint ts;\n  int iVar6;\n  BcNum *size_00;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  sVar4 = param_2->rdx;\n  uVar3 = param_1->rdx;\n  ts = sVar4 + param_5;\n  if (sVar4 + param_5 < uVar3) {\n    ts = uVar3;\n  }\n  uVar5 = uVar3 + sVar4;\n  if (uVar3 + sVar4 < ts) {\n    uVar5 = ts;\n  }\n  iVar6 = *(int *)PTR___stack_chk_guard_0012b14c;\n  size_00 = (BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5);\n  if (size_00 < (BcNum *)0x10) {\n    size_00 = (BcNum *)0x10;\n  }\n  if (param_1 == param_3) {\n                    /* WARNING: Subroutine does not return */\n    xmalloc((size_t)size_00);\n  }\n  size = size_00;\n  if ((BcNum *)param_3->cap < size_00) goto LAB_000288f0;\n  while( true ) {\n    size = param_2;\n    zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);\n    if (iVar6 == *(int *)puVar1) break;\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000288f0:\n    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);\n    param_3->num = pBVar2;\n    param_3->cap = (size_t)size_00;\n  }\n  return;\n}\n\n" (function_definition "void zbc_num_divmod(BcNum *param_1,BcNum *param_2,BcNum *param_3,BcNum *param_4,size_t param_5)\n\n{\n  undefined *puVar1;\n  BcDig *pBVar2;\n  uint uVar3;\n  size_t sVar4;\n  BcNum *size;\n  uint uVar5;\n  uint ts;\n  int iVar6;\n  BcNum *size_00;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  sVar4 = param_2->rdx;\n  uVar3 = param_1->rdx;\n  ts = sVar4 + param_5;\n  if (sVar4 + param_5 < uVar3) {\n    ts = uVar3;\n  }\n  uVar5 = uVar3 + sVar4;\n  if (uVar3 + sVar4 < ts) {\n    uVar5 = ts;\n  }\n  iVar6 = *(int *)PTR___stack_chk_guard_0012b14c;\n  size_00 = (BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5);\n  if (size_00 < (BcNum *)0x10) {\n    size_00 = (BcNum *)0x10;\n  }\n  if (param_1 == param_3) {\n                    /* WARNING: Subroutine does not return */\n    xmalloc((size_t)size_00);\n  }\n  size = size_00;\n  if ((BcNum *)param_3->cap < size_00) goto LAB_000288f0;\n  while( true ) {\n    size = param_2;\n    zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);\n    if (iVar6 == *(int *)puVar1) break;\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000288f0:\n    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);\n    param_3->num = pBVar2;\n    param_3->cap = (size_t)size_00;\n  }\n  return;\n}" primitive_type (function_declarator "zbc_num_divmod(BcNum *param_1,BcNum *param_2,BcNum *param_3,BcNum *param_4,size_t param_5)" identifier (parameter_list "(BcNum *param_1,BcNum *param_2,BcNum *param_3,BcNum *param_4,size_t param_5)" ( (parameter_declaration "BcNum *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "BcNum *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "BcNum *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "BcNum *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "size_t param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  BcDig *pBVar2;\n  uint uVar3;\n  size_t sVar4;\n  BcNum *size;\n  uint uVar5;\n  uint ts;\n  int iVar6;\n  BcNum *size_00;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  sVar4 = param_2->rdx;\n  uVar3 = param_1->rdx;\n  ts = sVar4 + param_5;\n  if (sVar4 + param_5 < uVar3) {\n    ts = uVar3;\n  }\n  uVar5 = uVar3 + sVar4;\n  if (uVar3 + sVar4 < ts) {\n    uVar5 = ts;\n  }\n  iVar6 = *(int *)PTR___stack_chk_guard_0012b14c;\n  size_00 = (BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5);\n  if (size_00 < (BcNum *)0x10) {\n    size_00 = (BcNum *)0x10;\n  }\n  if (param_1 == param_3) {\n                    /* WARNING: Subroutine does not return */\n    xmalloc((size_t)size_00);\n  }\n  size = size_00;\n  if ((BcNum *)param_3->cap < size_00) goto LAB_000288f0;\n  while( true ) {\n    size = param_2;\n    zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);\n    if (iVar6 == *(int *)puVar1) break;\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000288f0:\n    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);\n    param_3->num = pBVar2;\n    param_3->cap = (size_t)size_00;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "BcDig *pBVar2;" type_identifier (pointer_declarator "*pBVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "BcNum *size;" type_identifier (pointer_declarator "*size" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint ts;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "BcNum *size_00;" type_identifier (pointer_declarator "*size_00" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "sVar4 = param_2->rdx;" (assignment_expression "sVar4 = param_2->rdx" identifier = (field_expression "param_2->rdx" identifier -> field_identifier)) ;) (expression_statement "uVar3 = param_1->rdx;" (assignment_expression "uVar3 = param_1->rdx" identifier = (field_expression "param_1->rdx" identifier -> field_identifier)) ;) (expression_statement "ts = sVar4 + param_5;" (assignment_expression "ts = sVar4 + param_5" identifier = (binary_expression "sVar4 + param_5" identifier + identifier)) ;) (if_statement "if (sVar4 + param_5 < uVar3) {\n    ts = uVar3;\n  }" if (parenthesized_expression "(sVar4 + param_5 < uVar3)" ( (binary_expression "sVar4 + param_5 < uVar3" (binary_expression "sVar4 + param_5" identifier + identifier) < identifier) )) (compound_statement "{\n    ts = uVar3;\n  }" { (expression_statement "ts = uVar3;" (assignment_expression "ts = uVar3" identifier = identifier) ;) })) (expression_statement "uVar5 = uVar3 + sVar4;" (assignment_expression "uVar5 = uVar3 + sVar4" identifier = (binary_expression "uVar3 + sVar4" identifier + identifier)) ;) (if_statement "if (uVar3 + sVar4 < ts) {\n    uVar5 = ts;\n  }" if (parenthesized_expression "(uVar3 + sVar4 < ts)" ( (binary_expression "uVar3 + sVar4 < ts" (binary_expression "uVar3 + sVar4" identifier + identifier) < identifier) )) (compound_statement "{\n    uVar5 = ts;\n  }" { (expression_statement "uVar5 = ts;" (assignment_expression "uVar5 = ts" identifier = identifier) ;) })) (expression_statement "iVar6 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "iVar6 = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "size_00 = (BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5);" (assignment_expression "size_00 = (BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5)" identifier = (cast_expression "(BcNum *)((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5)" ( (type_descriptor "BcNum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5)" ( (binary_expression "(((param_2->len + 1 + param_1->len) - sVar4) - uVar3) + uVar5" (parenthesized_expression "(((param_2->len + 1 + param_1->len) - sVar4) - uVar3)" ( (binary_expression "((param_2->len + 1 + param_1->len) - sVar4) - uVar3" (parenthesized_expression "((param_2->len + 1 + param_1->len) - sVar4)" ( (binary_expression "(param_2->len + 1 + param_1->len) - sVar4" (parenthesized_expression "(param_2->len + 1 + param_1->len)" ( (binary_expression "param_2->len + 1 + param_1->len" (binary_expression "param_2->len + 1" (field_expression "param_2->len" identifier -> field_identifier) + number_literal) + (field_expression "param_1->len" identifier -> field_identifier)) )) - identifier) )) - identifier) )) + identifier) )))) ;) (if_statement "if (size_00 < (BcNum *)0x10) {\n    size_00 = (BcNum *)0x10;\n  }" if (parenthesized_expression "(size_00 < (BcNum *)0x10)" ( (binary_expression "size_00 < (BcNum *)0x10" identifier < (cast_expression "(BcNum *)0x10" ( (type_descriptor "BcNum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    size_00 = (BcNum *)0x10;\n  }" { (expression_statement "size_00 = (BcNum *)0x10;" (assignment_expression "size_00 = (BcNum *)0x10" identifier = (cast_expression "(BcNum *)0x10" ( (type_descriptor "BcNum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (param_1 == param_3) {\n                    /* WARNING: Subroutine does not return */\n    xmalloc((size_t)size_00);\n  }" if (parenthesized_expression "(param_1 == param_3)" ( (binary_expression "param_1 == param_3" identifier == identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    xmalloc((size_t)size_00);\n  }" { comment (expression_statement "xmalloc((size_t)size_00);" (call_expression "xmalloc((size_t)size_00)" identifier (argument_list "((size_t)size_00)" ( (cast_expression "(size_t)size_00" ( (type_descriptor "size_t" primitive_type) ) identifier) ))) ;) })) (expression_statement "size = size_00;" (assignment_expression "size = size_00" identifier = identifier) ;) (if_statement "if ((BcNum *)param_3->cap < size_00) goto LAB_000288f0;" if (parenthesized_expression "((BcNum *)param_3->cap < size_00)" ( (binary_expression "(BcNum *)param_3->cap < size_00" (cast_expression "(BcNum *)param_3->cap" ( (type_descriptor "BcNum *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "param_3->cap" identifier -> field_identifier)) < identifier) )) (goto_statement "goto LAB_000288f0;" goto statement_identifier ;)) (while_statement "while( true ) {\n    size = param_2;\n    zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);\n    if (iVar6 == *(int *)puVar1) break;\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000288f0:\n    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);\n    param_3->num = pBVar2;\n    param_3->cap = (size_t)size_00;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    size = param_2;\n    zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);\n    if (iVar6 == *(int *)puVar1) break;\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000288f0:\n    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);\n    param_3->num = pBVar2;\n    param_3->cap = (size_t)size_00;\n  }" { (expression_statement "size = param_2;" (assignment_expression "size = param_2" identifier = identifier) ;) (expression_statement "zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts);" (call_expression "zbc_num_r(param_1,param_2,param_3,param_4,param_5,ts)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,ts)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (iVar6 == *(int *)puVar1) break;" if (parenthesized_expression "(iVar6 == *(int *)puVar1)" ( (binary_expression "iVar6 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000288f0:\n    pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);" statement_identifier : (expression_statement "pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size);" (assignment_expression "pBVar2 = (BcDig *)xrealloc(param_3->num,(size_t)size)" identifier = (cast_expression "(BcDig *)xrealloc(param_3->num,(size_t)size)" ( (type_descriptor "BcDig *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xrealloc(param_3->num,(size_t)size)" identifier (argument_list "(param_3->num,(size_t)size)" ( (field_expression "param_3->num" identifier -> field_identifier) , (cast_expression "(size_t)size" ( (type_descriptor "size_t" primitive_type) ) identifier) ))))) ;)) (expression_statement "param_3->num = pBVar2;" (assignment_expression "param_3->num = pBVar2" (field_expression "param_3->num" identifier -> field_identifier) = identifier) ;) (expression_statement "param_3->cap = (size_t)size_00;" (assignment_expression "param_3->cap = (size_t)size_00" (field_expression "param_3->cap" identifier -> field_identifier) = (cast_expression "(size_t)size_00" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "undefined4\nFUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}\n\n" (function_definition "undefined4\nFUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)" identifier (parameter_list "(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)(param_2 + 4);" (assignment_expression "iVar4 = *(int *)(param_2 + 4)" identifier = (pointer_expression "*(int *)(param_2 + 4)" * (cast_expression "(int *)(param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = param_1[1];" (assignment_expression "uVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = iVar4 + param_5;" (assignment_expression "uVar5 = iVar4 + param_5" identifier = (binary_expression "iVar4 + param_5" identifier + identifier)) ;) (if_statement "if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }" if (parenthesized_expression "((uint)(iVar4 + param_5) < uVar3)" ( (binary_expression "(uint)(iVar4 + param_5) < uVar3" (call_expression "(uint)(iVar4 + param_5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 + param_5)" ( (binary_expression "iVar4 + param_5" identifier + identifier) ))) < identifier) )) (compound_statement "{\n    uVar5 = uVar3;\n  }" { (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" identifier = identifier) ;) })) (expression_statement "uVar6 = uVar3 + iVar4;" (assignment_expression "uVar6 = uVar3 + iVar4" identifier = (binary_expression "uVar3 + iVar4" identifier + identifier)) ;) (if_statement "if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }" if (parenthesized_expression "(uVar3 + iVar4 < uVar5)" ( (binary_expression "uVar3 + iVar4 < uVar5" (binary_expression "uVar3 + iVar4" identifier + identifier) < identifier) )) (compound_statement "{\n    uVar6 = uVar5;\n  }" { (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" identifier = identifier) ;) })) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;" (assignment_expression "uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6" identifier = (binary_expression "(((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6" (parenthesized_expression "(((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3)" ( (binary_expression "((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3" (parenthesized_expression "((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4)" ( (binary_expression "(*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4" (parenthesized_expression "(*(int *)(param_2 + 8) + 1 + param_1[2])" ( (binary_expression "*(int *)(param_2 + 8) + 1 + param_1[2]" (binary_expression "*(int *)(param_2 + 8) + 1" (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) + number_literal) + (subscript_expression "param_1[2]" identifier [ number_literal ])) )) - identifier) )) - identifier) )) + identifier)) ;) (if_statement "if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }" if (parenthesized_expression "(uVar6 < 0x10)" ( (binary_expression "uVar6 < 0x10" identifier < number_literal) )) (compound_statement "{\n    uVar6 = 0x10;\n  }" { (expression_statement "uVar6 = 0x10;" (assignment_expression "uVar6 = 0x10" identifier = number_literal) ;) })) (if_statement "if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" if (parenthesized_expression "(param_1 == param_3)" ( (binary_expression "param_1 == param_3" identifier == identifier) )) (compound_statement "{\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }" { (expression_statement "local_38 = *param_1;" (assignment_expression "local_38 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_2c = param_1[3];" (assignment_expression "local_2c = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_1[4];" (assignment_expression "local_28 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "local_34 = uVar3;" (assignment_expression "local_34 = uVar3" identifier = identifier) ;) (expression_statement "local_30 = param_1[2];" (assignment_expression "local_30 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_0001a1bc(uVar6);" (assignment_expression "uVar2 = FUN_0001a1bc(uVar6)" identifier = (call_expression "FUN_0001a1bc(uVar6)" identifier (argument_list "(uVar6)" ( identifier )))) ;) (expression_statement "param_1[3] = uVar6;" (assignment_expression "param_1[3] = uVar6" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 4) = 0" (pointer_expression "*(undefined1 *)(param_1 + 4)" * (cast_expression "(undefined1 *)(param_1 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);" (assignment_expression "uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5)" identifier = (call_expression "FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5)" identifier (argument_list "(&local_38,param_2,param_1,param_4,param_5,uVar5)" ( (pointer_expression "&local_38" & identifier) , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(local_38);" (call_expression "(*(code *)PTR_free_0012b168)(local_38)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_38)" ( identifier ))) ;) }) (else_clause "else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" else (compound_statement "{\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" { (if_statement "if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }" if (parenthesized_expression "((uint)param_3[3] < uVar6)" ( (binary_expression "(uint)param_3[3] < uVar6" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }" { (expression_statement "uVar2 = FUN_0001a210(*param_3,uVar6);" (assignment_expression "uVar2 = FUN_0001a210(*param_3,uVar6)" identifier = (call_expression "FUN_0001a210(*param_3,uVar6)" identifier (argument_list "(*param_3,uVar6)" ( (pointer_expression "*param_3" * identifier) , identifier )))) ;) (expression_statement "*param_3 = uVar2;" (assignment_expression "*param_3 = uVar2" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "param_3[3] = uVar6;" (assignment_expression "param_3[3] = uVar6" (subscript_expression "param_3[3]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);" (assignment_expression "uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5)" identifier = (call_expression "FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5)" identifier (argument_list "(param_1,param_2,param_3,param_4,param_5,uVar5)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) }))) (if_statement "if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_24 == *(int *)puVar1)" ( (binary_expression "local_24 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();" (assignment_expression "uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (subscript_expression IDENT [ LIT ])) )) - IDENT) )) - IDENT) )) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (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 ( )))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4\nFUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}" (type_identifier "undefined4") (function_declarator "FUN_00028754(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)" (identifier "FUN_00028754") (parameter_list "(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  undefined4 local_38;\n  uint local_34;\n  int local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  iVar4 = *(int *)(param_2 + 4);\n  uVar3 = param_1[1];\n  uVar5 = iVar4 + param_5;\n  if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }\n  uVar6 = uVar3 + iVar4;\n  if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }\n  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;\n  if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }\n  if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }\n  if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }\n  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();\n  return uVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0012b14c")) (; ";")) (expression_statement "iVar4 = *(int *)(param_2 + 4);" (assignment_expression "iVar4 = *(int *)(param_2 + 4)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_2 + 4)" (* "*") (cast_expression "(int *)(param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar3 = param_1[1];" (assignment_expression "uVar3 = param_1[1]" (identifier "uVar3") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = iVar4 + param_5;" (assignment_expression "uVar5 = iVar4 + param_5" (identifier "uVar5") (= "=") (binary_expression "iVar4 + param_5" (identifier "iVar4") (+ "+") (identifier "param_5"))) (; ";")) (if_statement "if ((uint)(iVar4 + param_5) < uVar3) {\n    uVar5 = uVar3;\n  }" (if "if") (parenthesized_expression "((uint)(iVar4 + param_5) < uVar3)" (( "(") (binary_expression "(uint)(iVar4 + param_5) < uVar3" (call_expression "(uint)(iVar4 + param_5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar4 + param_5)" (( "(") (binary_expression "iVar4 + param_5" (identifier "iVar4") (+ "+") (identifier "param_5")) () ")"))) (< "<") (identifier "uVar3")) () ")")) (compound_statement "{\n    uVar5 = uVar3;\n  }" ({ "{") (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" (identifier "uVar5") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (expression_statement "uVar6 = uVar3 + iVar4;" (assignment_expression "uVar6 = uVar3 + iVar4" (identifier "uVar6") (= "=") (binary_expression "uVar3 + iVar4" (identifier "uVar3") (+ "+") (identifier "iVar4"))) (; ";")) (if_statement "if (uVar3 + iVar4 < uVar5) {\n    uVar6 = uVar5;\n  }" (if "if") (parenthesized_expression "(uVar3 + iVar4 < uVar5)" (( "(") (binary_expression "uVar3 + iVar4 < uVar5" (binary_expression "uVar3 + iVar4" (identifier "uVar3") (+ "+") (identifier "iVar4")) (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n    uVar6 = uVar5;\n  }" ({ "{") (expression_statement "uVar6 = uVar5;" (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";")) (} "}"))) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_0012b14c" (identifier "local_24") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0012b14c")))) (; ";")) (expression_statement "uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;" (assignment_expression "uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6" (identifier "uVar6") (= "=") (binary_expression "(((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6" (parenthesized_expression "(((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3)" (( "(") (binary_expression "((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3" (parenthesized_expression "((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4)" (( "(") (binary_expression "(*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4" (parenthesized_expression "(*(int *)(param_2 + 8) + 1 + param_1[2])" (( "(") (binary_expression "*(int *)(param_2 + 8) + 1 + param_1[2]" (binary_expression "*(int *)(param_2 + 8) + 1" (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) () ")")) (- "-") (identifier "iVar4")) () ")")) (- "-") (identifier "uVar3")) () ")")) (+ "+") (identifier "uVar6"))) (; ";")) (if_statement "if (uVar6 < 0x10) {\n    uVar6 = 0x10;\n  }" (if "if") (parenthesized_expression "(uVar6 < 0x10)" (( "(") (binary_expression "uVar6 < 0x10" (identifier "uVar6") (< "<") (number_literal "0x10")) () ")")) (compound_statement "{\n    uVar6 = 0x10;\n  }" ({ "{") (expression_statement "uVar6 = 0x10;" (assignment_expression "uVar6 = 0x10" (identifier "uVar6") (= "=") (number_literal "0x10")) (; ";")) (} "}"))) (if_statement "if (param_1 == param_3) {\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }\n  else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" (if "if") (parenthesized_expression "(param_1 == param_3)" (( "(") (binary_expression "param_1 == param_3" (identifier "param_1") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n    local_38 = *param_1;\n    local_2c = param_1[3];\n    local_28 = param_1[4];\n    local_34 = uVar3;\n    local_30 = param_1[2];\n    uVar2 = FUN_0001a1bc(uVar6);\n    param_1[3] = uVar6;\n    *param_1 = uVar2;\n    param_1[1] = 0;\n    param_1[2] = 0;\n    *(undefined1 *)(param_1 + 4) = 0;\n    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);\n    (*(code *)PTR_free_0012b168)(local_38);\n  }" ({ "{") (expression_statement "local_38 = *param_1;" (assignment_expression "local_38 = *param_1" (identifier "local_38") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_2c = param_1[3];" (assignment_expression "local_2c = param_1[3]" (identifier "local_2c") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_28 = param_1[4];" (assignment_expression "local_28 = param_1[4]" (identifier "local_28") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_34 = uVar3;" (assignment_expression "local_34 = uVar3" (identifier "local_34") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_30 = param_1[2];" (assignment_expression "local_30 = param_1[2]" (identifier "local_30") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar2 = FUN_0001a1bc(uVar6);" (assignment_expression "uVar2 = FUN_0001a1bc(uVar6)" (identifier "uVar2") (= "=") (call_expression "FUN_0001a1bc(uVar6)" (identifier "FUN_0001a1bc") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "param_1[3] = uVar6;" (assignment_expression "param_1[3] = uVar6" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "*param_1 = uVar2;" (assignment_expression "*param_1 = uVar2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[2] = 0;" (assignment_expression "param_1[2] = 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 4) = 0" (pointer_expression "*(undefined1 *)(param_1 + 4)" (* "*") (cast_expression "(undefined1 *)(param_1 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);" (assignment_expression "uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5)" (identifier "uVar2") (= "=") (call_expression "FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5)" (identifier "FUN_00028304") (argument_list "(&local_38,param_2,param_1,param_4,param_5,uVar5)" (( "(") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (identifier "param_2") (, ",") (identifier "param_1") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_free_0012b168)(local_38);" (call_expression "(*(code *)PTR_free_0012b168)(local_38)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" (( "(") (pointer_expression "*(code *)PTR_free_0012b168" (* "*") (cast_expression "(code *)PTR_free_0012b168" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0012b168"))) () ")")) (argument_list "(local_38)" (( "(") (identifier "local_38") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" (else "else") (compound_statement "{\n    if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }\n    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);\n  }" ({ "{") (if_statement "if ((uint)param_3[3] < uVar6) {\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }" (if "if") (parenthesized_expression "((uint)param_3[3] < uVar6)" (( "(") (binary_expression "(uint)param_3[3] < uVar6" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n      uVar2 = FUN_0001a210(*param_3,uVar6);\n      *param_3 = uVar2;\n      param_3[3] = uVar6;\n    }" ({ "{") (expression_statement "uVar2 = FUN_0001a210(*param_3,uVar6);" (assignment_expression "uVar2 = FUN_0001a210(*param_3,uVar6)" (identifier "uVar2") (= "=") (call_expression "FUN_0001a210(*param_3,uVar6)" (identifier "FUN_0001a210") (argument_list "(*param_3,uVar6)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) (, ",") (identifier "uVar6") () ")")))) (; ";")) (expression_statement "*param_3 = uVar2;" (assignment_expression "*param_3 = uVar2" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "param_3[3] = uVar6;" (assignment_expression "param_3[3] = uVar6" (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);" (assignment_expression "uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5)" (identifier "uVar2") (= "=") (call_expression "FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5)" (identifier "FUN_00028304") (argument_list "(param_1,param_2,param_3,param_4,param_5,uVar5)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "uVar5") () ")")))) (; ";")) (} "}")))) (if_statement "if (local_24 == *(int *)puVar1) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(local_24 == *(int *)puVar1)" (( "(") (binary_expression "local_24 == *(int *)puVar1" (identifier "local_24") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();" (assignment_expression "uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)()" (identifier "uVar2") (= "=") (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0012b0c8"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

void function_1(type_1 *var_7,type_1 *param_2,type_1 *var_8,type_1 *param_4,size_t var_2)

{
  type_2 *puVar1;
  type_3 *pBVar2;
  type_4 var_3;
  size_t var_1;
  type_1 *size;
  type_4 var_5;
  type_4 var_4;
  int var_11;
  type_1 *var_6;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  var_1 = param_2->rdx;
  var_3 = var_7->rdx;
  var_4 = var_1 + var_2;
  if (var_1 + var_2 < var_3) {
    var_4 = var_3;
  }
  var_5 = var_3 + var_1;
  if (var_3 + var_1 < var_4) {
    var_5 = var_4;
  }
  var_11 = *(int *)PTR___stack_chk_guard_0012b14c;
  var_6 = (type_1 *)((((param_2->len + 1 + var_7->len) - var_1) - var_3) + var_5);
  if (var_6 < (type_1 *)0x10) {
    var_6 = (type_1 *)0x10;
  }
  if (var_7 == var_8) {
                    /* WARNING: Subroutine does not return */
    var_9((size_t)var_6);
  }
  size = var_6;
  if ((type_1 *)var_8->cap < var_6) goto LAB_000288f0;
  while( true ) {
    size = param_2;
    var_10(var_7,param_2,var_8,param_4,var_2,var_4);
    if (var_11 == *(int *)puVar1) break;
    (*(type_5 *)PTR___stack_chk_fail_0012b0c8)();
LAB_000288f0:
    pBVar2 = (type_3 *)var_12(var_8->num,(size_t)size);
    var_8->num = pBVar2;
    var_8->cap = (size_t)var_6;
  }
  return;
}


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

undefined4
MASKED(undefined4 *param_1,int param_2,undefined4 *param_3,undefined4 param_4,int param_5)

{
  undefined *puVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  undefined4 local_38;
  uint local_34;
  int local_30;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  iVar4 = *(int *)(param_2 + 4);
  uVar3 = param_1[1];
  uVar5 = iVar4 + param_5;
  if ((uint)(iVar4 + param_5) < uVar3) {
    uVar5 = uVar3;
  }
  uVar6 = uVar3 + iVar4;
  if (uVar3 + iVar4 < uVar5) {
    uVar6 = uVar5;
  }
  local_24 = *(int *)PTR___stack_chk_guard_0012b14c;
  uVar6 = (((*(int *)(param_2 + 8) + 1 + param_1[2]) - iVar4) - uVar3) + uVar6;
  if (uVar6 < 0x10) {
    uVar6 = 0x10;
  }
  if (param_1 == param_3) {
    local_38 = *param_1;
    local_2c = param_1[3];
    local_28 = param_1[4];
    local_34 = uVar3;
    local_30 = param_1[2];
    uVar2 = FUN_0001a1bc(uVar6);
    param_1[3] = uVar6;
    *param_1 = uVar2;
    param_1[1] = 0;
    param_1[2] = 0;
    *(undefined1 *)(param_1 + 4) = 0;
    uVar2 = FUN_00028304(&local_38,param_2,param_1,param_4,param_5,uVar5);
    (*(code *)PTR_free_0012b168)(local_38);
  }
  else {
    if ((uint)param_3[3] < uVar6) {
      uVar2 = FUN_0001a210(*param_3,uVar6);
      *param_3 = uVar2;
      param_3[3] = uVar6;
    }
    uVar2 = FUN_00028304(param_1,param_2,param_3,param_4,param_5,uVar5);
  }
  if (local_24 == *(int *)puVar1) {
    return uVar2;
  }
  uVar2 = (*(code *)PTR___stack_chk_fail_0012b0c8)();
  return uVar2;
}

