
void predlist_merge_sort(predlist *list,predicate **last)

{
  undefined *puVar1;
  predicate *ppVar2;
  EvaluationCost EVar3;
  predicate *ppVar4;
  predicate *ppVar5;
  predicate *ppVar6;
  EvaluationCost EVar7;
  predicate *ppVar8;
  float fVar9;
  float fVar10;
  
  puVar1 = PTR_stderr_00079c40;
  if (list->head != (predicate *)0x0) {
    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {
      ppVar5 = list->head;
    }
    else {
      (*(code *)PTR___fprintf_chk_00079a44)
                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,
                 PTR_s_nt0_000795b8 + 0x8f8);
      print_tree(*(FILE **)puVar1,list->head,2);
      ppVar5 = list->head;
    }
    calculate_derived_rates(ppVar5);
    ppVar5 = (predicate *)0x0;
    ppVar6 = (predicate *)0x0;
LAB_0001bc08:
    ppVar8 = ppVar6;
    puVar1 = PTR_stderr_00079c40;
    ppVar6 = list->head;
    if (ppVar6 != (predicate *)0x0) {
      list->head = ppVar6->pred_left;
      ppVar6->pred_left = (predicate *)0x0;
      if (ppVar5 != (predicate *)0x0) {
        EVar7 = ppVar6->pred_right->p_cost;
        ppVar2 = ppVar5;
        do {
          EVar3 = ppVar2->pred_right->p_cost;
          if (EVar3 != EVar7) {
            if (EVar3 < EVar7) goto LAB_0001bba0;
LAB_0001bbf8:
            ppVar4 = ppVar2->pred_left;
LAB_0001bbfc:
            ppVar6->pred_left = ppVar4;
            if (ppVar4 == (predicate *)0x0) {
              ppVar8 = ppVar6;
            }
            ppVar2->pred_left = ppVar6;
            ppVar6 = ppVar8;
            goto LAB_0001bc08;
          }
          fVar10 = ppVar2->pred_right->est_success_rate;
          fVar9 = ppVar6->pred_right->est_success_rate;
          if (fVar10 == fVar9) goto LAB_0001bbf8;
          if (ppVar2->p_prec != OR_PREC) {
            if (fVar10 < fVar9) goto LAB_0001bba0;
            ppVar4 = ppVar2->pred_left;
            goto LAB_0001bbfc;
          }
          if (fVar10 < fVar9) goto LAB_0001bbf8;
LAB_0001bba0:
          ppVar2 = ppVar2->pred_left;
        } while (ppVar2 != (predicate *)0x0);
      }
      ppVar6->pred_left = ppVar5;
      ppVar5 = ppVar6;
      if (ppVar8 != (predicate *)0x0) {
        ppVar6 = ppVar8;
      }
      goto LAB_0001bc08;
    }
    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {
      (*(code *)PTR___fprintf_chk_00079a44)
                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,
                 PTR_s_nt0_000795b8 + 0x91c);
      print_tree(*(FILE **)puVar1,ppVar5,2);
    }
    calculate_derived_rates(ppVar5);
    ppVar8->pred_left = *last;
    *last = ppVar5;
    list->tail = (predicate *)0x0;
    list->head = (predicate *)0x0;
  }
  return;
}



void FUN_0001bad4(int *param_1,int *param_2)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  
  puVar1 = PTR_stderr_00079c40;
  if (*param_1 != 0) {
    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {
      iVar5 = *param_1;
    }
    else {
      (*(code *)PTR___fprintf_chk_00079a44)
                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,
                 PTR_s_nt0_000795b8 + 0x8f8);
      print_tree(*(undefined4 *)puVar1,*param_1,2);
      iVar5 = *param_1;
    }
    calculate_derived_rates(iVar5);
    iVar5 = 0;
    iVar6 = 0;
LAB_0001bc08:
    iVar8 = iVar6;
    puVar1 = PTR_stderr_00079c40;
    iVar6 = *param_1;
    if (iVar6 != 0) {
      *param_1 = *(int *)(iVar6 + 0x9c);
      *(undefined4 *)(iVar6 + 0x9c) = 0;
      if (iVar5 != 0) {
        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);
        iVar2 = iVar5;
        do {
          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);
          if (uVar3 != uVar7) {
            if (uVar3 < uVar7) goto LAB_0001bba0;
LAB_0001bbf8:
            iVar4 = *(int *)(iVar2 + 0x9c);
LAB_0001bbfc:
            *(int *)(iVar6 + 0x9c) = iVar4;
            if (iVar4 == 0) {
              iVar8 = iVar6;
            }
            *(int *)(iVar2 + 0x9c) = iVar6;
            iVar6 = iVar8;
            goto LAB_0001bc08;
          }
          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);
          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);
          if (fVar10 == fVar9) goto LAB_0001bbf8;
          if (*(int *)(iVar2 + 0xc) != 2) {
            if (fVar10 < fVar9) goto LAB_0001bba0;
            iVar4 = *(int *)(iVar2 + 0x9c);
            goto LAB_0001bbfc;
          }
          if (fVar10 < fVar9) goto LAB_0001bbf8;
LAB_0001bba0:
          iVar2 = *(int *)(iVar2 + 0x9c);
        } while (iVar2 != 0);
      }
      *(int *)(iVar6 + 0x9c) = iVar5;
      iVar5 = iVar6;
      if (iVar8 != 0) {
        iVar6 = iVar8;
      }
      goto LAB_0001bc08;
    }
    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {
      (*(code *)PTR___fprintf_chk_00079a44)
                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,
                 PTR_s_nt0_000795b8 + 0x91c);
      print_tree(*(undefined4 *)puVar1,iVar5,2);
    }
    calculate_derived_rates(iVar5);
    *(int *)(iVar8 + 0x9c) = *param_2;
    *param_2 = iVar5;
    param_1[1] = 0;
    *param_1 = 0;
  }
  return;
}


lui gp,0x6
addiu gp,gp,0x5aac
addu gp,gp,t9
addiu sp,sp,-0x30
sw ra,0x2c(sp)
sw s4,0x28(sp)
sw s3,0x24(sp)
sw s2,0x20(sp)
sw s1,0x1c(sp)
sw s0,0x18(sp)
sw gp,0x10(sp)
lw v0,0x0(a0)
beq v0,zero,0x0001bc6c
_or s3,a1,zero
lw v0,-0x7fc4(gp)
lw v0,0x2c(v0)
andi v0,v0,0x8
bne v0,zero,0x0001bb44
_or s0,a0,zero
lw a0,0x0(s0)
lw t9,-0x7e98(gp)
bal 0x0001af94
_nop
lw gp,0x10(sp)
or s2,zero,zero
or s1,zero,zero
b 0x0001bc08
_li t0,0x2
lw s1,-0x7940(gp)
lw a3,-0x7fc8(gp)
addiu a3,a3,0x8f8
lw a2,-0x7fc8(gp)
addiu a2,a2,0x914
li a1,0x1
lw a0,0x0(s1)
lw t9,-0x7b3c(gp)
jalr t9
_nop
lw gp,0x10(sp)
li a2,0x2
lw a1,0x0(s0)
lw a0,0x0(s1)
lw t9,-0x7e80(gp)
bal 0x0001b5f8
_nop
lw gp,0x10(sp)
b 0x0001bb24
_lw a0,0x0(s0)
c.lt.S f2,f0
bc1t 0x2,0x0001bbf8
_nop
lw v0,0x9c(v0)
beq v0,zero,0x0001bcd8
_nop
lw a2,0xa0(v0)
lw v1,0x18(a2)
bne v1,a3,0x0001bbec
_nop
lwc1 f2,0x1c(a2)
lwc1 f0,0x1c(a1)
c.eq.S f2,f0
bc1t 0x0001bbf8
_lw v1,0xc(v0)
beq v1,t0,0x0001bb94
_nop
c.lt.S f2,f0
bc1t 0x1,0x0001bba0
_nop
b 0x0001bbfc
_lw v1,0x9c(v0)
sltu v1,v1,a3
bne v1,zero,0x0001bba0
_nop
lw v1,0x9c(v0)
sw v1,0x9c(a0)
movz s2,a0,v1
sw a0,0x9c(v0)
lw a0,0x0(s0)
beq a0,zero,0x0001bc34
_lw v0,-0x7fc4(gp)
lw v0,0x9c(a0)
sw v0,0x0(s0)
beq s1,zero,0x0001bcd8
_sw zero,0x9c(a0)
lw a1,0xa0(a0)
lw a3,0x18(a1)
b 0x0001bbac
_or v0,s1,zero
lw v0,0x2c(v0)
andi v0,v0,0x8
bne v0,zero,0x0001bc8c
_lw s4,-0x7940(gp)
or a0,s1,zero
lw t9,-0x7e98(gp)
bal 0x0001af94
_nop
lw gp,0x10(sp)
lw v0,0x0(s3)
sw v0,0x9c(s2)
sw s1,0x0(s3)
sw zero,0x4(s0)
sw zero,0x0(s0)
lw ra,0x2c(sp)
lw s4,0x28(sp)
lw s3,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x30
lw a3,-0x7fc8(gp)
addiu a3,a3,0x91c
lw a2,-0x7fc8(gp)
addiu a2,a2,0x914
li a1,0x1
lw a0,0x0(s4)
lw t9,-0x7b3c(gp)
jalr t9
_nop
lw gp,0x10(sp)
li a2,0x2
or a1,s1,zero
lw a0,0x0(s4)
lw t9,-0x7e80(gp)
bal 0x0001b5f8
_nop
lw gp,0x10(sp)
b 0x0001bc48
_or a0,s1,zero
beq s2,zero,0x0001bce8
_sw s1,0x9c(a0)
b 0x0001bc08
_or s1,a0,zero
or s2,a0,zero
b 0x0001bc08
_or s1,a0,zero
(translation_unit "void FUN_0001bad4(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0001bad4(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0001bad4(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" identifier = identifier) ;) (if_statement "if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }" { (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" if (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0)" ( (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" ( (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" * (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_options_000795bc + 0x2c)" ( (binary_expression "PTR_options_000795bc + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar5 = *param_1;\n    }" { (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }) (else_clause "else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" else (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" { (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" * (cast_expression "(code *)PTR___fprintf_chk_00079a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" * (cast_expression "(undefined4 *)PTR_stderr_00079c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (binary_expression "PTR_s_nt0_000795b8 + 0x914" identifier + number_literal) , (binary_expression "PTR_s_nt0_000795b8 + 0x8f8" identifier + number_literal) ))) ;) (expression_statement "print_tree(*(undefined4 *)puVar1,*param_1,2);" (call_expression "print_tree(*(undefined4 *)puVar1,*param_1,2)" identifier (argument_list "(*(undefined4 *)puVar1,*param_1,2)" ( (pointer_expression "*(undefined4 *)puVar1" * (cast_expression "(undefined4 *)puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*param_1" * identifier) , number_literal ))) ;) (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }))) (expression_statement "calculate_derived_rates(iVar5);" (call_expression "calculate_derived_rates(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001bc08:\n    iVar8 = iVar6;" statement_identifier : (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" identifier = identifier) ;)) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" identifier = identifier) ;) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }" { (expression_statement "*param_1 = *(int *)(iVar6 + 0x9c);" (assignment_expression "*param_1 = *(int *)(iVar6 + 0x9c)" (pointer_expression "*param_1" * identifier) = (pointer_expression "*(int *)(iVar6 + 0x9c)" * (cast_expression "(int *)(iVar6 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar6 + 0x9c) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + 0x9c) = 0" (pointer_expression "*(undefined4 *)(iVar6 + 0x9c)" * (cast_expression "(undefined4 *)(iVar6 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }" { (expression_statement "uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);" (assignment_expression "uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" * (cast_expression "(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xa0) + 0x18)" ( (binary_expression "*(int *)(iVar6 + 0xa0) + 0x18" (pointer_expression "*(int *)(iVar6 + 0xa0)" * (cast_expression "(int *)(iVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xa0)" ( (binary_expression "iVar6 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar5;" (assignment_expression "iVar2 = iVar5" identifier = identifier) ;) (do_statement "do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);" do (compound_statement "{\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        }" { (expression_statement "uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);" (assignment_expression "uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" * (cast_expression "(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0xa0) + 0x18)" ( (binary_expression "*(int *)(iVar2 + 0xa0) + 0x18" (pointer_expression "*(int *)(iVar2 + 0xa0)" * (cast_expression "(int *)(iVar2 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa0)" ( (binary_expression "iVar2 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }" if (parenthesized_expression "(uVar3 != uVar7)" ( (binary_expression "uVar3 != uVar7" identifier != identifier) )) (compound_statement "{\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }" { (if_statement "if (uVar3 < uVar7) goto LAB_0001bba0;" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (goto_statement "goto LAB_0001bba0;" goto statement_identifier ;)) (labeled_statement "LAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);" statement_identifier : (expression_statement "iVar4 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x9c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;" statement_identifier : (expression_statement "*(int *)(iVar6 + 0x9c) = iVar4;" (assignment_expression "*(int *)(iVar6 + 0x9c) = iVar4" (pointer_expression "*(int *)(iVar6 + 0x9c)" * (cast_expression "(int *)(iVar6 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) )))) = identifier) ;)) (if_statement "if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar8 = iVar6;\n            }" { (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" identifier = identifier) ;) })) (expression_statement "*(int *)(iVar2 + 0x9c) = iVar6;" (assignment_expression "*(int *)(iVar2 + 0x9c) = iVar6" (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) (goto_statement "goto LAB_0001bc08;" goto statement_identifier ;) })) (expression_statement "fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);" (assignment_expression "fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" identifier = (pointer_expression "*(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" * (cast_expression "(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0xa0) + 0x1c)" ( (binary_expression "*(int *)(iVar2 + 0xa0) + 0x1c" (pointer_expression "*(int *)(iVar2 + 0xa0)" * (cast_expression "(int *)(iVar2 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa0)" ( (binary_expression "iVar2 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);" (assignment_expression "fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" identifier = (pointer_expression "*(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" * (cast_expression "(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xa0) + 0x1c)" ( (binary_expression "*(int *)(iVar6 + 0xa0) + 0x1c" (pointer_expression "*(int *)(iVar6 + 0xa0)" * (cast_expression "(int *)(iVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xa0)" ( (binary_expression "iVar6 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (fVar10 == fVar9) goto LAB_0001bbf8;" if (parenthesized_expression "(fVar10 == fVar9)" ( (binary_expression "fVar10 == fVar9" identifier == identifier) )) (goto_statement "goto LAB_0001bbf8;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }" if (parenthesized_expression "(*(int *)(iVar2 + 0xc) != 2)" ( (binary_expression "*(int *)(iVar2 + 0xc) != 2" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }" { (if_statement "if (fVar10 < fVar9) goto LAB_0001bba0;" if (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001bba0;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x9c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0001bbfc;" goto statement_identifier ;) })) (if_statement "if (fVar10 < fVar9) goto LAB_0001bbf8;" if (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001bbf8;" goto statement_identifier ;)) (labeled_statement "LAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);" statement_identifier : (expression_statement "iVar2 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x9c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "*(int *)(iVar6 + 0x9c) = iVar5;" (assignment_expression "*(int *)(iVar6 + 0x9c) = iVar5" (pointer_expression "*(int *)(iVar6 + 0x9c)" * (cast_expression "(int *)(iVar6 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar6 = iVar8;\n      }" { (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_0001bc08;" goto statement_identifier ;) })) (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }" if (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0)" ( (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" ( (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" * (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_options_000795bc + 0x2c)" ( (binary_expression "PTR_options_000795bc + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }" { (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" * (cast_expression "(code *)PTR___fprintf_chk_00079a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" * (cast_expression "(undefined4 *)PTR_stderr_00079c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (binary_expression "PTR_s_nt0_000795b8 + 0x914" identifier + number_literal) , (binary_expression "PTR_s_nt0_000795b8 + 0x91c" identifier + number_literal) ))) ;) (expression_statement "print_tree(*(undefined4 *)puVar1,iVar5,2);" (call_expression "print_tree(*(undefined4 *)puVar1,iVar5,2)" identifier (argument_list "(*(undefined4 *)puVar1,iVar5,2)" ( (pointer_expression "*(undefined4 *)puVar1" * (cast_expression "(undefined4 *)puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , number_literal ))) ;) })) (expression_statement "calculate_derived_rates(iVar5);" (call_expression "calculate_derived_rates(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "*(int *)(iVar8 + 0x9c) = *param_2;" (assignment_expression "*(int *)(iVar8 + 0x9c) = *param_2" (pointer_expression "*(int *)(iVar8 + 0x9c)" * (cast_expression "(int *)(iVar8 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x9c)" ( (binary_expression "iVar8 + 0x9c" identifier + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" * 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 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void predlist_merge_sort(predlist *list,predicate **last)\n\n{\n  undefined *puVar1;\n  predicate *ppVar2;\n  EvaluationCost EVar3;\n  predicate *ppVar4;\n  predicate *ppVar5;\n  predicate *ppVar6;\n  EvaluationCost EVar7;\n  predicate *ppVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (list->head != (predicate *)0x0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      ppVar5 = list->head;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar5 = (predicate *)0x0;\n    ppVar6 = (predicate *)0x0;\nLAB_0001bc08:\n    ppVar8 = ppVar6;\n    puVar1 = PTR_stderr_00079c40;\n    ppVar6 = list->head;\n    if (ppVar6 != (predicate *)0x0) {\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar8->pred_left = *last;\n    *last = ppVar5;\n    list->tail = (predicate *)0x0;\n    list->head = (predicate *)0x0;\n  }\n  return;\n}\n\n" (function_definition "void predlist_merge_sort(predlist *list,predicate **last)\n\n{\n  undefined *puVar1;\n  predicate *ppVar2;\n  EvaluationCost EVar3;\n  predicate *ppVar4;\n  predicate *ppVar5;\n  predicate *ppVar6;\n  EvaluationCost EVar7;\n  predicate *ppVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (list->head != (predicate *)0x0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      ppVar5 = list->head;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar5 = (predicate *)0x0;\n    ppVar6 = (predicate *)0x0;\nLAB_0001bc08:\n    ppVar8 = ppVar6;\n    puVar1 = PTR_stderr_00079c40;\n    ppVar6 = list->head;\n    if (ppVar6 != (predicate *)0x0) {\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar8->pred_left = *last;\n    *last = ppVar5;\n    list->tail = (predicate *)0x0;\n    list->head = (predicate *)0x0;\n  }\n  return;\n}" primitive_type (function_declarator "predlist_merge_sort(predlist *list,predicate **last)" identifier (parameter_list "(predlist *list,predicate **last)" ( (parameter_declaration "predlist *list" type_identifier (pointer_declarator "*list" * identifier)) , (parameter_declaration "predicate **last" type_identifier (pointer_declarator "**last" * (pointer_declarator "*last" * identifier))) ))) (compound_statement "{\n  undefined *puVar1;\n  predicate *ppVar2;\n  EvaluationCost EVar3;\n  predicate *ppVar4;\n  predicate *ppVar5;\n  predicate *ppVar6;\n  EvaluationCost EVar7;\n  predicate *ppVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (list->head != (predicate *)0x0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      ppVar5 = list->head;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar5 = (predicate *)0x0;\n    ppVar6 = (predicate *)0x0;\nLAB_0001bc08:\n    ppVar8 = ppVar6;\n    puVar1 = PTR_stderr_00079c40;\n    ppVar6 = list->head;\n    if (ppVar6 != (predicate *)0x0) {\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar8->pred_left = *last;\n    *last = ppVar5;\n    list->tail = (predicate *)0x0;\n    list->head = (predicate *)0x0;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "predicate *ppVar2;" type_identifier (pointer_declarator "*ppVar2" * identifier) ;) (declaration "EvaluationCost EVar3;" type_identifier identifier ;) (declaration "predicate *ppVar4;" type_identifier (pointer_declarator "*ppVar4" * identifier) ;) (declaration "predicate *ppVar5;" type_identifier (pointer_declarator "*ppVar5" * identifier) ;) (declaration "predicate *ppVar6;" type_identifier (pointer_declarator "*ppVar6" * identifier) ;) (declaration "EvaluationCost EVar7;" type_identifier identifier ;) (declaration "predicate *ppVar8;" type_identifier (pointer_declarator "*ppVar8" * identifier) ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" identifier = identifier) ;) (if_statement "if (list->head != (predicate *)0x0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      ppVar5 = list->head;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar5 = (predicate *)0x0;\n    ppVar6 = (predicate *)0x0;\nLAB_0001bc08:\n    ppVar8 = ppVar6;\n    puVar1 = PTR_stderr_00079c40;\n    ppVar6 = list->head;\n    if (ppVar6 != (predicate *)0x0) {\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar8->pred_left = *last;\n    *last = ppVar5;\n    list->tail = (predicate *)0x0;\n    list->head = (predicate *)0x0;\n  }" if (parenthesized_expression "(list->head != (predicate *)0x0)" ( (binary_expression "list->head != (predicate *)0x0" (field_expression "list->head" identifier -> field_identifier) != (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      ppVar5 = list->head;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar5 = (predicate *)0x0;\n    ppVar6 = (predicate *)0x0;\nLAB_0001bc08:\n    ppVar8 = ppVar6;\n    puVar1 = PTR_stderr_00079c40;\n    ppVar6 = list->head;\n    if (ppVar6 != (predicate *)0x0) {\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }\n    calculate_derived_rates(ppVar5);\n    ppVar8->pred_left = *last;\n    *last = ppVar5;\n    list->tail = (predicate *)0x0;\n    list->head = (predicate *)0x0;\n  }" { (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      ppVar5 = list->head;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }" if (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0)" ( (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" ( (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" * (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_options_000795bc + 0x2c)" ( (binary_expression "PTR_options_000795bc + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      ppVar5 = list->head;\n    }" { (expression_statement "ppVar5 = list->head;" (assignment_expression "ppVar5 = list->head" identifier = (field_expression "list->head" identifier -> field_identifier)) ;) }) (else_clause "else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }" else (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(FILE **)puVar1,list->head,2);\n      ppVar5 = list->head;\n    }" { (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" * (cast_expression "(code *)PTR___fprintf_chk_00079a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" * (cast_expression "(undefined4 *)PTR_stderr_00079c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (binary_expression "PTR_s_nt0_000795b8 + 0x914" identifier + number_literal) , (binary_expression "PTR_s_nt0_000795b8 + 0x8f8" identifier + number_literal) ))) ;) (expression_statement "print_tree(*(FILE **)puVar1,list->head,2);" (call_expression "print_tree(*(FILE **)puVar1,list->head,2)" identifier (argument_list "(*(FILE **)puVar1,list->head,2)" ( (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (field_expression "list->head" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "ppVar5 = list->head;" (assignment_expression "ppVar5 = list->head" identifier = (field_expression "list->head" identifier -> field_identifier)) ;) }))) (expression_statement "calculate_derived_rates(ppVar5);" (call_expression "calculate_derived_rates(ppVar5)" identifier (argument_list "(ppVar5)" ( identifier ))) ;) (expression_statement "ppVar5 = (predicate *)0x0;" (assignment_expression "ppVar5 = (predicate *)0x0" identifier = (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppVar6 = (predicate *)0x0;" (assignment_expression "ppVar6 = (predicate *)0x0" identifier = (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0001bc08:\n    ppVar8 = ppVar6;" statement_identifier : (expression_statement "ppVar8 = ppVar6;" (assignment_expression "ppVar8 = ppVar6" identifier = identifier) ;)) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" identifier = identifier) ;) (expression_statement "ppVar6 = list->head;" (assignment_expression "ppVar6 = list->head" identifier = (field_expression "list->head" identifier -> field_identifier)) ;) (if_statement "if (ppVar6 != (predicate *)0x0) {\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }" if (parenthesized_expression "(ppVar6 != (predicate *)0x0)" ( (binary_expression "ppVar6 != (predicate *)0x0" identifier != (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      list->head = ppVar6->pred_left;\n      ppVar6->pred_left = (predicate *)0x0;\n      if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }\n      ppVar6->pred_left = ppVar5;\n      ppVar5 = ppVar6;\n      if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }\n      goto LAB_0001bc08;\n    }" { (expression_statement "list->head = ppVar6->pred_left;" (assignment_expression "list->head = ppVar6->pred_left" (field_expression "list->head" identifier -> field_identifier) = (field_expression "ppVar6->pred_left" identifier -> field_identifier)) ;) (expression_statement "ppVar6->pred_left = (predicate *)0x0;" (assignment_expression "ppVar6->pred_left = (predicate *)0x0" (field_expression "ppVar6->pred_left" identifier -> field_identifier) = (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (ppVar5 != (predicate *)0x0) {\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }" if (parenthesized_expression "(ppVar5 != (predicate *)0x0)" ( (binary_expression "ppVar5 != (predicate *)0x0" identifier != (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        EVar7 = ppVar6->pred_right->p_cost;\n        ppVar2 = ppVar5;\n        do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);\n      }" { (expression_statement "EVar7 = ppVar6->pred_right->p_cost;" (assignment_expression "EVar7 = ppVar6->pred_right->p_cost" identifier = (field_expression "ppVar6->pred_right->p_cost" (field_expression "ppVar6->pred_right" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "ppVar2 = ppVar5;" (assignment_expression "ppVar2 = ppVar5" identifier = identifier) ;) (do_statement "do {\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        } while (ppVar2 != (predicate *)0x0);" do (compound_statement "{\n          EVar3 = ppVar2->pred_right->p_cost;\n          if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = ppVar2->pred_right->est_success_rate;\n          fVar9 = ppVar6->pred_right->est_success_rate;\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;\n        }" { (expression_statement "EVar3 = ppVar2->pred_right->p_cost;" (assignment_expression "EVar3 = ppVar2->pred_right->p_cost" identifier = (field_expression "ppVar2->pred_right->p_cost" (field_expression "ppVar2->pred_right" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (EVar3 != EVar7) {\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }" if (parenthesized_expression "(EVar3 != EVar7)" ( (binary_expression "EVar3 != EVar7" identifier != identifier) )) (compound_statement "{\n            if (EVar3 < EVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;\nLAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;\n            if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }\n            ppVar2->pred_left = ppVar6;\n            ppVar6 = ppVar8;\n            goto LAB_0001bc08;\n          }" { (if_statement "if (EVar3 < EVar7) goto LAB_0001bba0;" if (parenthesized_expression "(EVar3 < EVar7)" ( (binary_expression "EVar3 < EVar7" identifier < identifier) )) (goto_statement "goto LAB_0001bba0;" goto statement_identifier ;)) (labeled_statement "LAB_0001bbf8:\n            ppVar4 = ppVar2->pred_left;" statement_identifier : (expression_statement "ppVar4 = ppVar2->pred_left;" (assignment_expression "ppVar4 = ppVar2->pred_left" identifier = (field_expression "ppVar2->pred_left" identifier -> field_identifier)) ;)) (labeled_statement "LAB_0001bbfc:\n            ppVar6->pred_left = ppVar4;" statement_identifier : (expression_statement "ppVar6->pred_left = ppVar4;" (assignment_expression "ppVar6->pred_left = ppVar4" (field_expression "ppVar6->pred_left" identifier -> field_identifier) = identifier) ;)) (if_statement "if (ppVar4 == (predicate *)0x0) {\n              ppVar8 = ppVar6;\n            }" if (parenthesized_expression "(ppVar4 == (predicate *)0x0)" ( (binary_expression "ppVar4 == (predicate *)0x0" identifier == (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              ppVar8 = ppVar6;\n            }" { (expression_statement "ppVar8 = ppVar6;" (assignment_expression "ppVar8 = ppVar6" identifier = identifier) ;) })) (expression_statement "ppVar2->pred_left = ppVar6;" (assignment_expression "ppVar2->pred_left = ppVar6" (field_expression "ppVar2->pred_left" identifier -> field_identifier) = identifier) ;) (expression_statement "ppVar6 = ppVar8;" (assignment_expression "ppVar6 = ppVar8" identifier = identifier) ;) (goto_statement "goto LAB_0001bc08;" goto statement_identifier ;) })) (expression_statement "fVar10 = ppVar2->pred_right->est_success_rate;" (assignment_expression "fVar10 = ppVar2->pred_right->est_success_rate" identifier = (field_expression "ppVar2->pred_right->est_success_rate" (field_expression "ppVar2->pred_right" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "fVar9 = ppVar6->pred_right->est_success_rate;" (assignment_expression "fVar9 = ppVar6->pred_right->est_success_rate" identifier = (field_expression "ppVar6->pred_right->est_success_rate" (field_expression "ppVar6->pred_right" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (fVar10 == fVar9) goto LAB_0001bbf8;" if (parenthesized_expression "(fVar10 == fVar9)" ( (binary_expression "fVar10 == fVar9" identifier == identifier) )) (goto_statement "goto LAB_0001bbf8;" goto statement_identifier ;)) (if_statement "if (ppVar2->p_prec != OR_PREC) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }" if (parenthesized_expression "(ppVar2->p_prec != OR_PREC)" ( (binary_expression "ppVar2->p_prec != OR_PREC" (field_expression "ppVar2->p_prec" identifier -> field_identifier) != identifier) )) (compound_statement "{\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            ppVar4 = ppVar2->pred_left;\n            goto LAB_0001bbfc;\n          }" { (if_statement "if (fVar10 < fVar9) goto LAB_0001bba0;" if (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001bba0;" goto statement_identifier ;)) (expression_statement "ppVar4 = ppVar2->pred_left;" (assignment_expression "ppVar4 = ppVar2->pred_left" identifier = (field_expression "ppVar2->pred_left" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0001bbfc;" goto statement_identifier ;) })) (if_statement "if (fVar10 < fVar9) goto LAB_0001bbf8;" if (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001bbf8;" goto statement_identifier ;)) (labeled_statement "LAB_0001bba0:\n          ppVar2 = ppVar2->pred_left;" statement_identifier : (expression_statement "ppVar2 = ppVar2->pred_left;" (assignment_expression "ppVar2 = ppVar2->pred_left" identifier = (field_expression "ppVar2->pred_left" identifier -> field_identifier)) ;)) }) while (parenthesized_expression "(ppVar2 != (predicate *)0x0)" ( (binary_expression "ppVar2 != (predicate *)0x0" identifier != (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "ppVar6->pred_left = ppVar5;" (assignment_expression "ppVar6->pred_left = ppVar5" (field_expression "ppVar6->pred_left" identifier -> field_identifier) = identifier) ;) (expression_statement "ppVar5 = ppVar6;" (assignment_expression "ppVar5 = ppVar6" identifier = identifier) ;) (if_statement "if (ppVar8 != (predicate *)0x0) {\n        ppVar6 = ppVar8;\n      }" if (parenthesized_expression "(ppVar8 != (predicate *)0x0)" ( (binary_expression "ppVar8 != (predicate *)0x0" identifier != (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        ppVar6 = ppVar8;\n      }" { (expression_statement "ppVar6 = ppVar8;" (assignment_expression "ppVar6 = ppVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_0001bc08;" goto statement_identifier ;) })) (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }" if (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0)" ( (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" ( (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" * (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_options_000795bc + 0x2c)" ( (binary_expression "PTR_options_000795bc + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(FILE **)puVar1,ppVar5,2);\n    }" { (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" * (cast_expression "(code *)PTR___fprintf_chk_00079a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" * (cast_expression "(undefined4 *)PTR_stderr_00079c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (binary_expression "PTR_s_nt0_000795b8 + 0x914" identifier + number_literal) , (binary_expression "PTR_s_nt0_000795b8 + 0x91c" identifier + number_literal) ))) ;) (expression_statement "print_tree(*(FILE **)puVar1,ppVar5,2);" (call_expression "print_tree(*(FILE **)puVar1,ppVar5,2)" identifier (argument_list "(*(FILE **)puVar1,ppVar5,2)" ( (pointer_expression "*(FILE **)puVar1" * (cast_expression "(FILE **)puVar1" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , number_literal ))) ;) })) (expression_statement "calculate_derived_rates(ppVar5);" (call_expression "calculate_derived_rates(ppVar5)" identifier (argument_list "(ppVar5)" ( identifier ))) ;) (expression_statement "ppVar8->pred_left = *last;" (assignment_expression "ppVar8->pred_left = *last" (field_expression "ppVar8->pred_left" identifier -> field_identifier) = (pointer_expression "*last" * identifier)) ;) (expression_statement "*last = ppVar5;" (assignment_expression "*last = ppVar5" (pointer_expression "*last" * identifier) = identifier) ;) (expression_statement "list->tail = (predicate *)0x0;" (assignment_expression "list->tail = (predicate *)0x0" (field_expression "list->tail" identifier -> field_identifier) = (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "list->head = (predicate *)0x0;" (assignment_expression "list->head = (predicate *)0x0" (field_expression "list->head" identifier -> field_identifier) = (cast_expression "(predicate *)0x0" ( (type_descriptor "predicate *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0001bad4(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0001bad4(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0001bad4(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" identifier = identifier) ;) (if_statement "if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }" if (parenthesized_expression "(*param_1 != 0)" ( (binary_expression "*param_1 != 0" (pointer_expression "*param_1" * identifier) != number_literal) )) (compound_statement "{\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }" { (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" if (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0)" ( (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" ( (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" * (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_options_000795bc + 0x2c)" ( (binary_expression "PTR_options_000795bc + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar5 = *param_1;\n    }" { (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }) (else_clause "else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" else (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" { (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" * (cast_expression "(code *)PTR___fprintf_chk_00079a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" * (cast_expression "(undefined4 *)PTR_stderr_00079c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (binary_expression "PTR_s_nt0_000795b8 + 0x914" identifier + number_literal) , (binary_expression "PTR_s_nt0_000795b8 + 0x8f8" identifier + number_literal) ))) ;) (expression_statement "print_tree(*(undefined4 *)puVar1,*param_1,2);" (call_expression "print_tree(*(undefined4 *)puVar1,*param_1,2)" identifier (argument_list "(*(undefined4 *)puVar1,*param_1,2)" ( (pointer_expression "*(undefined4 *)puVar1" * (cast_expression "(undefined4 *)puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (pointer_expression "*param_1" * identifier) , number_literal ))) ;) (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }))) (expression_statement "calculate_derived_rates(iVar5);" (call_expression "calculate_derived_rates(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0001bc08:\n    iVar8 = iVar6;" statement_identifier : (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" identifier = identifier) ;)) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" identifier = identifier) ;) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }" { (expression_statement "*param_1 = *(int *)(iVar6 + 0x9c);" (assignment_expression "*param_1 = *(int *)(iVar6 + 0x9c)" (pointer_expression "*param_1" * identifier) = (pointer_expression "*(int *)(iVar6 + 0x9c)" * (cast_expression "(int *)(iVar6 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar6 + 0x9c) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + 0x9c) = 0" (pointer_expression "*(undefined4 *)(iVar6 + 0x9c)" * (cast_expression "(undefined4 *)(iVar6 + 0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }" { (expression_statement "uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);" (assignment_expression "uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" * (cast_expression "(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xa0) + 0x18)" ( (binary_expression "*(int *)(iVar6 + 0xa0) + 0x18" (pointer_expression "*(int *)(iVar6 + 0xa0)" * (cast_expression "(int *)(iVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xa0)" ( (binary_expression "iVar6 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "iVar2 = iVar5;" (assignment_expression "iVar2 = iVar5" identifier = identifier) ;) (do_statement "do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);" do (compound_statement "{\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        }" { (expression_statement "uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);" (assignment_expression "uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" identifier = (pointer_expression "*(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" * (cast_expression "(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0xa0) + 0x18)" ( (binary_expression "*(int *)(iVar2 + 0xa0) + 0x18" (pointer_expression "*(int *)(iVar2 + 0xa0)" * (cast_expression "(int *)(iVar2 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa0)" ( (binary_expression "iVar2 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }" if (parenthesized_expression "(uVar3 != uVar7)" ( (binary_expression "uVar3 != uVar7" identifier != identifier) )) (compound_statement "{\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }" { (if_statement "if (uVar3 < uVar7) goto LAB_0001bba0;" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (goto_statement "goto LAB_0001bba0;" goto statement_identifier ;)) (labeled_statement "LAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);" statement_identifier : (expression_statement "iVar4 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x9c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;" statement_identifier : (expression_statement "*(int *)(iVar6 + 0x9c) = iVar4;" (assignment_expression "*(int *)(iVar6 + 0x9c) = iVar4" (pointer_expression "*(int *)(iVar6 + 0x9c)" * (cast_expression "(int *)(iVar6 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) )))) = identifier) ;)) (if_statement "if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar8 = iVar6;\n            }" { (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" identifier = identifier) ;) })) (expression_statement "*(int *)(iVar2 + 0x9c) = iVar6;" (assignment_expression "*(int *)(iVar2 + 0x9c) = iVar6" (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) (goto_statement "goto LAB_0001bc08;" goto statement_identifier ;) })) (expression_statement "fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);" (assignment_expression "fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" identifier = (pointer_expression "*(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" * (cast_expression "(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0xa0) + 0x1c)" ( (binary_expression "*(int *)(iVar2 + 0xa0) + 0x1c" (pointer_expression "*(int *)(iVar2 + 0xa0)" * (cast_expression "(int *)(iVar2 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xa0)" ( (binary_expression "iVar2 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);" (assignment_expression "fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" identifier = (pointer_expression "*(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" * (cast_expression "(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar6 + 0xa0) + 0x1c)" ( (binary_expression "*(int *)(iVar6 + 0xa0) + 0x1c" (pointer_expression "*(int *)(iVar6 + 0xa0)" * (cast_expression "(int *)(iVar6 + 0xa0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xa0)" ( (binary_expression "iVar6 + 0xa0" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (fVar10 == fVar9) goto LAB_0001bbf8;" if (parenthesized_expression "(fVar10 == fVar9)" ( (binary_expression "fVar10 == fVar9" identifier == identifier) )) (goto_statement "goto LAB_0001bbf8;" goto statement_identifier ;)) (if_statement "if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }" if (parenthesized_expression "(*(int *)(iVar2 + 0xc) != 2)" ( (binary_expression "*(int *)(iVar2 + 0xc) != 2" (pointer_expression "*(int *)(iVar2 + 0xc)" * (cast_expression "(int *)(iVar2 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0xc)" ( (binary_expression "iVar2 + 0xc" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }" { (if_statement "if (fVar10 < fVar9) goto LAB_0001bba0;" if (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001bba0;" goto statement_identifier ;)) (expression_statement "iVar4 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x9c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0001bbfc;" goto statement_identifier ;) })) (if_statement "if (fVar10 < fVar9) goto LAB_0001bbf8;" if (parenthesized_expression "(fVar10 < fVar9)" ( (binary_expression "fVar10 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001bbf8;" goto statement_identifier ;)) (labeled_statement "LAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);" statement_identifier : (expression_statement "iVar2 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x9c)" identifier = (pointer_expression "*(int *)(iVar2 + 0x9c)" * (cast_expression "(int *)(iVar2 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x9c)" ( (binary_expression "iVar2 + 0x9c" identifier + number_literal) ))))) ;)) }) while (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) ;) })) (expression_statement "*(int *)(iVar6 + 0x9c) = iVar5;" (assignment_expression "*(int *)(iVar6 + 0x9c) = iVar5" (pointer_expression "*(int *)(iVar6 + 0x9c)" * (cast_expression "(int *)(iVar6 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x9c)" ( (binary_expression "iVar6 + 0x9c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" identifier = identifier) ;) (if_statement "if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar6 = iVar8;\n      }" { (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" identifier = identifier) ;) })) (goto_statement "goto LAB_0001bc08;" goto statement_identifier ;) })) (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }" if (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0)" ( (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" ( (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" * (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_options_000795bc + 0x2c)" ( (binary_expression "PTR_options_000795bc + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }" { (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" ( (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" * (cast_expression "(code *)PTR___fprintf_chk_00079a44" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" ( (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" * (cast_expression "(undefined4 *)PTR_stderr_00079c40" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , number_literal , (binary_expression "PTR_s_nt0_000795b8 + 0x914" identifier + number_literal) , (binary_expression "PTR_s_nt0_000795b8 + 0x91c" identifier + number_literal) ))) ;) (expression_statement "print_tree(*(undefined4 *)puVar1,iVar5,2);" (call_expression "print_tree(*(undefined4 *)puVar1,iVar5,2)" identifier (argument_list "(*(undefined4 *)puVar1,iVar5,2)" ( (pointer_expression "*(undefined4 *)puVar1" * (cast_expression "(undefined4 *)puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier , number_literal ))) ;) })) (expression_statement "calculate_derived_rates(iVar5);" (call_expression "calculate_derived_rates(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))) ;) (expression_statement "*(int *)(iVar8 + 0x9c) = *param_2;" (assignment_expression "*(int *)(iVar8 + 0x9c) = *param_2" (pointer_expression "*(int *)(iVar8 + 0x9c)" * (cast_expression "(int *)(iVar8 + 0x9c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x9c)" ( (binary_expression "iVar8 + 0x9c" identifier + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" * 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 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (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 ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , (pointer_expression * IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0001bad4(int *param_1,int *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0001bad4(int *param_1,int *param_2)" (identifier "FUN_0001bad4") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  float fVar9;\n  float fVar10;\n  \n  puVar1 = PTR_stderr_00079c40;\n  if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "float fVar9;" (primitive_type "float") (identifier "fVar9") (; ";")) (declaration "float fVar10;" (primitive_type "float") (identifier "fVar10") (; ";")) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" (identifier "puVar1") (= "=") (identifier "PTR_stderr_00079c40")) (; ";")) (if_statement "if (*param_1 != 0) {\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }" (if "if") (parenthesized_expression "(*param_1 != 0)" (( "(") (binary_expression "*param_1 != 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }\n    calculate_derived_rates(iVar5);\n    iVar5 = 0;\n    iVar6 = 0;\nLAB_0001bc08:\n    iVar8 = iVar6;\n    puVar1 = PTR_stderr_00079c40;\n    iVar6 = *param_1;\n    if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }\n    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }\n    calculate_derived_rates(iVar5);\n    *(int *)(iVar8 + 0x9c) = *param_2;\n    *param_2 = iVar5;\n    param_1[1] = 0;\n    *param_1 = 0;\n  }" ({ "{") (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {\n      iVar5 = *param_1;\n    }\n    else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" (if "if") (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0)" (( "(") (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" (( "(") (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" (* "*") (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_options_000795bc + 0x2c)" (( "(") (binary_expression "PTR_options_000795bc + 0x2c" (identifier "PTR_options_000795bc") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar5 = *param_1;\n    }" ({ "{") (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" (identifier "iVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}")) (else_clause "else {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" (else "else") (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);\n      print_tree(*(undefined4 *)puVar1,*param_1,2);\n      iVar5 = *param_1;\n    }" ({ "{") (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" (* "*") (cast_expression "(code *)PTR___fprintf_chk_00079a44" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_00079a44"))) () ")")) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x8f8)" (( "(") (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" (* "*") (cast_expression "(undefined4 *)PTR_stderr_00079c40" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stderr_00079c40"))) (, ",") (number_literal "1") (, ",") (binary_expression "PTR_s_nt0_000795b8 + 0x914" (identifier "PTR_s_nt0_000795b8") (+ "+") (number_literal "0x914")) (, ",") (binary_expression "PTR_s_nt0_000795b8 + 0x8f8" (identifier "PTR_s_nt0_000795b8") (+ "+") (number_literal "0x8f8")) () ")"))) (; ";")) (expression_statement "print_tree(*(undefined4 *)puVar1,*param_1,2);" (call_expression "print_tree(*(undefined4 *)puVar1,*param_1,2)" (identifier "print_tree") (argument_list "(*(undefined4 *)puVar1,*param_1,2)" (( "(") (pointer_expression "*(undefined4 *)puVar1" (* "*") (cast_expression "(undefined4 *)puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "iVar5 = *param_1;" (assignment_expression "iVar5 = *param_1" (identifier "iVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}")))) (expression_statement "calculate_derived_rates(iVar5);" (call_expression "calculate_derived_rates(iVar5)" (identifier "calculate_derived_rates") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001bc08:\n    iVar8 = iVar6;" (statement_identifier "LAB_0001bc08") (: ":") (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" (identifier "iVar8") (= "=") (identifier "iVar6")) (; ";"))) (expression_statement "puVar1 = PTR_stderr_00079c40;" (assignment_expression "puVar1 = PTR_stderr_00079c40" (identifier "puVar1") (= "=") (identifier "PTR_stderr_00079c40")) (; ";")) (expression_statement "iVar6 = *param_1;" (assignment_expression "iVar6 = *param_1" (identifier "iVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (iVar6 != 0) {\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *param_1 = *(int *)(iVar6 + 0x9c);\n      *(undefined4 *)(iVar6 + 0x9c) = 0;\n      if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }\n      *(int *)(iVar6 + 0x9c) = iVar5;\n      iVar5 = iVar6;\n      if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }\n      goto LAB_0001bc08;\n    }" ({ "{") (expression_statement "*param_1 = *(int *)(iVar6 + 0x9c);" (assignment_expression "*param_1 = *(int *)(iVar6 + 0x9c)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "*(int *)(iVar6 + 0x9c)" (* "*") (cast_expression "(int *)(iVar6 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x9c)" (( "(") (binary_expression "iVar6 + 0x9c" (identifier "iVar6") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + 0x9c) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + 0x9c) = 0" (pointer_expression "*(undefined4 *)(iVar6 + 0x9c)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0x9c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x9c)" (( "(") (binary_expression "iVar6 + 0x9c" (identifier "iVar6") (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar5 != 0) {\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);\n        iVar2 = iVar5;\n        do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);\n      }" ({ "{") (expression_statement "uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);" (assignment_expression "uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" (* "*") (cast_expression "(uint *)(*(int *)(iVar6 + 0xa0) + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar6 + 0xa0) + 0x18)" (( "(") (binary_expression "*(int *)(iVar6 + 0xa0) + 0x18" (pointer_expression "*(int *)(iVar6 + 0xa0)" (* "*") (cast_expression "(int *)(iVar6 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xa0)" (( "(") (binary_expression "iVar6 + 0xa0" (identifier "iVar6") (+ "+") (number_literal "0xa0")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "iVar2 = iVar5;" (assignment_expression "iVar2 = iVar5" (identifier "iVar2") (= "=") (identifier "iVar5")) (; ";")) (do_statement "do {\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        } while (iVar2 != 0);" (do "do") (compound_statement "{\n          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);\n          if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }\n          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);\n          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);\n          if (fVar10 == fVar9) goto LAB_0001bbf8;\n          if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }\n          if (fVar10 < fVar9) goto LAB_0001bbf8;\nLAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);\n        }" ({ "{") (expression_statement "uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);" (assignment_expression "uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" (* "*") (cast_expression "(uint *)(*(int *)(iVar2 + 0xa0) + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0xa0) + 0x18)" (( "(") (binary_expression "*(int *)(iVar2 + 0xa0) + 0x18" (pointer_expression "*(int *)(iVar2 + 0xa0)" (* "*") (cast_expression "(int *)(iVar2 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xa0)" (( "(") (binary_expression "iVar2 + 0xa0" (identifier "iVar2") (+ "+") (number_literal "0xa0")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (uVar3 != uVar7) {\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }" (if "if") (parenthesized_expression "(uVar3 != uVar7)" (( "(") (binary_expression "uVar3 != uVar7" (identifier "uVar3") (!= "!=") (identifier "uVar7")) () ")")) (compound_statement "{\n            if (uVar3 < uVar7) goto LAB_0001bba0;\nLAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);\nLAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;\n            if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }\n            *(int *)(iVar2 + 0x9c) = iVar6;\n            iVar6 = iVar8;\n            goto LAB_0001bc08;\n          }" ({ "{") (if_statement "if (uVar3 < uVar7) goto LAB_0001bba0;" (if "if") (parenthesized_expression "(uVar3 < uVar7)" (( "(") (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) () ")")) (goto_statement "goto LAB_0001bba0;" (goto "goto") (statement_identifier "LAB_0001bba0") (; ";"))) (labeled_statement "LAB_0001bbf8:\n            iVar4 = *(int *)(iVar2 + 0x9c);" (statement_identifier "LAB_0001bbf8") (: ":") (expression_statement "iVar4 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x9c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar2 + 0x9c)" (* "*") (cast_expression "(int *)(iVar2 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x9c)" (( "(") (binary_expression "iVar2 + 0x9c" (identifier "iVar2") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";"))) (labeled_statement "LAB_0001bbfc:\n            *(int *)(iVar6 + 0x9c) = iVar4;" (statement_identifier "LAB_0001bbfc") (: ":") (expression_statement "*(int *)(iVar6 + 0x9c) = iVar4;" (assignment_expression "*(int *)(iVar6 + 0x9c) = iVar4" (pointer_expression "*(int *)(iVar6 + 0x9c)" (* "*") (cast_expression "(int *)(iVar6 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x9c)" (( "(") (binary_expression "iVar6 + 0x9c" (identifier "iVar6") (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (identifier "iVar4")) (; ";"))) (if_statement "if (iVar4 == 0) {\n              iVar8 = iVar6;\n            }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar8 = iVar6;\n            }" ({ "{") (expression_statement "iVar8 = iVar6;" (assignment_expression "iVar8 = iVar6" (identifier "iVar8") (= "=") (identifier "iVar6")) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar2 + 0x9c) = iVar6;" (assignment_expression "*(int *)(iVar2 + 0x9c) = iVar6" (pointer_expression "*(int *)(iVar2 + 0x9c)" (* "*") (cast_expression "(int *)(iVar2 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x9c)" (( "(") (binary_expression "iVar2 + 0x9c" (identifier "iVar2") (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" (identifier "iVar6") (= "=") (identifier "iVar8")) (; ";")) (goto_statement "goto LAB_0001bc08;" (goto "goto") (statement_identifier "LAB_0001bc08") (; ";")) (} "}"))) (expression_statement "fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);" (assignment_expression "fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" (identifier "fVar10") (= "=") (pointer_expression "*(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" (* "*") (cast_expression "(float *)(*(int *)(iVar2 + 0xa0) + 0x1c)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0xa0) + 0x1c)" (( "(") (binary_expression "*(int *)(iVar2 + 0xa0) + 0x1c" (pointer_expression "*(int *)(iVar2 + 0xa0)" (* "*") (cast_expression "(int *)(iVar2 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xa0)" (( "(") (binary_expression "iVar2 + 0xa0" (identifier "iVar2") (+ "+") (number_literal "0xa0")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);" (assignment_expression "fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" (identifier "fVar9") (= "=") (pointer_expression "*(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" (* "*") (cast_expression "(float *)(*(int *)(iVar6 + 0xa0) + 0x1c)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar6 + 0xa0) + 0x1c)" (( "(") (binary_expression "*(int *)(iVar6 + 0xa0) + 0x1c" (pointer_expression "*(int *)(iVar6 + 0xa0)" (* "*") (cast_expression "(int *)(iVar6 + 0xa0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xa0)" (( "(") (binary_expression "iVar6 + 0xa0" (identifier "iVar6") (+ "+") (number_literal "0xa0")) () ")")))) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (if_statement "if (fVar10 == fVar9) goto LAB_0001bbf8;" (if "if") (parenthesized_expression "(fVar10 == fVar9)" (( "(") (binary_expression "fVar10 == fVar9" (identifier "fVar10") (== "==") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0001bbf8;" (goto "goto") (statement_identifier "LAB_0001bbf8") (; ";"))) (if_statement "if (*(int *)(iVar2 + 0xc) != 2) {\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }" (if "if") (parenthesized_expression "(*(int *)(iVar2 + 0xc) != 2)" (( "(") (binary_expression "*(int *)(iVar2 + 0xc) != 2" (pointer_expression "*(int *)(iVar2 + 0xc)" (* "*") (cast_expression "(int *)(iVar2 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0xc)" (( "(") (binary_expression "iVar2 + 0xc" (identifier "iVar2") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n            if (fVar10 < fVar9) goto LAB_0001bba0;\n            iVar4 = *(int *)(iVar2 + 0x9c);\n            goto LAB_0001bbfc;\n          }" ({ "{") (if_statement "if (fVar10 < fVar9) goto LAB_0001bba0;" (if "if") (parenthesized_expression "(fVar10 < fVar9)" (( "(") (binary_expression "fVar10 < fVar9" (identifier "fVar10") (< "<") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0001bba0;" (goto "goto") (statement_identifier "LAB_0001bba0") (; ";"))) (expression_statement "iVar4 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar4 = *(int *)(iVar2 + 0x9c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar2 + 0x9c)" (* "*") (cast_expression "(int *)(iVar2 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x9c)" (( "(") (binary_expression "iVar2 + 0x9c" (identifier "iVar2") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";")) (goto_statement "goto LAB_0001bbfc;" (goto "goto") (statement_identifier "LAB_0001bbfc") (; ";")) (} "}"))) (if_statement "if (fVar10 < fVar9) goto LAB_0001bbf8;" (if "if") (parenthesized_expression "(fVar10 < fVar9)" (( "(") (binary_expression "fVar10 < fVar9" (identifier "fVar10") (< "<") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0001bbf8;" (goto "goto") (statement_identifier "LAB_0001bbf8") (; ";"))) (labeled_statement "LAB_0001bba0:\n          iVar2 = *(int *)(iVar2 + 0x9c);" (statement_identifier "LAB_0001bba0") (: ":") (expression_statement "iVar2 = *(int *)(iVar2 + 0x9c);" (assignment_expression "iVar2 = *(int *)(iVar2 + 0x9c)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar2 + 0x9c)" (* "*") (cast_expression "(int *)(iVar2 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x9c)" (( "(") (binary_expression "iVar2 + 0x9c" (identifier "iVar2") (+ "+") (number_literal "0x9c")) () ")"))))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*(int *)(iVar6 + 0x9c) = iVar5;" (assignment_expression "*(int *)(iVar6 + 0x9c) = iVar5" (pointer_expression "*(int *)(iVar6 + 0x9c)" (* "*") (cast_expression "(int *)(iVar6 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x9c)" (( "(") (binary_expression "iVar6 + 0x9c" (identifier "iVar6") (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "iVar5 = iVar6;" (assignment_expression "iVar5 = iVar6" (identifier "iVar5") (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar8 != 0) {\n        iVar6 = iVar8;\n      }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar6 = iVar8;\n      }" ({ "{") (expression_statement "iVar6 = iVar8;" (assignment_expression "iVar6 = iVar8" (identifier "iVar6") (= "=") (identifier "iVar8")) (; ";")) (} "}"))) (goto_statement "goto LAB_0001bc08;" (goto "goto") (statement_identifier "LAB_0001bc08") (; ";")) (} "}"))) (if_statement "if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }" (if "if") (parenthesized_expression "((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0)" (( "(") (binary_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0" (parenthesized_expression "(*(uint *)(PTR_options_000795bc + 0x2c) & 8)" (( "(") (binary_expression "*(uint *)(PTR_options_000795bc + 0x2c) & 8" (pointer_expression "*(uint *)(PTR_options_000795bc + 0x2c)" (* "*") (cast_expression "(uint *)(PTR_options_000795bc + 0x2c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_options_000795bc + 0x2c)" (( "(") (binary_expression "PTR_options_000795bc + 0x2c" (identifier "PTR_options_000795bc") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);\n      print_tree(*(undefined4 *)puVar1,iVar5,2);\n    }" ({ "{") (expression_statement "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c);" (call_expression "(*(code *)PTR___fprintf_chk_00079a44)\n                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_00079a44)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_00079a44" (* "*") (cast_expression "(code *)PTR___fprintf_chk_00079a44" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_00079a44"))) () ")")) (argument_list "(*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,\n                 PTR_s_nt0_000795b8 + 0x91c)" (( "(") (pointer_expression "*(undefined4 *)PTR_stderr_00079c40" (* "*") (cast_expression "(undefined4 *)PTR_stderr_00079c40" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_stderr_00079c40"))) (, ",") (number_literal "1") (, ",") (binary_expression "PTR_s_nt0_000795b8 + 0x914" (identifier "PTR_s_nt0_000795b8") (+ "+") (number_literal "0x914")) (, ",") (binary_expression "PTR_s_nt0_000795b8 + 0x91c" (identifier "PTR_s_nt0_000795b8") (+ "+") (number_literal "0x91c")) () ")"))) (; ";")) (expression_statement "print_tree(*(undefined4 *)puVar1,iVar5,2);" (call_expression "print_tree(*(undefined4 *)puVar1,iVar5,2)" (identifier "print_tree") (argument_list "(*(undefined4 *)puVar1,iVar5,2)" (( "(") (pointer_expression "*(undefined4 *)puVar1" (* "*") (cast_expression "(undefined4 *)puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) (, ",") (identifier "iVar5") (, ",") (number_literal "2") () ")"))) (; ";")) (} "}"))) (expression_statement "calculate_derived_rates(iVar5);" (call_expression "calculate_derived_rates(iVar5)" (identifier "calculate_derived_rates") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))) (; ";")) (expression_statement "*(int *)(iVar8 + 0x9c) = *param_2;" (assignment_expression "*(int *)(iVar8 + 0x9c) = *param_2" (pointer_expression "*(int *)(iVar8 + 0x9c)" (* "*") (cast_expression "(int *)(iVar8 + 0x9c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x9c)" (( "(") (binary_expression "iVar8 + 0x9c" (identifier "iVar8") (+ "+") (number_literal "0x9c")) () ")")))) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*param_2 = iVar5;" (assignment_expression "*param_2 = iVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar5")) (; ";")) (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 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *list,type_2 **last)

{
  type_3 *puVar1;
  type_2 *var_13;
  type_4 var_7;
  type_2 *var_9;
  type_2 *var_6;
  type_2 *var_5;
  type_4 var_8;
  type_2 *var_14;
  float var_11;
  float var_10;
  
  puVar1 = PTR_stderr_00079c40;
  if (list->head != (type_2 *)0x0) {
    if ((*(type_5 *)(var_1 + 0x2c) & 8) == 0) {
      var_6 = list->head;
    }
    else {
      (*(type_6 *)PTR___fprintf_chk_00079a44)
                (*(type_7 *)PTR_stderr_00079c40,1,var_2 + 0x914,
                 var_2 + 0x8f8);
      var_3(*(type_8 **)puVar1,list->head,2);
      var_6 = list->head;
    }
    var_4(var_6);
    var_6 = (type_2 *)0x0;
    var_5 = (type_2 *)0x0;
LAB_0001bc08:
    var_14 = var_5;
    puVar1 = PTR_stderr_00079c40;
    var_5 = list->head;
    if (var_5 != (type_2 *)0x0) {
      list->head = var_5->pred_left;
      var_5->pred_left = (type_2 *)0x0;
      if (var_6 != (type_2 *)0x0) {
        var_8 = var_5->pred_right->p_cost;
        var_13 = var_6;
        do {
          var_7 = var_13->pred_right->p_cost;
          if (var_7 != var_8) {
            if (var_7 < var_8) goto LAB_0001bba0;
LAB_0001bbf8:
            var_9 = var_13->pred_left;
LAB_0001bbfc:
            var_5->pred_left = var_9;
            if (var_9 == (type_2 *)0x0) {
              var_14 = var_5;
            }
            var_13->pred_left = var_5;
            var_5 = var_14;
            goto LAB_0001bc08;
          }
          var_10 = var_13->pred_right->est_success_rate;
          var_11 = var_5->pred_right->est_success_rate;
          if (var_10 == var_11) goto LAB_0001bbf8;
          if (var_13->p_prec != var_12) {
            if (var_10 < var_11) goto LAB_0001bba0;
            var_9 = var_13->pred_left;
            goto LAB_0001bbfc;
          }
          if (var_10 < var_11) goto LAB_0001bbf8;
LAB_0001bba0:
          var_13 = var_13->pred_left;
        } while (var_13 != (type_2 *)0x0);
      }
      var_5->pred_left = var_6;
      var_6 = var_5;
      if (var_14 != (type_2 *)0x0) {
        var_5 = var_14;
      }
      goto LAB_0001bc08;
    }
    if ((*(type_5 *)(var_1 + 0x2c) & 8) != 0) {
      (*(type_6 *)PTR___fprintf_chk_00079a44)
                (*(type_7 *)PTR_stderr_00079c40,1,var_2 + 0x914,
                 var_2 + 0x91c);
      var_3(*(type_8 **)puVar1,var_6,2);
    }
    var_4(var_6);
    var_14->pred_left = *last;
    *last = var_6;
    list->tail = (type_2 *)0x0;
    list->head = (type_2 *)0x0;
  }
  return;
}


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

void MASKED(int *param_1,int *param_2)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  float fVar9;
  float fVar10;
  
  puVar1 = PTR_stderr_00079c40;
  if (*param_1 != 0) {
    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) == 0) {
      iVar5 = *param_1;
    }
    else {
      (*(code *)PTR___fprintf_chk_00079a44)
                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,
                 PTR_s_nt0_000795b8 + 0x8f8);
      print_tree(*(undefined4 *)puVar1,*param_1,2);
      iVar5 = *param_1;
    }
    calculate_derived_rates(iVar5);
    iVar5 = 0;
    iVar6 = 0;
LAB_0001bc08:
    iVar8 = iVar6;
    puVar1 = PTR_stderr_00079c40;
    iVar6 = *param_1;
    if (iVar6 != 0) {
      *param_1 = *(int *)(iVar6 + 0x9c);
      *(undefined4 *)(iVar6 + 0x9c) = 0;
      if (iVar5 != 0) {
        uVar7 = *(uint *)(*(int *)(iVar6 + 0xa0) + 0x18);
        iVar2 = iVar5;
        do {
          uVar3 = *(uint *)(*(int *)(iVar2 + 0xa0) + 0x18);
          if (uVar3 != uVar7) {
            if (uVar3 < uVar7) goto LAB_0001bba0;
LAB_0001bbf8:
            iVar4 = *(int *)(iVar2 + 0x9c);
LAB_0001bbfc:
            *(int *)(iVar6 + 0x9c) = iVar4;
            if (iVar4 == 0) {
              iVar8 = iVar6;
            }
            *(int *)(iVar2 + 0x9c) = iVar6;
            iVar6 = iVar8;
            goto LAB_0001bc08;
          }
          fVar10 = *(float *)(*(int *)(iVar2 + 0xa0) + 0x1c);
          fVar9 = *(float *)(*(int *)(iVar6 + 0xa0) + 0x1c);
          if (fVar10 == fVar9) goto LAB_0001bbf8;
          if (*(int *)(iVar2 + 0xc) != 2) {
            if (fVar10 < fVar9) goto LAB_0001bba0;
            iVar4 = *(int *)(iVar2 + 0x9c);
            goto LAB_0001bbfc;
          }
          if (fVar10 < fVar9) goto LAB_0001bbf8;
LAB_0001bba0:
          iVar2 = *(int *)(iVar2 + 0x9c);
        } while (iVar2 != 0);
      }
      *(int *)(iVar6 + 0x9c) = iVar5;
      iVar5 = iVar6;
      if (iVar8 != 0) {
        iVar6 = iVar8;
      }
      goto LAB_0001bc08;
    }
    if ((*(uint *)(PTR_options_000795bc + 0x2c) & 8) != 0) {
      (*(code *)PTR___fprintf_chk_00079a44)
                (*(undefined4 *)PTR_stderr_00079c40,1,PTR_s_nt0_000795b8 + 0x914,
                 PTR_s_nt0_000795b8 + 0x91c);
      print_tree(*(undefined4 *)puVar1,iVar5,2);
    }
    calculate_derived_rates(iVar5);
    *(int *)(iVar8 + 0x9c) = *param_2;
    *param_2 = iVar5;
    param_1[1] = 0;
    *param_1 = 0;
  }
  return;
}

