
void depmap_tc(cflow_depmap_t dmap)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *puVar4;
  uint *puVar5;
  uint uVar6;
  uint *puVar7;
  uint *puVar8;
  uint *puVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  
  puVar7 = dmap->r;
  uVar1 = dmap->nrows + 0x1f >> 5;
  puVar4 = (uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7);
  uVar6 = 1;
  puVar8 = puVar7;
  puVar12 = puVar7;
  do {
    puVar3 = puVar7;
    puVar9 = puVar12;
    if (puVar4 <= puVar8) {
      return;
    }
    do {
      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&
             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {
        do {
          puVar5 = puVar2 + 1;
          *puVar2 = *puVar2 | *puVar11;
          puVar2 = puVar5;
          puVar11 = puVar11 + 1;
        } while (puVar5 < puVar10);
        puVar3 = puVar3 + uVar1;
        puVar9 = puVar9 + uVar1;
        if (puVar4 <= puVar3) goto LAB_00018160;
      }
      puVar3 = puVar2;
      puVar9 = puVar9 + uVar1;
    } while (puVar2 < puVar4);
LAB_00018160:
    uVar6 = uVar6 << 1;
    if (uVar6 == 0) {
      puVar12 = puVar12 + 1;
      uVar6 = 1;
    }
    puVar8 = puVar8 + uVar1;
  } while( true );
}



void depmap_tc(int *param_1)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *puVar4;
  uint *puVar5;
  uint uVar6;
  uint *puVar7;
  uint *puVar8;
  uint *puVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  
  puVar7 = (uint *)(param_1 + 2);
  uVar1 = *param_1 + 0x1fU >> 5;
  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);
  uVar6 = 1;
  puVar8 = puVar7;
  puVar12 = puVar7;
  do {
    puVar3 = puVar7;
    puVar9 = puVar12;
    if (puVar4 <= puVar8) {
      return;
    }
    do {
      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&
             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {
        do {
          puVar5 = puVar2 + 1;
          *puVar2 = *puVar2 | *puVar11;
          puVar2 = puVar5;
          puVar11 = puVar11 + 1;
        } while (puVar5 < puVar10);
        puVar3 = puVar3 + uVar1;
        puVar9 = puVar9 + uVar1;
        if (puVar4 <= puVar3) goto LAB_00018160;
      }
      puVar3 = puVar2;
      puVar9 = puVar9 + uVar1;
    } while (puVar2 < puVar4);
LAB_00018160:
    uVar6 = uVar6 << 1;
    if (uVar6 == 0) {
      puVar12 = puVar12 + 1;
      uVar6 = 1;
    }
    puVar8 = puVar8 + uVar1;
  } while( true );
}


addiu a3,a0,0x8
lw a0,0x0(a0)
addiu v0,a0,0x1f
srl v0,v0,0x5
sll v0,v0,0x2
mul v1,a0,v0
addu a0,v1,a3
sltu v1,a3,a0
beq v1,zero,0x00018184
_li a2,0x1
or t0,a3,zero
or t5,a3,zero
or t8,v0,zero
or v1,a3,zero
b 0x00018110
_or t1,t5,zero
or v1,t2,zero
sltu a1,v1,a0
beq a1,zero,0x00018160
_addu t1,t1,v0
lw a1,0x0(t1)
and a1,a2,a1
beq a1,zero,0x00018100
_addu t2,v1,v0
sltu a1,v1,t2
beq a1,zero,0x00018104
_or a1,v1,zero
or t3,t0,zero
addiu a1,a1,0x4
lw t7,0x0(t3)
lw t4,-0x4(a1)
addiu t3,t3,0x4
sltu t6,a1,t2
or t4,t4,t7
bne t6,zero,0x00018130
_sw t4,-0x4(a1)
addu v1,v1,t8
sltu a1,v1,a0
bne a1,zero,0x00018110
_addu t1,t1,v0
sll a2,a2,0x1
bne a2,zero,0x00018174
_nop
addiu t5,t5,0x4
li a2,0x1
addu t0,t0,v0
sltu v1,t0,a0
bne v1,zero,0x000180f8
_or v1,a3,zero
jr ra
_nop
(translation_unit "void depmap_tc(int *param_1)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}\n\n" (function_definition "void depmap_tc(int *param_1)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" primitive_type (function_declarator "depmap_tc(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (expression_statement "puVar7 = (uint *)(param_1 + 2);" (assignment_expression "puVar7 = (uint *)(param_1 + 2)" identifier = (cast_expression "(uint *)(param_1 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "uVar1 = *param_1 + 0x1fU >> 5;" (assignment_expression "uVar1 = *param_1 + 0x1fU >> 5" identifier = (binary_expression "*param_1 + 0x1fU >> 5" (binary_expression "*param_1 + 0x1fU" (pointer_expression "*param_1" * identifier) + number_literal) >> number_literal)) ;) (expression_statement "puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);" (assignment_expression "puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7)" identifier = (cast_expression "(uint *)(*param_1 * uVar1 * 4 + (int)puVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 * uVar1 * 4 + (int)puVar7)" ( (binary_expression "*param_1 * uVar1 * 4 + (int)puVar7" (binary_expression "*param_1 * uVar1 * 4" (binary_expression "*param_1 * uVar1" (pointer_expression "*param_1" * identifier) * identifier) * number_literal) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (expression_statement "puVar12 = puVar7;" (assignment_expression "puVar12 = puVar7" identifier = identifier) ;) (do_statement "do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );" do (compound_statement "{\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  }" { (expression_statement "puVar3 = puVar7;" (assignment_expression "puVar3 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = puVar12;" (assignment_expression "puVar9 = puVar12" identifier = identifier) ;) (if_statement "if (puVar4 <= puVar8) {\n      return;\n    }" if (parenthesized_expression "(puVar4 <= puVar8)" ( (binary_expression "puVar4 <= puVar8" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);" do (compound_statement "{\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    }" { (while_statement "while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" while (parenthesized_expression "((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)))" ( (parenthesized_expression "(puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))" ( (comma_expression "puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar10 = puVar3 + uVar1" identifier = (binary_expression "puVar3 + uVar1" identifier + identifier)) , (comma_expression "puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar2 = puVar10" identifier = identifier) , (binary_expression "(uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (binary_expression "(uVar6 & *puVar9) != 0" (parenthesized_expression "(uVar6 & *puVar9)" ( (binary_expression "uVar6 & *puVar9" identifier & (pointer_expression "*puVar9" * identifier)) )) != number_literal) && (parenthesized_expression "(puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" ( (comma_expression "puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar2 = puVar3" identifier = identifier) , (comma_expression "puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar11 = puVar8" identifier = identifier) , (binary_expression "puVar3 < puVar10" identifier < identifier))) ))))) )) )) (compound_statement "{\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" { (do_statement "do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);" do (compound_statement "{\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        }" { (expression_statement "puVar5 = puVar2 + 1;" (assignment_expression "puVar5 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar2 | *puVar11;" (assignment_expression "*puVar2 = *puVar2 | *puVar11" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | *puVar11" (pointer_expression "*puVar2" * identifier) | (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 < puVar10)" ( (binary_expression "puVar5 < puVar10" identifier < identifier) )) ;) (expression_statement "puVar3 = puVar3 + uVar1;" (assignment_expression "puVar3 = puVar3 + uVar1" identifier = (binary_expression "puVar3 + uVar1" identifier + identifier)) ;) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" identifier = (binary_expression "puVar9 + uVar1" identifier + identifier)) ;) (if_statement "if (puVar4 <= puVar3) goto LAB_00018160;" if (parenthesized_expression "(puVar4 <= puVar3)" ( (binary_expression "puVar4 <= puVar3" identifier <= identifier) )) (goto_statement "goto LAB_00018160;" goto statement_identifier ;)) })) (expression_statement "puVar3 = puVar2;" (assignment_expression "puVar3 = puVar2" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" identifier = (binary_expression "puVar9 + uVar1" identifier + identifier)) ;) }) while (parenthesized_expression "(puVar2 < puVar4)" ( (binary_expression "puVar2 < puVar4" identifier < identifier) )) ;) (labeled_statement "LAB_00018160:\n    uVar6 = uVar6 << 1;" statement_identifier : (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;)) (if_statement "if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" { (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) })) (expression_statement "puVar8 = puVar8 + uVar1;" (assignment_expression "puVar8 = puVar8 + uVar1" identifier = (binary_expression "puVar8 + uVar1" identifier + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void depmap_tc(cflow_depmap_t dmap)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = dmap->r;\n  uVar1 = dmap->nrows + 0x1f >> 5;\n  puVar4 = (uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}\n\n" (function_definition "void depmap_tc(cflow_depmap_t dmap)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = dmap->r;\n  uVar1 = dmap->nrows + 0x1f >> 5;\n  puVar4 = (uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" primitive_type (function_declarator "depmap_tc(cflow_depmap_t dmap)" identifier (parameter_list "(cflow_depmap_t dmap)" ( (parameter_declaration "cflow_depmap_t dmap" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = dmap->r;\n  uVar1 = dmap->nrows + 0x1f >> 5;\n  puVar4 = (uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (expression_statement "puVar7 = dmap->r;" (assignment_expression "puVar7 = dmap->r" identifier = (field_expression "dmap->r" identifier -> field_identifier)) ;) (expression_statement "uVar1 = dmap->nrows + 0x1f >> 5;" (assignment_expression "uVar1 = dmap->nrows + 0x1f >> 5" identifier = (binary_expression "dmap->nrows + 0x1f >> 5" (binary_expression "dmap->nrows + 0x1f" (field_expression "dmap->nrows" identifier -> field_identifier) + number_literal) >> number_literal)) ;) (expression_statement "puVar4 = (uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7);" (assignment_expression "puVar4 = (uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7)" identifier = (cast_expression "(uint *)(dmap->nrows * uVar1 * 4 + (int)puVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(dmap->nrows * uVar1 * 4 + (int)puVar7)" ( (binary_expression "dmap->nrows * uVar1 * 4 + (int)puVar7" (binary_expression "dmap->nrows * uVar1 * 4" (binary_expression "dmap->nrows * uVar1" (field_expression "dmap->nrows" identifier -> field_identifier) * identifier) * number_literal) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (expression_statement "puVar12 = puVar7;" (assignment_expression "puVar12 = puVar7" identifier = identifier) ;) (do_statement "do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );" do (compound_statement "{\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  }" { (expression_statement "puVar3 = puVar7;" (assignment_expression "puVar3 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = puVar12;" (assignment_expression "puVar9 = puVar12" identifier = identifier) ;) (if_statement "if (puVar4 <= puVar8) {\n      return;\n    }" if (parenthesized_expression "(puVar4 <= puVar8)" ( (binary_expression "puVar4 <= puVar8" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);" do (compound_statement "{\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    }" { (while_statement "while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" while (parenthesized_expression "((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)))" ( (parenthesized_expression "(puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))" ( (comma_expression "puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar10 = puVar3 + uVar1" identifier = (binary_expression "puVar3 + uVar1" identifier + identifier)) , (comma_expression "puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar2 = puVar10" identifier = identifier) , (binary_expression "(uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (binary_expression "(uVar6 & *puVar9) != 0" (parenthesized_expression "(uVar6 & *puVar9)" ( (binary_expression "uVar6 & *puVar9" identifier & (pointer_expression "*puVar9" * identifier)) )) != number_literal) && (parenthesized_expression "(puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" ( (comma_expression "puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar2 = puVar3" identifier = identifier) , (comma_expression "puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar11 = puVar8" identifier = identifier) , (binary_expression "puVar3 < puVar10" identifier < identifier))) ))))) )) )) (compound_statement "{\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" { (do_statement "do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);" do (compound_statement "{\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        }" { (expression_statement "puVar5 = puVar2 + 1;" (assignment_expression "puVar5 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar2 | *puVar11;" (assignment_expression "*puVar2 = *puVar2 | *puVar11" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | *puVar11" (pointer_expression "*puVar2" * identifier) | (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 < puVar10)" ( (binary_expression "puVar5 < puVar10" identifier < identifier) )) ;) (expression_statement "puVar3 = puVar3 + uVar1;" (assignment_expression "puVar3 = puVar3 + uVar1" identifier = (binary_expression "puVar3 + uVar1" identifier + identifier)) ;) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" identifier = (binary_expression "puVar9 + uVar1" identifier + identifier)) ;) (if_statement "if (puVar4 <= puVar3) goto LAB_00018160;" if (parenthesized_expression "(puVar4 <= puVar3)" ( (binary_expression "puVar4 <= puVar3" identifier <= identifier) )) (goto_statement "goto LAB_00018160;" goto statement_identifier ;)) })) (expression_statement "puVar3 = puVar2;" (assignment_expression "puVar3 = puVar2" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" identifier = (binary_expression "puVar9 + uVar1" identifier + identifier)) ;) }) while (parenthesized_expression "(puVar2 < puVar4)" ( (binary_expression "puVar2 < puVar4" identifier < identifier) )) ;) (labeled_statement "LAB_00018160:\n    uVar6 = uVar6 << 1;" statement_identifier : (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;)) (if_statement "if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" { (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) })) (expression_statement "puVar8 = puVar8 + uVar1;" (assignment_expression "puVar8 = puVar8 + uVar1" identifier = (binary_expression "puVar8 + uVar1" identifier + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void depmap_tc(int *param_1)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}\n\n" (function_definition "void depmap_tc(int *param_1)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" primitive_type (function_declarator "depmap_tc(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "uint *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "uint *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (expression_statement "puVar7 = (uint *)(param_1 + 2);" (assignment_expression "puVar7 = (uint *)(param_1 + 2)" identifier = (cast_expression "(uint *)(param_1 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) ;) (expression_statement "uVar1 = *param_1 + 0x1fU >> 5;" (assignment_expression "uVar1 = *param_1 + 0x1fU >> 5" identifier = (binary_expression "*param_1 + 0x1fU >> 5" (binary_expression "*param_1 + 0x1fU" (pointer_expression "*param_1" * identifier) + number_literal) >> number_literal)) ;) (expression_statement "puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);" (assignment_expression "puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7)" identifier = (cast_expression "(uint *)(*param_1 * uVar1 * 4 + (int)puVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 * uVar1 * 4 + (int)puVar7)" ( (binary_expression "*param_1 * uVar1 * 4 + (int)puVar7" (binary_expression "*param_1 * uVar1 * 4" (binary_expression "*param_1 * uVar1" (pointer_expression "*param_1" * identifier) * identifier) * number_literal) + (cast_expression "(int)puVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" identifier = identifier) ;) (expression_statement "puVar12 = puVar7;" (assignment_expression "puVar12 = puVar7" identifier = identifier) ;) (do_statement "do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );" do (compound_statement "{\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  }" { (expression_statement "puVar3 = puVar7;" (assignment_expression "puVar3 = puVar7" identifier = identifier) ;) (expression_statement "puVar9 = puVar12;" (assignment_expression "puVar9 = puVar12" identifier = identifier) ;) (if_statement "if (puVar4 <= puVar8) {\n      return;\n    }" if (parenthesized_expression "(puVar4 <= puVar8)" ( (binary_expression "puVar4 <= puVar8" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);" do (compound_statement "{\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    }" { (while_statement "while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" while (parenthesized_expression "((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)))" ( (parenthesized_expression "(puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))" ( (comma_expression "puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar10 = puVar3 + uVar1" identifier = (binary_expression "puVar3 + uVar1" identifier + identifier)) , (comma_expression "puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar2 = puVar10" identifier = identifier) , (binary_expression "(uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (binary_expression "(uVar6 & *puVar9) != 0" (parenthesized_expression "(uVar6 & *puVar9)" ( (binary_expression "uVar6 & *puVar9" identifier & (pointer_expression "*puVar9" * identifier)) )) != number_literal) && (parenthesized_expression "(puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" ( (comma_expression "puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar2 = puVar3" identifier = identifier) , (comma_expression "puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar11 = puVar8" identifier = identifier) , (binary_expression "puVar3 < puVar10" identifier < identifier))) ))))) )) )) (compound_statement "{\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" { (do_statement "do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);" do (compound_statement "{\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        }" { (expression_statement "puVar5 = puVar2 + 1;" (assignment_expression "puVar5 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "*puVar2 = *puVar2 | *puVar11;" (assignment_expression "*puVar2 = *puVar2 | *puVar11" (pointer_expression "*puVar2" * identifier) = (binary_expression "*puVar2 | *puVar11" (pointer_expression "*puVar2" * identifier) | (pointer_expression "*puVar11" * identifier))) ;) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" identifier = identifier) ;) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" identifier = (binary_expression "puVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar5 < puVar10)" ( (binary_expression "puVar5 < puVar10" identifier < identifier) )) ;) (expression_statement "puVar3 = puVar3 + uVar1;" (assignment_expression "puVar3 = puVar3 + uVar1" identifier = (binary_expression "puVar3 + uVar1" identifier + identifier)) ;) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" identifier = (binary_expression "puVar9 + uVar1" identifier + identifier)) ;) (if_statement "if (puVar4 <= puVar3) goto LAB_00018160;" if (parenthesized_expression "(puVar4 <= puVar3)" ( (binary_expression "puVar4 <= puVar3" identifier <= identifier) )) (goto_statement "goto LAB_00018160;" goto statement_identifier ;)) })) (expression_statement "puVar3 = puVar2;" (assignment_expression "puVar3 = puVar2" identifier = identifier) ;) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" identifier = (binary_expression "puVar9 + uVar1" identifier + identifier)) ;) }) while (parenthesized_expression "(puVar2 < puVar4)" ( (binary_expression "puVar2 < puVar4" identifier < identifier) )) ;) (labeled_statement "LAB_00018160:\n    uVar6 = uVar6 << 1;" statement_identifier : (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" identifier = (binary_expression "uVar6 << 1" identifier << number_literal)) ;)) (if_statement "if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" { (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" identifier = (binary_expression "puVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) })) (expression_statement "puVar8 = puVar8 + uVar1;" (assignment_expression "puVar8 = puVar8 + uVar1" identifier = (binary_expression "puVar8 + uVar1" identifier + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * IDENT) * IDENT) * LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & (pointer_expression * IDENT)) )) != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT))) ))))) )) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void depmap_tc(int *param_1)\n\n{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" (primitive_type "void") (function_declarator "depmap_tc(int *param_1)" (identifier "depmap_tc") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint *puVar2;\n  uint *puVar3;\n  uint *puVar4;\n  uint *puVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint *puVar8;\n  uint *puVar9;\n  uint *puVar10;\n  uint *puVar11;\n  uint *puVar12;\n  \n  puVar7 = (uint *)(param_1 + 2);\n  uVar1 = *param_1 + 0x1fU >> 5;\n  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);\n  uVar6 = 1;\n  puVar8 = puVar7;\n  puVar12 = puVar7;\n  do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint *puVar2;" (type_identifier "uint") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "uint *puVar11;" (type_identifier "uint") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "uint *puVar12;" (type_identifier "uint") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (expression_statement "puVar7 = (uint *)(param_1 + 2);" (assignment_expression "puVar7 = (uint *)(param_1 + 2)" (identifier "puVar7") (= "=") (cast_expression "(uint *)(param_1 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "uVar1 = *param_1 + 0x1fU >> 5;" (assignment_expression "uVar1 = *param_1 + 0x1fU >> 5" (identifier "uVar1") (= "=") (binary_expression "*param_1 + 0x1fU >> 5" (binary_expression "*param_1 + 0x1fU" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x1fU")) (>> ">>") (number_literal "5"))) (; ";")) (expression_statement "puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);" (assignment_expression "puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7)" (identifier "puVar4") (= "=") (cast_expression "(uint *)(*param_1 * uVar1 * 4 + (int)puVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 * uVar1 * 4 + (int)puVar7)" (( "(") (binary_expression "*param_1 * uVar1 * 4 + (int)puVar7" (binary_expression "*param_1 * uVar1 * 4" (binary_expression "*param_1 * uVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (* "*") (identifier "uVar1")) (* "*") (number_literal "4")) (+ "+") (cast_expression "(int)puVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar7"))) () ")")))) (; ";")) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" (identifier "uVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar8 = puVar7;" (assignment_expression "puVar8 = puVar7" (identifier "puVar8") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar12 = puVar7;" (assignment_expression "puVar12 = puVar7" (identifier "puVar12") (= "=") (identifier "puVar7")) (; ";")) (do_statement "do {\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  } while( true );" (do "do") (compound_statement "{\n    puVar3 = puVar7;\n    puVar9 = puVar12;\n    if (puVar4 <= puVar8) {\n      return;\n    }\n    do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);\nLAB_00018160:\n    uVar6 = uVar6 << 1;\n    if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }\n    puVar8 = puVar8 + uVar1;\n  }" ({ "{") (expression_statement "puVar3 = puVar7;" (assignment_expression "puVar3 = puVar7" (identifier "puVar3") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "puVar9 = puVar12;" (assignment_expression "puVar9 = puVar12" (identifier "puVar9") (= "=") (identifier "puVar12")) (; ";")) (if_statement "if (puVar4 <= puVar8) {\n      return;\n    }" (if "if") (parenthesized_expression "(puVar4 <= puVar8)" (( "(") (binary_expression "puVar4 <= puVar8" (identifier "puVar4") (<= "<=") (identifier "puVar8")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (do_statement "do {\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    } while (puVar2 < puVar4);" (do "do") (compound_statement "{\n      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }\n      puVar3 = puVar2;\n      puVar9 = puVar9 + uVar1;\n    }" ({ "{") (while_statement "while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" (while "while") (parenthesized_expression "((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)))" (( "(") (parenthesized_expression "(puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))" (( "(") (comma_expression "puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar10 = puVar3 + uVar1" (identifier "puVar10") (= "=") (binary_expression "puVar3 + uVar1" (identifier "puVar3") (+ "+") (identifier "uVar1"))) (, ",") (comma_expression "puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (assignment_expression "puVar2 = puVar10" (identifier "puVar2") (= "=") (identifier "puVar10")) (, ",") (binary_expression "(uVar6 & *puVar9) != 0 &&\n             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (binary_expression "(uVar6 & *puVar9) != 0" (parenthesized_expression "(uVar6 & *puVar9)" (( "(") (binary_expression "uVar6 & *puVar9" (identifier "uVar6") (& "&") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10)" (( "(") (comma_expression "puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar2 = puVar3" (identifier "puVar2") (= "=") (identifier "puVar3")) (, ",") (comma_expression "puVar11 = puVar8, puVar3 < puVar10" (assignment_expression "puVar11 = puVar8" (identifier "puVar11") (= "=") (identifier "puVar8")) (, ",") (binary_expression "puVar3 < puVar10" (identifier "puVar3") (< "<") (identifier "puVar10")))) () ")"))))) () ")")) () ")")) (compound_statement "{\n        do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);\n        puVar3 = puVar3 + uVar1;\n        puVar9 = puVar9 + uVar1;\n        if (puVar4 <= puVar3) goto LAB_00018160;\n      }" ({ "{") (do_statement "do {\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        } while (puVar5 < puVar10);" (do "do") (compound_statement "{\n          puVar5 = puVar2 + 1;\n          *puVar2 = *puVar2 | *puVar11;\n          puVar2 = puVar5;\n          puVar11 = puVar11 + 1;\n        }" ({ "{") (expression_statement "puVar5 = puVar2 + 1;" (assignment_expression "puVar5 = puVar2 + 1" (identifier "puVar5") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar2 = *puVar2 | *puVar11;" (assignment_expression "*puVar2 = *puVar2 | *puVar11" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (binary_expression "*puVar2 | *puVar11" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (| "|") (pointer_expression "*puVar11" (* "*") (identifier "puVar11")))) (; ";")) (expression_statement "puVar2 = puVar5;" (assignment_expression "puVar2 = puVar5" (identifier "puVar2") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar11 = puVar11 + 1;" (assignment_expression "puVar11 = puVar11 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + 1" (identifier "puVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar5 < puVar10)" (( "(") (binary_expression "puVar5 < puVar10" (identifier "puVar5") (< "<") (identifier "puVar10")) () ")")) (; ";")) (expression_statement "puVar3 = puVar3 + uVar1;" (assignment_expression "puVar3 = puVar3 + uVar1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + uVar1" (identifier "puVar3") (+ "+") (identifier "uVar1"))) (; ";")) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + uVar1" (identifier "puVar9") (+ "+") (identifier "uVar1"))) (; ";")) (if_statement "if (puVar4 <= puVar3) goto LAB_00018160;" (if "if") (parenthesized_expression "(puVar4 <= puVar3)" (( "(") (binary_expression "puVar4 <= puVar3" (identifier "puVar4") (<= "<=") (identifier "puVar3")) () ")")) (goto_statement "goto LAB_00018160;" (goto "goto") (statement_identifier "LAB_00018160") (; ";"))) (} "}"))) (expression_statement "puVar3 = puVar2;" (assignment_expression "puVar3 = puVar2" (identifier "puVar3") (= "=") (identifier "puVar2")) (; ";")) (expression_statement "puVar9 = puVar9 + uVar1;" (assignment_expression "puVar9 = puVar9 + uVar1" (identifier "puVar9") (= "=") (binary_expression "puVar9 + uVar1" (identifier "puVar9") (+ "+") (identifier "uVar1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 < puVar4)" (( "(") (binary_expression "puVar2 < puVar4" (identifier "puVar2") (< "<") (identifier "puVar4")) () ")")) (; ";")) (labeled_statement "LAB_00018160:\n    uVar6 = uVar6 << 1;" (statement_identifier "LAB_00018160") (: ":") (expression_statement "uVar6 = uVar6 << 1;" (assignment_expression "uVar6 = uVar6 << 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 << 1" (identifier "uVar6") (<< "<<") (number_literal "1"))) (; ";"))) (if_statement "if (uVar6 == 0) {\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar12 = puVar12 + 1;\n      uVar6 = 1;\n    }" ({ "{") (expression_statement "puVar12 = puVar12 + 1;" (assignment_expression "puVar12 = puVar12 + 1" (identifier "puVar12") (= "=") (binary_expression "puVar12 + 1" (identifier "puVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" (identifier "uVar6") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "puVar8 = puVar8 + uVar1;" (assignment_expression "puVar8 = puVar8 + uVar1" (identifier "puVar8") (= "=") (binary_expression "puVar8 + uVar1" (identifier "puVar8") (+ "+") (identifier "uVar1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(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))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))))))))) body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (true))))))

void MASKED(int *param_1)

{
  uint uVar1;
  uint *puVar2;
  uint *puVar3;
  uint *puVar4;
  uint *puVar5;
  uint uVar6;
  uint *puVar7;
  uint *puVar8;
  uint *puVar9;
  uint *puVar10;
  uint *puVar11;
  uint *puVar12;
  
  puVar7 = (uint *)(param_1 + 2);
  uVar1 = *param_1 + 0x1fU >> 5;
  puVar4 = (uint *)(*param_1 * uVar1 * 4 + (int)puVar7);
  uVar6 = 1;
  puVar8 = puVar7;
  puVar12 = puVar7;
  do {
    puVar3 = puVar7;
    puVar9 = puVar12;
    if (puVar4 <= puVar8) {
      return;
    }
    do {
      while ((puVar10 = puVar3 + uVar1, puVar2 = puVar10, (uVar6 & *puVar9) != 0 &&
             (puVar2 = puVar3, puVar11 = puVar8, puVar3 < puVar10))) {
        do {
          puVar5 = puVar2 + 1;
          *puVar2 = *puVar2 | *puVar11;
          puVar2 = puVar5;
          puVar11 = puVar11 + 1;
        } while (puVar5 < puVar10);
        puVar3 = puVar3 + uVar1;
        puVar9 = puVar9 + uVar1;
        if (puVar4 <= puVar3) goto LAB_00018160;
      }
      puVar3 = puVar2;
      puVar9 = puVar9 + uVar1;
    } while (puVar2 < puVar4);
LAB_00018160:
    uVar6 = uVar6 << 1;
    if (uVar6 == 0) {
      puVar12 = puVar12 + 1;
      uVar6 = 1;
    }
    puVar8 = puVar8 + uVar1;
  } while( true );
}

