
size_t GetMatrixRows(MatrixInfo *matrix_info)

{
  double *pdVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  double *pdVar6;
  double *pdVar7;
  double *pdVar8;
  double *pdVar9;
  int iVar10;
  int iStack_c;
  
  if (matrix_info == (MatrixInfo *)0x0) {
    (*(code *)PTR___assert_fail_003a9608)
              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,
               PTR_s_t_to_left_003a88e4 + -0x2fc0);
  }
  else if (matrix_info->signature == 0xabacadab) {
    return matrix_info->rows;
  }
  pdVar6 = (double *)&DAT_000002f2;
  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);
  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);
  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);
  (*(code *)PTR___assert_fail_003a9608)();
  iVar10 = 0;
  piVar3 = piVar4;
  pdVar8 = pdVar6;
  pdVar9 = pdVar6;
  do {
    do {
      piVar2 = piVar3 + 1;
      pdVar1 = (double *)(*piVar3 + iVar10);
      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;
      piVar3 = piVar2;
      pdVar8 = pdVar8 + 1;
    } while (piVar4 + 0x3b08b0 != piVar2);
    piVar3 = piVar5;
    pdVar8 = pdVar7;
    if (0 < iStack_c) {
      do {
        piVar2 = piVar3 + 1;
        pdVar1 = (double *)(*piVar3 + iVar10);
        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;
        piVar3 = piVar2;
        pdVar8 = pdVar8 + 1;
      } while (piVar2 != piVar5 + iStack_c);
    }
    pdVar9 = pdVar9 + 1;
    iVar10 = (int)pdVar9 - (int)pdVar6;
    piVar3 = piVar4;
    pdVar8 = pdVar6;
  } while (pdVar6 + 0x3b08b0 != pdVar9);
  return (size_t)pdVar1;
}



double * GetMatrixRows(int param_1)

{
  double *pdVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  double *pdVar6;
  double *pdVar7;
  double *pdVar8;
  double *pdVar9;
  int iVar10;
  int iStack_c;
  
  if (param_1 == 0) {
    (*(code *)PTR___assert_fail_003a9608)
              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,
               PTR_s_t_to_left_003a88e4 + -0x2fc0);
  }
  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {
    return *(double **)(param_1 + 8);
  }
  pdVar6 = (double *)&DAT_000002f2;
  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);
  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);
  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);
  (*(code *)PTR___assert_fail_003a9608)();
  iVar10 = 0;
  piVar3 = piVar4;
  pdVar8 = pdVar6;
  pdVar9 = pdVar6;
  do {
    do {
      piVar2 = piVar3 + 1;
      pdVar1 = (double *)(*piVar3 + iVar10);
      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;
      piVar3 = piVar2;
      pdVar8 = pdVar8 + 1;
    } while (piVar4 + 0x3b08b0 != piVar2);
    piVar3 = piVar5;
    pdVar8 = pdVar7;
    if (0 < iStack_c) {
      do {
        piVar2 = piVar3 + 1;
        pdVar1 = (double *)(*piVar3 + iVar10);
        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;
        piVar3 = piVar2;
        pdVar8 = pdVar8 + 1;
      } while (piVar2 != piVar5 + iStack_c);
    }
    pdVar9 = pdVar9 + 1;
    iVar10 = (int)pdVar9 - (int)pdVar6;
    piVar3 = piVar4;
    pdVar8 = pdVar6;
  } while (pdVar6 + 0x3b08b0 != pdVar9);
  return pdVar1;
}


lui gp,0x2a
addiu gp,gp,-0x19dc
addu gp,gp,t9
addiu sp,sp,-0x20
sw gp,0x10(sp)
sw ra,0x1c(sp)
beq a0,zero,0x001122c8
_lui v0,0xabac
lw v1,0x102c(a0)
ori v0,v0,0xadab
bne v1,v0,0x001122ec
_lw ra,0x1c(sp)
lw v0,0x8(a0)
jr ra
_addiu sp,sp,0x20
lw a3,-0x7fcc(gp)
li a2,0x2f1
lw a1,-0x7fcc(gp)
lw a0,-0x7fcc(gp)
lw t9,-0x72a8(gp)
addiu a3,a3,-0x2fc0
addiu a1,a1,-0x30b0
jalr t9
_addiu a0,a0,-0x301c
lw a3,-0x7fcc(gp)
li a2,0x2f2
lw a1,-0x7fcc(gp)
lw a0,-0x7fcc(gp)
lw t9,-0x72a8(gp)
addiu a3,a3,-0x2fc0
addiu a1,a1,-0x30b0
jalr t9
_addiu a0,a0,-0x305c
(translation_unit "double * GetMatrixRows(int param_1)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}\n\n" (function_definition "double * GetMatrixRows(int param_1)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}" primitive_type (pointer_declarator "* GetMatrixRows(int param_1)" * (function_declarator "GetMatrixRows(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) )))) (compound_statement "{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}" { (declaration "double *pdVar1;" primitive_type (pointer_declarator "*pdVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "double *pdVar7;" primitive_type (pointer_declarator "*pdVar7" * identifier) ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "double *pdVar9;" primitive_type (pointer_declarator "*pdVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iStack_c;" primitive_type identifier ;) (if_statement "if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }" { (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x301c" identifier + number_literal) , (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" identifier + number_literal) , number_literal , (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" identifier + number_literal) ))) ;) }) (else_clause "else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" else (if_statement "if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x102c) == -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x102c) == -0x54535255" (pointer_expression "*(int *)(param_1 + 0x102c)" * (cast_expression "(int *)(param_1 + 0x102c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x102c)" ( (binary_expression "param_1 + 0x102c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return *(double **)(param_1 + 8);\n  }" { (return_statement "return *(double **)(param_1 + 8);" return (pointer_expression "*(double **)(param_1 + 8)" * (cast_expression "(double **)(param_1 + 8)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ;) })))) (expression_statement "pdVar6 = (double *)&DAT_000002f2;" (assignment_expression "pdVar6 = (double *)&DAT_000002f2" identifier = (cast_expression "(double *)&DAT_000002f2" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000002f2" & identifier))) ;) (expression_statement "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);" (assignment_expression "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" identifier = (cast_expression "(double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" identifier + number_literal) )))) ;) (expression_statement "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);" (assignment_expression "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" identifier = (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x30b0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" identifier + number_literal) )))) ;) (expression_statement "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);" (assignment_expression "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" identifier = (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x305c)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x305c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR___assert_fail_003a9608)();" (call_expression "(*(code *)PTR___assert_fail_003a9608)()" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" identifier = identifier) ;) (expression_statement "pdVar9 = pdVar6;" (assignment_expression "pdVar9 = pdVar6" identifier = identifier) ;) (do_statement "do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);" do (compound_statement "{\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  }" { (do_statement "do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);" do (compound_statement "{\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    }" { (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" identifier = (cast_expression "(double *)(*piVar3 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + iVar10)" ( (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" * identifier) + identifier) )))) ;) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" * identifier) = (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" * identifier) * (pointer_expression "*pdVar9" * identifier)) + (pointer_expression "*pdVar1" * identifier))) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" identifier = (binary_expression "pdVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar4 + 0x3b08b0 != piVar2)" ( (binary_expression "piVar4 + 0x3b08b0 != piVar2" (binary_expression "piVar4 + 0x3b08b0" identifier + number_literal) != identifier) )) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar7;" (assignment_expression "pdVar8 = pdVar7" identifier = identifier) ;) (if_statement "if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" if (parenthesized_expression "(0 < iStack_c)" ( (binary_expression "0 < iStack_c" number_literal < identifier) )) (compound_statement "{\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" { (do_statement "do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);" do (compound_statement "{\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      }" { (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" identifier = (cast_expression "(double *)(*piVar3 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + iVar10)" ( (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" * identifier) + identifier) )))) ;) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" * identifier) = (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" * identifier) * (pointer_expression "*pdVar9" * identifier)) + (pointer_expression "*pdVar1" * identifier))) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" identifier = (binary_expression "pdVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar2 != piVar5 + iStack_c)" ( (binary_expression "piVar2 != piVar5 + iStack_c" identifier != (binary_expression "piVar5 + iStack_c" identifier + identifier)) )) ;) })) (expression_statement "pdVar9 = pdVar9 + 1;" (assignment_expression "pdVar9 = pdVar9 + 1" identifier = (binary_expression "pdVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = (int)pdVar9 - (int)pdVar6;" (assignment_expression "iVar10 = (int)pdVar9 - (int)pdVar6" identifier = (binary_expression "(int)pdVar9 - (int)pdVar6" (cast_expression "(int)pdVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pdVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pdVar6 + 0x3b08b0 != pdVar9)" ( (binary_expression "pdVar6 + 0x3b08b0 != pdVar9" (binary_expression "pdVar6 + 0x3b08b0" identifier + number_literal) != identifier) )) ;) (return_statement "return pdVar1;" return identifier ;) })))
(translation_unit "size_t GetMatrixRows(MatrixInfo *matrix_info)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (matrix_info == (MatrixInfo *)0x0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (matrix_info->signature == 0xabacadab) {\n    return matrix_info->rows;\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return (size_t)pdVar1;\n}\n\n" (function_definition "size_t GetMatrixRows(MatrixInfo *matrix_info)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (matrix_info == (MatrixInfo *)0x0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (matrix_info->signature == 0xabacadab) {\n    return matrix_info->rows;\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return (size_t)pdVar1;\n}" primitive_type (function_declarator "GetMatrixRows(MatrixInfo *matrix_info)" identifier (parameter_list "(MatrixInfo *matrix_info)" ( (parameter_declaration "MatrixInfo *matrix_info" type_identifier (pointer_declarator "*matrix_info" * identifier)) ))) (compound_statement "{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (matrix_info == (MatrixInfo *)0x0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (matrix_info->signature == 0xabacadab) {\n    return matrix_info->rows;\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return (size_t)pdVar1;\n}" { (declaration "double *pdVar1;" primitive_type (pointer_declarator "*pdVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "double *pdVar7;" primitive_type (pointer_declarator "*pdVar7" * identifier) ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "double *pdVar9;" primitive_type (pointer_declarator "*pdVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iStack_c;" primitive_type identifier ;) (if_statement "if (matrix_info == (MatrixInfo *)0x0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (matrix_info->signature == 0xabacadab) {\n    return matrix_info->rows;\n  }" if (parenthesized_expression "(matrix_info == (MatrixInfo *)0x0)" ( (binary_expression "matrix_info == (MatrixInfo *)0x0" identifier == (cast_expression "(MatrixInfo *)0x0" ( (type_descriptor "MatrixInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }" { (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x301c" identifier + number_literal) , (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" identifier + number_literal) , number_literal , (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" identifier + number_literal) ))) ;) }) (else_clause "else if (matrix_info->signature == 0xabacadab) {\n    return matrix_info->rows;\n  }" else (if_statement "if (matrix_info->signature == 0xabacadab) {\n    return matrix_info->rows;\n  }" if (parenthesized_expression "(matrix_info->signature == 0xabacadab)" ( (binary_expression "matrix_info->signature == 0xabacadab" (field_expression "matrix_info->signature" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    return matrix_info->rows;\n  }" { (return_statement "return matrix_info->rows;" return (field_expression "matrix_info->rows" identifier -> field_identifier) ;) })))) (expression_statement "pdVar6 = (double *)&DAT_000002f2;" (assignment_expression "pdVar6 = (double *)&DAT_000002f2" identifier = (cast_expression "(double *)&DAT_000002f2" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000002f2" & identifier))) ;) (expression_statement "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);" (assignment_expression "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" identifier = (cast_expression "(double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" identifier + number_literal) )))) ;) (expression_statement "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);" (assignment_expression "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" identifier = (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x30b0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" identifier + number_literal) )))) ;) (expression_statement "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);" (assignment_expression "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" identifier = (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x305c)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x305c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR___assert_fail_003a9608)();" (call_expression "(*(code *)PTR___assert_fail_003a9608)()" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" identifier = identifier) ;) (expression_statement "pdVar9 = pdVar6;" (assignment_expression "pdVar9 = pdVar6" identifier = identifier) ;) (do_statement "do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);" do (compound_statement "{\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  }" { (do_statement "do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);" do (compound_statement "{\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    }" { (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" identifier = (cast_expression "(double *)(*piVar3 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + iVar10)" ( (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" * identifier) + identifier) )))) ;) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" * identifier) = (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" * identifier) * (pointer_expression "*pdVar9" * identifier)) + (pointer_expression "*pdVar1" * identifier))) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" identifier = (binary_expression "pdVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar4 + 0x3b08b0 != piVar2)" ( (binary_expression "piVar4 + 0x3b08b0 != piVar2" (binary_expression "piVar4 + 0x3b08b0" identifier + number_literal) != identifier) )) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar7;" (assignment_expression "pdVar8 = pdVar7" identifier = identifier) ;) (if_statement "if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" if (parenthesized_expression "(0 < iStack_c)" ( (binary_expression "0 < iStack_c" number_literal < identifier) )) (compound_statement "{\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" { (do_statement "do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);" do (compound_statement "{\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      }" { (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" identifier = (cast_expression "(double *)(*piVar3 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + iVar10)" ( (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" * identifier) + identifier) )))) ;) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" * identifier) = (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" * identifier) * (pointer_expression "*pdVar9" * identifier)) + (pointer_expression "*pdVar1" * identifier))) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" identifier = (binary_expression "pdVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar2 != piVar5 + iStack_c)" ( (binary_expression "piVar2 != piVar5 + iStack_c" identifier != (binary_expression "piVar5 + iStack_c" identifier + identifier)) )) ;) })) (expression_statement "pdVar9 = pdVar9 + 1;" (assignment_expression "pdVar9 = pdVar9 + 1" identifier = (binary_expression "pdVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = (int)pdVar9 - (int)pdVar6;" (assignment_expression "iVar10 = (int)pdVar9 - (int)pdVar6" identifier = (binary_expression "(int)pdVar9 - (int)pdVar6" (cast_expression "(int)pdVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pdVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pdVar6 + 0x3b08b0 != pdVar9)" ( (binary_expression "pdVar6 + 0x3b08b0 != pdVar9" (binary_expression "pdVar6 + 0x3b08b0" identifier + number_literal) != identifier) )) ;) (return_statement "return (size_t)pdVar1;" return (cast_expression "(size_t)pdVar1" ( (type_descriptor "size_t" primitive_type) ) identifier) ;) })))
(translation_unit "double * GetMatrixRows(int param_1)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}\n\n" (function_definition "double * GetMatrixRows(int param_1)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}" primitive_type (pointer_declarator "* GetMatrixRows(int param_1)" * (function_declarator "GetMatrixRows(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) )))) (compound_statement "{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}" { (declaration "double *pdVar1;" primitive_type (pointer_declarator "*pdVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "double *pdVar7;" primitive_type (pointer_declarator "*pdVar7" * identifier) ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "double *pdVar9;" primitive_type (pointer_declarator "*pdVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iStack_c;" primitive_type identifier ;) (if_statement "if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }" { (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x301c" identifier + number_literal) , (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" identifier + number_literal) , number_literal , (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" identifier + number_literal) ))) ;) }) (else_clause "else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" else (if_statement "if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x102c) == -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x102c) == -0x54535255" (pointer_expression "*(int *)(param_1 + 0x102c)" * (cast_expression "(int *)(param_1 + 0x102c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x102c)" ( (binary_expression "param_1 + 0x102c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return *(double **)(param_1 + 8);\n  }" { (return_statement "return *(double **)(param_1 + 8);" return (pointer_expression "*(double **)(param_1 + 8)" * (cast_expression "(double **)(param_1 + 8)" ( (type_descriptor "double **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ;) })))) (expression_statement "pdVar6 = (double *)&DAT_000002f2;" (assignment_expression "pdVar6 = (double *)&DAT_000002f2" identifier = (cast_expression "(double *)&DAT_000002f2" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000002f2" & identifier))) ;) (expression_statement "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);" (assignment_expression "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" identifier = (cast_expression "(double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x2fc0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" identifier + number_literal) )))) ;) (expression_statement "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);" (assignment_expression "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" identifier = (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x30b0)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" identifier + number_literal) )))) ;) (expression_statement "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);" (assignment_expression "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" identifier = (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x305c)" ( (binary_expression "PTR_s_t_to_left_003a88e4 + -0x305c" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR___assert_fail_003a9608)();" (call_expression "(*(code *)PTR___assert_fail_003a9608)()" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" identifier = identifier) ;) (expression_statement "pdVar9 = pdVar6;" (assignment_expression "pdVar9 = pdVar6" identifier = identifier) ;) (do_statement "do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);" do (compound_statement "{\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  }" { (do_statement "do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);" do (compound_statement "{\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    }" { (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" identifier = (cast_expression "(double *)(*piVar3 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + iVar10)" ( (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" * identifier) + identifier) )))) ;) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" * identifier) = (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" * identifier) * (pointer_expression "*pdVar9" * identifier)) + (pointer_expression "*pdVar1" * identifier))) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" identifier = (binary_expression "pdVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar4 + 0x3b08b0 != piVar2)" ( (binary_expression "piVar4 + 0x3b08b0 != piVar2" (binary_expression "piVar4 + 0x3b08b0" identifier + number_literal) != identifier) )) ;) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar7;" (assignment_expression "pdVar8 = pdVar7" identifier = identifier) ;) (if_statement "if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" if (parenthesized_expression "(0 < iStack_c)" ( (binary_expression "0 < iStack_c" number_literal < identifier) )) (compound_statement "{\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" { (do_statement "do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);" do (compound_statement "{\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      }" { (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" identifier = (binary_expression "piVar3 + 1" identifier + number_literal)) ;) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" identifier = (cast_expression "(double *)(*piVar3 + iVar10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar3 + iVar10)" ( (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" * identifier) + identifier) )))) ;) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" * identifier) = (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" * identifier) * (pointer_expression "*pdVar9" * identifier)) + (pointer_expression "*pdVar1" * identifier))) ;) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" identifier = (binary_expression "pdVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar2 != piVar5 + iStack_c)" ( (binary_expression "piVar2 != piVar5 + iStack_c" identifier != (binary_expression "piVar5 + iStack_c" identifier + identifier)) )) ;) })) (expression_statement "pdVar9 = pdVar9 + 1;" (assignment_expression "pdVar9 = pdVar9 + 1" identifier = (binary_expression "pdVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = (int)pdVar9 - (int)pdVar6;" (assignment_expression "iVar10 = (int)pdVar9 - (int)pdVar6" identifier = (binary_expression "(int)pdVar9 - (int)pdVar6" (cast_expression "(int)pdVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pdVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" identifier = identifier) ;) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" identifier = identifier) ;) }) while (parenthesized_expression "(pdVar6 + 0x3b08b0 != pdVar9)" ( (binary_expression "pdVar6 + 0x3b08b0 != pdVar9" (binary_expression "pdVar6 + 0x3b08b0" identifier + number_literal) != identifier) )) ;) (return_statement "return pdVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) )))) (compound_statement { (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) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) }) (else_clause else (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 { (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) })))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) * (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 (binary_expression IDENT + LIT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) * (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 != (binary_expression IDENT + IDENT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (return_statement return IDENT ;) })))
(function_definition "double * GetMatrixRows(int param_1)\n\n{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}" (primitive_type "double") (pointer_declarator "* GetMatrixRows(int param_1)" (* "*") (function_declarator "GetMatrixRows(int param_1)" (identifier "GetMatrixRows") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")")))) (compound_statement "{\n  double *pdVar1;\n  int *piVar2;\n  int *piVar3;\n  int *piVar4;\n  int *piVar5;\n  double *pdVar6;\n  double *pdVar7;\n  double *pdVar8;\n  double *pdVar9;\n  int iVar10;\n  int iStack_c;\n  \n  if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }\n  pdVar6 = (double *)&DAT_000002f2;\n  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);\n  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);\n  (*(code *)PTR___assert_fail_003a9608)();\n  iVar10 = 0;\n  piVar3 = piVar4;\n  pdVar8 = pdVar6;\n  pdVar9 = pdVar6;\n  do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);\n  return pdVar1;\n}" ({ "{") (declaration "double *pdVar1;" (primitive_type "double") (pointer_declarator "*pdVar1" (* "*") (identifier "pdVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "double *pdVar6;" (primitive_type "double") (pointer_declarator "*pdVar6" (* "*") (identifier "pdVar6")) (; ";")) (declaration "double *pdVar7;" (primitive_type "double") (pointer_declarator "*pdVar7" (* "*") (identifier "pdVar7")) (; ";")) (declaration "double *pdVar8;" (primitive_type "double") (pointer_declarator "*pdVar8" (* "*") (identifier "pdVar8")) (; ";")) (declaration "double *pdVar9;" (primitive_type "double") (pointer_declarator "*pdVar9" (* "*") (identifier "pdVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iStack_c;" (primitive_type "int") (identifier "iStack_c") (; ";")) (if_statement "if (param_1 == 0) {\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }\n  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    (*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);\n  }" ({ "{") (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_003a9608" (* "*") (cast_expression "(code *)PTR___assert_fail_003a9608" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_003a9608"))) () ")")) (argument_list "(PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,\n               PTR_s_t_to_left_003a88e4 + -0x2fc0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x301c" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x301c")) (, ",") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x30b0")) (, ",") (number_literal "0x2f1") (, ",") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x2fc0")) () ")"))) (; ";")) (} "}")) (else_clause "else if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" (else "else") (if_statement "if (*(int *)(param_1 + 0x102c) == -0x54535255) {\n    return *(double **)(param_1 + 8);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x102c) == -0x54535255)" (( "(") (binary_expression "*(int *)(param_1 + 0x102c) == -0x54535255" (pointer_expression "*(int *)(param_1 + 0x102c)" (* "*") (cast_expression "(int *)(param_1 + 0x102c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x102c)" (( "(") (binary_expression "param_1 + 0x102c" (identifier "param_1") (+ "+") (number_literal "0x102c")) () ")")))) (== "==") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n    return *(double **)(param_1 + 8);\n  }" ({ "{") (return_statement "return *(double **)(param_1 + 8);" (return "return") (pointer_expression "*(double **)(param_1 + 8)" (* "*") (cast_expression "(double **)(param_1 + 8)" (( "(") (type_descriptor "double **" (primitive_type "double") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (; ";")) (} "}"))))) (expression_statement "pdVar6 = (double *)&DAT_000002f2;" (assignment_expression "pdVar6 = (double *)&DAT_000002f2" (identifier "pdVar6") (= "=") (cast_expression "(double *)&DAT_000002f2" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_000002f2" (& "&") (identifier "DAT_000002f2")))) (; ";")) (expression_statement "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);" (assignment_expression "pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" (identifier "pdVar7") (= "=") (cast_expression "(double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x2fc0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x2fc0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x2fc0")) () ")")))) (; ";")) (expression_statement "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);" (assignment_expression "piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" (identifier "piVar5") (= "=") (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x30b0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x30b0)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x30b0" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x30b0")) () ")")))) (; ";")) (expression_statement "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);" (assignment_expression "piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" (identifier "piVar4") (= "=") (cast_expression "(int *)(PTR_s_t_to_left_003a88e4 + -0x305c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_t_to_left_003a88e4 + -0x305c)" (( "(") (binary_expression "PTR_s_t_to_left_003a88e4 + -0x305c" (identifier "PTR_s_t_to_left_003a88e4") (+ "+") (number_literal "-0x305c")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR___assert_fail_003a9608)();" (call_expression "(*(code *)PTR___assert_fail_003a9608)()" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_003a9608" (* "*") (cast_expression "(code *)PTR___assert_fail_003a9608" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_003a9608"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" (identifier "piVar3") (= "=") (identifier "piVar4")) (; ";")) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" (identifier "pdVar8") (= "=") (identifier "pdVar6")) (; ";")) (expression_statement "pdVar9 = pdVar6;" (assignment_expression "pdVar9 = pdVar6" (identifier "pdVar9") (= "=") (identifier "pdVar6")) (; ";")) (do_statement "do {\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  } while (pdVar6 + 0x3b08b0 != pdVar9);" (do "do") (compound_statement "{\n    do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);\n    piVar3 = piVar5;\n    pdVar8 = pdVar7;\n    if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }\n    pdVar9 = pdVar9 + 1;\n    iVar10 = (int)pdVar9 - (int)pdVar6;\n    piVar3 = piVar4;\n    pdVar8 = pdVar6;\n  }" ({ "{") (do_statement "do {\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    } while (piVar4 + 0x3b08b0 != piVar2);" (do "do") (compound_statement "{\n      piVar2 = piVar3 + 1;\n      pdVar1 = (double *)(*piVar3 + iVar10);\n      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n      piVar3 = piVar2;\n      pdVar8 = pdVar8 + 1;\n    }" ({ "{") (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar3 + 1" (identifier "piVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" (identifier "pdVar1") (= "=") (cast_expression "(double *)(*piVar3 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar3 + iVar10)" (( "(") (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" (* "*") (identifier "pdVar1")) (= "=") (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" (* "*") (identifier "pdVar8")) (* "*") (pointer_expression "*pdVar9" (* "*") (identifier "pdVar9"))) (+ "+") (pointer_expression "*pdVar1" (* "*") (identifier "pdVar1")))) (; ";")) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" (identifier "piVar3") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" (identifier "pdVar8") (= "=") (binary_expression "pdVar8 + 1" (identifier "pdVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar4 + 0x3b08b0 != piVar2)" (( "(") (binary_expression "piVar4 + 0x3b08b0 != piVar2" (binary_expression "piVar4 + 0x3b08b0" (identifier "piVar4") (+ "+") (number_literal "0x3b08b0")) (!= "!=") (identifier "piVar2")) () ")")) (; ";")) (expression_statement "piVar3 = piVar5;" (assignment_expression "piVar3 = piVar5" (identifier "piVar3") (= "=") (identifier "piVar5")) (; ";")) (expression_statement "pdVar8 = pdVar7;" (assignment_expression "pdVar8 = pdVar7" (identifier "pdVar8") (= "=") (identifier "pdVar7")) (; ";")) (if_statement "if (0 < iStack_c) {\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" (if "if") (parenthesized_expression "(0 < iStack_c)" (( "(") (binary_expression "0 < iStack_c" (number_literal "0") (< "<") (identifier "iStack_c")) () ")")) (compound_statement "{\n      do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);\n    }" ({ "{") (do_statement "do {\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      } while (piVar2 != piVar5 + iStack_c);" (do "do") (compound_statement "{\n        piVar2 = piVar3 + 1;\n        pdVar1 = (double *)(*piVar3 + iVar10);\n        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;\n        piVar3 = piVar2;\n        pdVar8 = pdVar8 + 1;\n      }" ({ "{") (expression_statement "piVar2 = piVar3 + 1;" (assignment_expression "piVar2 = piVar3 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar3 + 1" (identifier "piVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pdVar1 = (double *)(*piVar3 + iVar10);" (assignment_expression "pdVar1 = (double *)(*piVar3 + iVar10)" (identifier "pdVar1") (= "=") (cast_expression "(double *)(*piVar3 + iVar10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar3 + iVar10)" (( "(") (binary_expression "*piVar3 + iVar10" (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;" (assignment_expression "*pdVar1 = *pdVar8 * *pdVar9 + *pdVar1" (pointer_expression "*pdVar1" (* "*") (identifier "pdVar1")) (= "=") (binary_expression "*pdVar8 * *pdVar9 + *pdVar1" (binary_expression "*pdVar8 * *pdVar9" (pointer_expression "*pdVar8" (* "*") (identifier "pdVar8")) (* "*") (pointer_expression "*pdVar9" (* "*") (identifier "pdVar9"))) (+ "+") (pointer_expression "*pdVar1" (* "*") (identifier "pdVar1")))) (; ";")) (expression_statement "piVar3 = piVar2;" (assignment_expression "piVar3 = piVar2" (identifier "piVar3") (= "=") (identifier "piVar2")) (; ";")) (expression_statement "pdVar8 = pdVar8 + 1;" (assignment_expression "pdVar8 = pdVar8 + 1" (identifier "pdVar8") (= "=") (binary_expression "pdVar8 + 1" (identifier "pdVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar2 != piVar5 + iStack_c)" (( "(") (binary_expression "piVar2 != piVar5 + iStack_c" (identifier "piVar2") (!= "!=") (binary_expression "piVar5 + iStack_c" (identifier "piVar5") (+ "+") (identifier "iStack_c"))) () ")")) (; ";")) (} "}"))) (expression_statement "pdVar9 = pdVar9 + 1;" (assignment_expression "pdVar9 = pdVar9 + 1" (identifier "pdVar9") (= "=") (binary_expression "pdVar9 + 1" (identifier "pdVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = (int)pdVar9 - (int)pdVar6;" (assignment_expression "iVar10 = (int)pdVar9 - (int)pdVar6" (identifier "iVar10") (= "=") (binary_expression "(int)pdVar9 - (int)pdVar6" (cast_expression "(int)pdVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar9")) (- "-") (cast_expression "(int)pdVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pdVar6")))) (; ";")) (expression_statement "piVar3 = piVar4;" (assignment_expression "piVar3 = piVar4" (identifier "piVar3") (= "=") (identifier "piVar4")) (; ";")) (expression_statement "pdVar8 = pdVar6;" (assignment_expression "pdVar8 = pdVar6" (identifier "pdVar8") (= "=") (identifier "pdVar6")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pdVar6 + 0x3b08b0 != pdVar9)" (( "(") (binary_expression "pdVar6 + 0x3b08b0 != pdVar9" (binary_expression "pdVar6 + 0x3b08b0" (identifier "pdVar6") (+ "+") (number_literal "0x3b08b0")) (!= "!=") (identifier "pdVar9")) () ")")) (; ";")) (return_statement "return pdVar1;" (return "return") (identifier "pdVar1") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (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 (return_statement (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement 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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (return_statement (identifier)))))

double * MASKED(int param_1)

{
  double *pdVar1;
  int *piVar2;
  int *piVar3;
  int *piVar4;
  int *piVar5;
  double *pdVar6;
  double *pdVar7;
  double *pdVar8;
  double *pdVar9;
  int iVar10;
  int iStack_c;
  
  if (param_1 == 0) {
    (*(code *)PTR___assert_fail_003a9608)
              (PTR_s_t_to_left_003a88e4 + -0x301c,PTR_s_t_to_left_003a88e4 + -0x30b0,0x2f1,
               PTR_s_t_to_left_003a88e4 + -0x2fc0);
  }
  else if (*(int *)(param_1 + 0x102c) == -0x54535255) {
    return *(double **)(param_1 + 8);
  }
  pdVar6 = (double *)&DAT_000002f2;
  pdVar7 = (double *)(PTR_s_t_to_left_003a88e4 + -0x2fc0);
  piVar5 = (int *)(PTR_s_t_to_left_003a88e4 + -0x30b0);
  piVar4 = (int *)(PTR_s_t_to_left_003a88e4 + -0x305c);
  (*(code *)PTR___assert_fail_003a9608)();
  iVar10 = 0;
  piVar3 = piVar4;
  pdVar8 = pdVar6;
  pdVar9 = pdVar6;
  do {
    do {
      piVar2 = piVar3 + 1;
      pdVar1 = (double *)(*piVar3 + iVar10);
      *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;
      piVar3 = piVar2;
      pdVar8 = pdVar8 + 1;
    } while (piVar4 + 0x3b08b0 != piVar2);
    piVar3 = piVar5;
    pdVar8 = pdVar7;
    if (0 < iStack_c) {
      do {
        piVar2 = piVar3 + 1;
        pdVar1 = (double *)(*piVar3 + iVar10);
        *pdVar1 = *pdVar8 * *pdVar9 + *pdVar1;
        piVar3 = piVar2;
        pdVar8 = pdVar8 + 1;
      } while (piVar2 != piVar5 + iStack_c);
    }
    pdVar9 = pdVar9 + 1;
    iVar10 = (int)pdVar9 - (int)pdVar6;
    piVar3 = piVar4;
    pdVar8 = pdVar6;
  } while (pdVar6 + 0x3b08b0 != pdVar9);
  return pdVar1;
}

