
uint64 get_file_posn(WFile *f)

{
  undefined *puVar1;
  ulong uVar2;
  int iVar3;
  int *piVar4;
  undefined4 uVar5;
  uint64 *ret;
  undefined4 *in_a1;
  undefined4 uVar6;
  undefined *puVar7;
  code *pcVar8;
  undefined8 uVar9;
  uint64 uVar10;
  uint64 uVar11;
  undefined1 auStack_f0 [24];
  uint uStack_d8;
  ulong uStack_4c;
  undefined *puStack_44;
  WFile *pWStack_40;
  code *pcStack_3c;
  undefined4 local_28;
  
  puVar1 = PTR___stack_chk_guard_000bef2c;
  uVar2 = *(ulong *)PTR___stack_chk_guard_000bef2c;
  local_28 = 1;
  uVar9 = (*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0);
  (*(code *)PTR_uint64_make_000be644)(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9);
  uVar11.lo = *(ulong *)puVar1;
  if (uVar2 == uVar11.lo) {
    uVar11.hi = (ulong)f;
    return uVar11;
  }
  pcVar8 = file_type;
  puVar7 = PTR___stack_chk_fail_000bef04;
  (*(code *)PTR___stack_chk_fail_000bef04)();
  puStack_44 = puVar1;
  uStack_4c = **(ulong **)(puVar7 + 0x2ccf0);
  pWStack_40 = f;
  pcStack_3c = pcVar8;
  iVar3 = (**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0);
  if (iVar3 < 0) {
    piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();
    if (*piVar4 == 2) {
      uVar2 = 0;
    }
    else {
      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);
      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();
      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);
      uVar2 = 0;
    }
  }
  else if ((uStack_d8 & 0xf000) == 0x8000) {
    uVar2 = 1;
  }
  else {
    uVar2 = 2;
    if ((uStack_d8 & 0xf000) != 0x4000) {
      uVar2 = 3;
    }
  }
  uVar10.lo = **(ulong **)(puVar7 + 0x2ccf0);
  if (uStack_4c != uVar10.lo) {
    pcVar8 = *(code **)(puVar7 + 0x2ccc8);
    (*pcVar8)();
    uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();
    uVar2 = uVar11.hi;
    if (uVar2 != 0) {
      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);
      *(ulong *)uVar11.hi = uVar2;
    }
    return uVar11;
  }
  uVar10.hi = uVar2;
  return uVar10;
}



int * get_file_posn(int *param_1,undefined4 *param_2)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  undefined4 uVar7;
  undefined *puVar8;
  code *pcVar9;
  undefined8 uVar10;
  undefined1 auStack_f0 [24];
  uint uStack_d8;
  int iStack_4c;
  undefined *puStack_44;
  int *piStack_40;
  code *pcStack_3c;
  undefined4 local_28;
  
  puVar1 = PTR___stack_chk_guard_000bef2c;
  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;
  local_28 = 1;
  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);
  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);
  if (iVar2 == *(int *)puVar1) {
    return param_1;
  }
  pcVar9 = file_type;
  puVar8 = PTR___stack_chk_fail_000bef04;
  (*(code *)PTR___stack_chk_fail_000bef04)();
  puStack_44 = puVar1;
  iStack_4c = **(int **)(puVar8 + 0x2ccf0);
  piStack_40 = param_1;
  pcStack_3c = pcVar9;
  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);
  if (iVar3 < 0) {
    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();
    if (*piVar6 == 2) {
      piVar6 = (int *)0x0;
    }
    else {
      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);
      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();
      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);
      piVar6 = (int *)0x0;
    }
  }
  else if ((uStack_d8 & 0xf000) == 0x8000) {
    piVar6 = (int *)0x1;
  }
  else {
    piVar6 = (int *)0x2;
    if ((uStack_d8 & 0xf000) != 0x4000) {
      piVar6 = (int *)0x3;
    }
  }
  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {
    pcVar9 = *(code **)(puVar8 + 0x2ccc8);
    (*pcVar9)();
    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();
    piVar6 = piVar5;
    if (piVar5 != (int *)0x0) {
      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);
      *piVar6 = (int)piVar5;
    }
    return piVar6;
  }
  return piVar6;
}


lui gp,0x3
addiu gp,gp,0x41d4
addu gp,gp,t9
addiu sp,sp,-0x38
sw ra,0x34(sp)
sw s1,0x30(sp)
sw s0,0x2c(sp)
sw gp,0x18(sp)
or s1,a0,zero
lw s0,-0x7444(gp)
lw v0,0x0(s0)
sw v0,0x24(sp)
lw a0,0x0(a1)
li v0,0x1
sw v0,0x10(sp)
or a3,zero,zero
or a2,zero,zero
lw t9,-0x74a4(gp)
jalr t9
_nop
lw gp,0x18(sp)
or a2,v1,zero
or a1,v0,zero
or a0,s1,zero
lw t9,-0x7d2c(gp)
jalr t9
_nop
lw gp,0x18(sp)
lw a0,0x24(sp)
lw v1,0x0(s0)
bne a0,v1,0x00092230
_or v0,s1,zero
lw ra,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x38
lw t9,-0x746c(gp)
jalr t9
_nop
(translation_unit "int * get_file_posn(int *param_1,undefined4 *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}\n\n" (function_definition "int * get_file_posn(int *param_1,undefined4 *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}" primitive_type (pointer_declarator "* get_file_posn(int *param_1,undefined4 *param_2)" * (function_declarator "get_file_posn(int *param_1,undefined4 *param_2)" identifier (parameter_list "(int *param_1,undefined4 *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [24];" type_identifier (array_declarator "auStack_f0 [24]" identifier [ number_literal ]) ;) (declaration "uint uStack_d8;" type_identifier identifier ;) (declaration "int iStack_4c;" primitive_type identifier ;) (declaration "undefined *puStack_44;" type_identifier (pointer_declarator "*puStack_44" * identifier) ;) (declaration "int *piStack_40;" primitive_type (pointer_declarator "*piStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000bef2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000bef2c" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_000bef2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000bef2c" * (cast_expression "(int *)PTR___stack_chk_guard_000bef2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);" (assignment_expression "uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0)" identifier = (call_expression "(*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0)" (parenthesized_expression "(*(code *)PTR_lseek64_000beecc)" ( (pointer_expression "*(code *)PTR_lseek64_000beecc" * (cast_expression "(code *)PTR_lseek64_000beecc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_2,param_2,0,0)" ( (pointer_expression "*param_2" * identifier) , identifier , number_literal , number_literal )))) ;) (expression_statement "(*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);" (call_expression "(*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10)" (parenthesized_expression "(*(code *)PTR_uint64_make_000be644)" ( (pointer_expression "*(code *)PTR_uint64_make_000be644" * (cast_expression "(code *)PTR_uint64_make_000be644" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10)" ( identifier , (cast_expression "(int)((ulonglong)uVar10 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "pcVar9 = file_type;" (assignment_expression "pcVar9 = file_type" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_000bef04;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000bef04" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bef04)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bef04)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bef04)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bef04" * (cast_expression "(code *)PTR___stack_chk_fail_000bef04" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_44 = puVar1;" (assignment_expression "puStack_44 = puVar1" identifier = identifier) ;) (expression_statement "iStack_4c = **(int **)(puVar8 + 0x2ccf0);" (assignment_expression "iStack_4c = **(int **)(puVar8 + 0x2ccf0)" identifier = (pointer_expression "**(int **)(puVar8 + 0x2ccf0)" * (pointer_expression "*(int **)(puVar8 + 0x2ccf0)" * (cast_expression "(int **)(puVar8 + 0x2ccf0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2ccf0)" ( (binary_expression "puVar8 + 0x2ccf0" identifier + number_literal) )))))) ;) (expression_statement "piStack_40 = param_1;" (assignment_expression "piStack_40 = param_1" identifier = identifier) ;) (expression_statement "pcStack_3c = pcVar9;" (assignment_expression "pcStack_3c = pcVar9" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);" (assignment_expression "iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0)" identifier = (call_expression "(**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0)" (parenthesized_expression "(**(code **)(puVar8 + 0x2cb4c))" ( (pointer_expression "**(code **)(puVar8 + 0x2cb4c)" * (pointer_expression "*(code **)(puVar8 + 0x2cb4c)" * (cast_expression "(code **)(puVar8 + 0x2cb4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cb4c)" ( (binary_expression "puVar8 + 0x2cb4c" identifier + number_literal) ))))) )) (argument_list "(3,iVar2,auStack_f0)" ( number_literal , identifier , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }" { (expression_statement "piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();" (assignment_expression "piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))()" identifier = (cast_expression "(int *)(**(code **)(puVar8 + 0x2cc00))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar8 + 0x2cc00))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2cc00))" ( (pointer_expression "**(code **)(puVar8 + 0x2cc00)" * (pointer_expression "*(code **)(puVar8 + 0x2cc00)" * (cast_expression "(code **)(puVar8 + 0x2cc00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cc00)" ( (binary_expression "puVar8 + 0x2cc00" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (if_statement "if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" if (parenthesized_expression "(*piVar6 == 2)" ( (binary_expression "*piVar6 == 2" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n      piVar6 = (int *)0x0;\n    }" { (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" else (compound_statement "{\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" { (expression_statement "uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);" (assignment_expression "uVar7 = **(undefined4 **)(puVar8 + 0x2cd08)" identifier = (pointer_expression "**(undefined4 **)(puVar8 + 0x2cd08)" * (pointer_expression "*(undefined4 **)(puVar8 + 0x2cd08)" * (cast_expression "(undefined4 **)(puVar8 + 0x2cd08)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cd08)" ( (binary_expression "puVar8 + 0x2cd08" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = (**(code **)(puVar8 + 0x2cc6c))();" (assignment_expression "uVar4 = (**(code **)(puVar8 + 0x2cc6c))()" identifier = (call_expression "(**(code **)(puVar8 + 0x2cc6c))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2cc6c))" ( (pointer_expression "**(code **)(puVar8 + 0x2cc6c)" * (pointer_expression "*(code **)(puVar8 + 0x2cc6c)" * (cast_expression "(code **)(puVar8 + 0x2cc6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cc6c)" ( (binary_expression "puVar8 + 0x2cc6c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "(**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);" (call_expression "(**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4)" (parenthesized_expression "(**(code **)(puVar8 + 0x2cb6c))" ( (pointer_expression "**(code **)(puVar8 + 0x2cb6c)" * (pointer_expression "*(code **)(puVar8 + 0x2cb6c)" * (cast_expression "(code **)(puVar8 + 0x2cb6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cb6c)" ( (binary_expression "puVar8 + 0x2cb6c" identifier + number_literal) ))))) )) (argument_list "(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4)" ( identifier , number_literal , (binary_expression "*(int *)(puVar8 + 0x2c208) + -0x4454" (pointer_expression "*(int *)(puVar8 + 0x2c208)" * (cast_expression "(int *)(puVar8 + 0x2c208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2c208)" ( (binary_expression "puVar8 + 0x2c208" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" else (if_statement "if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" if (parenthesized_expression "((uStack_d8 & 0xf000) == 0x8000)" ( (binary_expression "(uStack_d8 & 0xf000) == 0x8000" (parenthesized_expression "(uStack_d8 & 0xf000)" ( (binary_expression "uStack_d8 & 0xf000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    piVar6 = (int *)0x1;\n  }" { (expression_statement "piVar6 = (int *)0x1;" (assignment_expression "piVar6 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" else (compound_statement "{\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" { (expression_statement "piVar6 = (int *)0x2;" (assignment_expression "piVar6 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }" if (parenthesized_expression "((uStack_d8 & 0xf000) != 0x4000)" ( (binary_expression "(uStack_d8 & 0xf000) != 0x4000" (parenthesized_expression "(uStack_d8 & 0xf000)" ( (binary_expression "uStack_d8 & 0xf000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar6 = (int *)0x3;\n    }" { (expression_statement "piVar6 = (int *)0x3;" (assignment_expression "piVar6 = (int *)0x3" identifier = (cast_expression "(int *)0x3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (if_statement "if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }" if (parenthesized_expression "(iStack_4c != **(int **)(puVar8 + 0x2ccf0))" ( (binary_expression "iStack_4c != **(int **)(puVar8 + 0x2ccf0)" identifier != (pointer_expression "**(int **)(puVar8 + 0x2ccf0)" * (pointer_expression "*(int **)(puVar8 + 0x2ccf0)" * (cast_expression "(int **)(puVar8 + 0x2ccf0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2ccf0)" ( (binary_expression "puVar8 + 0x2ccf0" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }" { (expression_statement "pcVar9 = *(code **)(puVar8 + 0x2ccc8);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x2ccc8)" identifier = (pointer_expression "*(code **)(puVar8 + 0x2ccc8)" * (cast_expression "(code **)(puVar8 + 0x2ccc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2ccc8)" ( (binary_expression "puVar8 + 0x2ccc8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))()" identifier = (cast_expression "(int *)(**(code **)(pcVar9 + 0x2ca10))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar9 + 0x2ca10))()" (parenthesized_expression "(**(code **)(pcVar9 + 0x2ca10))" ( (pointer_expression "**(code **)(pcVar9 + 0x2ca10)" * (pointer_expression "*(code **)(pcVar9 + 0x2ca10)" * (cast_expression "(code **)(pcVar9 + 0x2ca10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2ca10)" ( (binary_expression "pcVar9 + 0x2ca10" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" identifier = identifier) ;) (if_statement "if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }" { (expression_statement "piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);" (assignment_expression "piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4)" identifier = (cast_expression "(int *)(**(code **)(pcVar9 + 0x2c080))(1,4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar9 + 0x2c080))(1,4)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2c080))" ( (pointer_expression "**(code **)(pcVar9 + 0x2c080)" * (pointer_expression "*(code **)(pcVar9 + 0x2c080)" * (cast_expression "(code **)(pcVar9 + 0x2c080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2c080)" ( (binary_expression "pcVar9 + 0x2c080" identifier + number_literal) ))))) )) (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "*piVar6 = (int)piVar5;" (assignment_expression "*piVar6 = (int)piVar5" (pointer_expression "*piVar6" * identifier) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (return_statement "return piVar6;" return identifier ;) })) (return_statement "return piVar6;" return identifier ;) })))
(translation_unit "uint64 get_file_posn(WFile *f)\n\n{\n  undefined *puVar1;\n  ulong uVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  uint64 *ret;\n  undefined4 *in_a1;\n  undefined4 uVar6;\n  undefined *puVar7;\n  code *pcVar8;\n  undefined8 uVar9;\n  uint64 uVar10;\n  uint64 uVar11;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  ulong uStack_4c;\n  undefined *puStack_44;\n  WFile *pWStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  uVar2 = *(ulong *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar9 = (*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0);\n  (*(code *)PTR_uint64_make_000be644)(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9);\n  uVar11.lo = *(ulong *)puVar1;\n  if (uVar2 == uVar11.lo) {\n    uVar11.hi = (ulong)f;\n    return uVar11;\n  }\n  pcVar8 = file_type;\n  puVar7 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  uStack_4c = **(ulong **)(puVar7 + 0x2ccf0);\n  pWStack_40 = f;\n  pcStack_3c = pcVar8;\n  iVar3 = (**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();\n    if (*piVar4 == 2) {\n      uVar2 = 0;\n    }\n    else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    uVar2 = 1;\n  }\n  else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }\n  uVar10.lo = **(ulong **)(puVar7 + 0x2ccf0);\n  if (uStack_4c != uVar10.lo) {\n    pcVar8 = *(code **)(puVar7 + 0x2ccc8);\n    (*pcVar8)();\n    uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();\n    uVar2 = uVar11.hi;\n    if (uVar2 != 0) {\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }\n    return uVar11;\n  }\n  uVar10.hi = uVar2;\n  return uVar10;\n}\n\n" (function_definition "uint64 get_file_posn(WFile *f)\n\n{\n  undefined *puVar1;\n  ulong uVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  uint64 *ret;\n  undefined4 *in_a1;\n  undefined4 uVar6;\n  undefined *puVar7;\n  code *pcVar8;\n  undefined8 uVar9;\n  uint64 uVar10;\n  uint64 uVar11;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  ulong uStack_4c;\n  undefined *puStack_44;\n  WFile *pWStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  uVar2 = *(ulong *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar9 = (*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0);\n  (*(code *)PTR_uint64_make_000be644)(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9);\n  uVar11.lo = *(ulong *)puVar1;\n  if (uVar2 == uVar11.lo) {\n    uVar11.hi = (ulong)f;\n    return uVar11;\n  }\n  pcVar8 = file_type;\n  puVar7 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  uStack_4c = **(ulong **)(puVar7 + 0x2ccf0);\n  pWStack_40 = f;\n  pcStack_3c = pcVar8;\n  iVar3 = (**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();\n    if (*piVar4 == 2) {\n      uVar2 = 0;\n    }\n    else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    uVar2 = 1;\n  }\n  else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }\n  uVar10.lo = **(ulong **)(puVar7 + 0x2ccf0);\n  if (uStack_4c != uVar10.lo) {\n    pcVar8 = *(code **)(puVar7 + 0x2ccc8);\n    (*pcVar8)();\n    uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();\n    uVar2 = uVar11.hi;\n    if (uVar2 != 0) {\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }\n    return uVar11;\n  }\n  uVar10.hi = uVar2;\n  return uVar10;\n}" type_identifier (function_declarator "get_file_posn(WFile *f)" identifier (parameter_list "(WFile *f)" ( (parameter_declaration "WFile *f" type_identifier (pointer_declarator "*f" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  ulong uVar2;\n  int iVar3;\n  int *piVar4;\n  undefined4 uVar5;\n  uint64 *ret;\n  undefined4 *in_a1;\n  undefined4 uVar6;\n  undefined *puVar7;\n  code *pcVar8;\n  undefined8 uVar9;\n  uint64 uVar10;\n  uint64 uVar11;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  ulong uStack_4c;\n  undefined *puStack_44;\n  WFile *pWStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  uVar2 = *(ulong *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar9 = (*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0);\n  (*(code *)PTR_uint64_make_000be644)(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9);\n  uVar11.lo = *(ulong *)puVar1;\n  if (uVar2 == uVar11.lo) {\n    uVar11.hi = (ulong)f;\n    return uVar11;\n  }\n  pcVar8 = file_type;\n  puVar7 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  uStack_4c = **(ulong **)(puVar7 + 0x2ccf0);\n  pWStack_40 = f;\n  pcStack_3c = pcVar8;\n  iVar3 = (**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();\n    if (*piVar4 == 2) {\n      uVar2 = 0;\n    }\n    else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    uVar2 = 1;\n  }\n  else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }\n  uVar10.lo = **(ulong **)(puVar7 + 0x2ccf0);\n  if (uStack_4c != uVar10.lo) {\n    pcVar8 = *(code **)(puVar7 + 0x2ccc8);\n    (*pcVar8)();\n    uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();\n    uVar2 = uVar11.hi;\n    if (uVar2 != 0) {\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }\n    return uVar11;\n  }\n  uVar10.hi = uVar2;\n  return uVar10;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "uint64 *ret;" type_identifier (pointer_declarator "*ret" * identifier) ;) (declaration "undefined4 *in_a1;" type_identifier (pointer_declarator "*in_a1" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "uint64 uVar10;" type_identifier identifier ;) (declaration "uint64 uVar11;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [24];" type_identifier (array_declarator "auStack_f0 [24]" identifier [ number_literal ]) ;) (declaration "uint uStack_d8;" type_identifier identifier ;) (declaration "ulong uStack_4c;" type_identifier identifier ;) (declaration "undefined *puStack_44;" type_identifier (pointer_declarator "*puStack_44" * identifier) ;) (declaration "WFile *pWStack_40;" type_identifier (pointer_declarator "*pWStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000bef2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000bef2c" identifier = identifier) ;) (expression_statement "uVar2 = *(ulong *)PTR___stack_chk_guard_000bef2c;" (assignment_expression "uVar2 = *(ulong *)PTR___stack_chk_guard_000bef2c" identifier = (pointer_expression "*(ulong *)PTR___stack_chk_guard_000bef2c" * (cast_expression "(ulong *)PTR___stack_chk_guard_000bef2c" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar9 = (*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0);" (assignment_expression "uVar9 = (*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0)" identifier = (call_expression "(*(code *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0)" (parenthesized_expression "(*(code *)PTR_lseek64_000beecc)" ( (pointer_expression "*(code *)PTR_lseek64_000beecc" * (cast_expression "(code *)PTR_lseek64_000beecc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*in_a1,in_a1,0,0)" ( (pointer_expression "*in_a1" * identifier) , identifier , number_literal , number_literal )))) ;) (expression_statement "(*(code *)PTR_uint64_make_000be644)(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9);" (call_expression "(*(code *)PTR_uint64_make_000be644)(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9)" (parenthesized_expression "(*(code *)PTR_uint64_make_000be644)" ( (pointer_expression "*(code *)PTR_uint64_make_000be644" * (cast_expression "(code *)PTR_uint64_make_000be644" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(f,(int)((ulonglong)uVar9 >> 0x20),(int)uVar9)" ( identifier , (cast_expression "(int)((ulonglong)uVar9 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar9 >> 0x20)" ( (binary_expression "(ulonglong)uVar9 >> 0x20" (cast_expression "(ulonglong)uVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "uVar11.lo = *(ulong *)puVar1;" (assignment_expression "uVar11.lo = *(ulong *)puVar1" (field_expression "uVar11.lo" identifier . field_identifier) = (pointer_expression "*(ulong *)puVar1" * (cast_expression "(ulong *)puVar1" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (uVar2 == uVar11.lo) {\n    uVar11.hi = (ulong)f;\n    return uVar11;\n  }" if (parenthesized_expression "(uVar2 == uVar11.lo)" ( (binary_expression "uVar2 == uVar11.lo" identifier == (field_expression "uVar11.lo" identifier . field_identifier)) )) (compound_statement "{\n    uVar11.hi = (ulong)f;\n    return uVar11;\n  }" { (expression_statement "uVar11.hi = (ulong)f;" (assignment_expression "uVar11.hi = (ulong)f" (field_expression "uVar11.hi" identifier . field_identifier) = (cast_expression "(ulong)f" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (return_statement "return uVar11;" return identifier ;) })) (expression_statement "pcVar8 = file_type;" (assignment_expression "pcVar8 = file_type" identifier = identifier) ;) (expression_statement "puVar7 = PTR___stack_chk_fail_000bef04;" (assignment_expression "puVar7 = PTR___stack_chk_fail_000bef04" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bef04)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bef04)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bef04)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bef04" * (cast_expression "(code *)PTR___stack_chk_fail_000bef04" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_44 = puVar1;" (assignment_expression "puStack_44 = puVar1" identifier = identifier) ;) (expression_statement "uStack_4c = **(ulong **)(puVar7 + 0x2ccf0);" (assignment_expression "uStack_4c = **(ulong **)(puVar7 + 0x2ccf0)" identifier = (pointer_expression "**(ulong **)(puVar7 + 0x2ccf0)" * (pointer_expression "*(ulong **)(puVar7 + 0x2ccf0)" * (cast_expression "(ulong **)(puVar7 + 0x2ccf0)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2ccf0)" ( (binary_expression "puVar7 + 0x2ccf0" identifier + number_literal) )))))) ;) (expression_statement "pWStack_40 = f;" (assignment_expression "pWStack_40 = f" identifier = identifier) ;) (expression_statement "pcStack_3c = pcVar8;" (assignment_expression "pcStack_3c = pcVar8" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0);" (assignment_expression "iVar3 = (**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0)" identifier = (call_expression "(**(code **)(puVar7 + 0x2cb4c))(3,uVar2,auStack_f0)" (parenthesized_expression "(**(code **)(puVar7 + 0x2cb4c))" ( (pointer_expression "**(code **)(puVar7 + 0x2cb4c)" * (pointer_expression "*(code **)(puVar7 + 0x2cb4c)" * (cast_expression "(code **)(puVar7 + 0x2cb4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2cb4c)" ( (binary_expression "puVar7 + 0x2cb4c" identifier + number_literal) ))))) )) (argument_list "(3,uVar2,auStack_f0)" ( number_literal , identifier , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n    piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();\n    if (*piVar4 == 2) {\n      uVar2 = 0;\n    }\n    else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    uVar2 = 1;\n  }\n  else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();\n    if (*piVar4 == 2) {\n      uVar2 = 0;\n    }\n    else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }\n  }" { (expression_statement "piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))();" (assignment_expression "piVar4 = (int *)(**(code **)(puVar7 + 0x2cc00))()" identifier = (cast_expression "(int *)(**(code **)(puVar7 + 0x2cc00))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar7 + 0x2cc00))()" (parenthesized_expression "(**(code **)(puVar7 + 0x2cc00))" ( (pointer_expression "**(code **)(puVar7 + 0x2cc00)" * (pointer_expression "*(code **)(puVar7 + 0x2cc00)" * (cast_expression "(code **)(puVar7 + 0x2cc00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2cc00)" ( (binary_expression "puVar7 + 0x2cc00" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (if_statement "if (*piVar4 == 2) {\n      uVar2 = 0;\n    }\n    else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }" if (parenthesized_expression "(*piVar4 == 2)" ( (binary_expression "*piVar4 == 2" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n      uVar2 = 0;\n    }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }" else (compound_statement "{\n      uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);\n      uVar5 = (**(code **)(puVar7 + 0x2cc6c))();\n      (**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);\n      uVar2 = 0;\n    }" { (expression_statement "uVar6 = **(undefined4 **)(puVar7 + 0x2cd08);" (assignment_expression "uVar6 = **(undefined4 **)(puVar7 + 0x2cd08)" identifier = (pointer_expression "**(undefined4 **)(puVar7 + 0x2cd08)" * (pointer_expression "*(undefined4 **)(puVar7 + 0x2cd08)" * (cast_expression "(undefined4 **)(puVar7 + 0x2cd08)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2cd08)" ( (binary_expression "puVar7 + 0x2cd08" identifier + number_literal) )))))) ;) (expression_statement "uVar5 = (**(code **)(puVar7 + 0x2cc6c))();" (assignment_expression "uVar5 = (**(code **)(puVar7 + 0x2cc6c))()" identifier = (call_expression "(**(code **)(puVar7 + 0x2cc6c))()" (parenthesized_expression "(**(code **)(puVar7 + 0x2cc6c))" ( (pointer_expression "**(code **)(puVar7 + 0x2cc6c)" * (pointer_expression "*(code **)(puVar7 + 0x2cc6c)" * (cast_expression "(code **)(puVar7 + 0x2cc6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2cc6c)" ( (binary_expression "puVar7 + 0x2cc6c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "(**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5);" (call_expression "(**(code **)(puVar7 + 0x2cb6c))(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5)" (parenthesized_expression "(**(code **)(puVar7 + 0x2cb6c))" ( (pointer_expression "**(code **)(puVar7 + 0x2cb6c)" * (pointer_expression "*(code **)(puVar7 + 0x2cb6c)" * (cast_expression "(code **)(puVar7 + 0x2cb6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2cb6c)" ( (binary_expression "puVar7 + 0x2cb6c" identifier + number_literal) ))))) )) (argument_list "(uVar6,1,*(int *)(puVar7 + 0x2c208) + -0x4454,uVar2,uVar5)" ( identifier , number_literal , (binary_expression "*(int *)(puVar7 + 0x2c208) + -0x4454" (pointer_expression "*(int *)(puVar7 + 0x2c208)" * (cast_expression "(int *)(puVar7 + 0x2c208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 0x2c208)" ( (binary_expression "puVar7 + 0x2c208" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) }))) }) (else_clause "else if ((uStack_d8 & 0xf000) == 0x8000) {\n    uVar2 = 1;\n  }\n  else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }" else (if_statement "if ((uStack_d8 & 0xf000) == 0x8000) {\n    uVar2 = 1;\n  }\n  else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }" if (parenthesized_expression "((uStack_d8 & 0xf000) == 0x8000)" ( (binary_expression "(uStack_d8 & 0xf000) == 0x8000" (parenthesized_expression "(uStack_d8 & 0xf000)" ( (binary_expression "uStack_d8 & 0xf000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar2 = 1;\n  }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }" else (compound_statement "{\n    uVar2 = 2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }\n  }" { (expression_statement "uVar2 = 2;" (assignment_expression "uVar2 = 2" identifier = number_literal) ;) (if_statement "if ((uStack_d8 & 0xf000) != 0x4000) {\n      uVar2 = 3;\n    }" if (parenthesized_expression "((uStack_d8 & 0xf000) != 0x4000)" ( (binary_expression "(uStack_d8 & 0xf000) != 0x4000" (parenthesized_expression "(uStack_d8 & 0xf000)" ( (binary_expression "uStack_d8 & 0xf000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar2 = 3;\n    }" { (expression_statement "uVar2 = 3;" (assignment_expression "uVar2 = 3" identifier = number_literal) ;) })) }))))) (expression_statement "uVar10.lo = **(ulong **)(puVar7 + 0x2ccf0);" (assignment_expression "uVar10.lo = **(ulong **)(puVar7 + 0x2ccf0)" (field_expression "uVar10.lo" identifier . field_identifier) = (pointer_expression "**(ulong **)(puVar7 + 0x2ccf0)" * (pointer_expression "*(ulong **)(puVar7 + 0x2ccf0)" * (cast_expression "(ulong **)(puVar7 + 0x2ccf0)" ( (type_descriptor "ulong **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2ccf0)" ( (binary_expression "puVar7 + 0x2ccf0" identifier + number_literal) )))))) ;) (if_statement "if (uStack_4c != uVar10.lo) {\n    pcVar8 = *(code **)(puVar7 + 0x2ccc8);\n    (*pcVar8)();\n    uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();\n    uVar2 = uVar11.hi;\n    if (uVar2 != 0) {\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }\n    return uVar11;\n  }" if (parenthesized_expression "(uStack_4c != uVar10.lo)" ( (binary_expression "uStack_4c != uVar10.lo" identifier != (field_expression "uVar10.lo" identifier . field_identifier)) )) (compound_statement "{\n    pcVar8 = *(code **)(puVar7 + 0x2ccc8);\n    (*pcVar8)();\n    uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();\n    uVar2 = uVar11.hi;\n    if (uVar2 != 0) {\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }\n    return uVar11;\n  }" { (expression_statement "pcVar8 = *(code **)(puVar7 + 0x2ccc8);" (assignment_expression "pcVar8 = *(code **)(puVar7 + 0x2ccc8)" identifier = (pointer_expression "*(code **)(puVar7 + 0x2ccc8)" * (cast_expression "(code **)(puVar7 + 0x2ccc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0x2ccc8)" ( (binary_expression "puVar7 + 0x2ccc8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar8)();" (call_expression "(*pcVar8)()" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))();" (assignment_expression "uVar11 = (uint64)(**(code **)(pcVar8 + 0x2ca10))()" identifier = (call_expression "(uint64)(**(code **)(pcVar8 + 0x2ca10))()" (call_expression "(uint64)(**(code **)(pcVar8 + 0x2ca10))" (parenthesized_expression "(uint64)" ( identifier )) (argument_list "(**(code **)(pcVar8 + 0x2ca10))" ( (pointer_expression "**(code **)(pcVar8 + 0x2ca10)" * (pointer_expression "*(code **)(pcVar8 + 0x2ca10)" * (cast_expression "(code **)(pcVar8 + 0x2ca10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar8 + 0x2ca10)" ( (binary_expression "pcVar8 + 0x2ca10" identifier + number_literal) ))))) ))) (argument_list "()" ( )))) ;) (expression_statement "uVar2 = uVar11.hi;" (assignment_expression "uVar2 = uVar11.hi" identifier = (field_expression "uVar11.hi" identifier . field_identifier)) ;) (if_statement "if (uVar2 != 0) {\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);\n      *(ulong *)uVar11.hi = uVar2;\n    }" { (expression_statement "uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4);" (assignment_expression "uVar11 = (uint64)(**(code **)(pcVar8 + 0x2c080))(1,4)" identifier = (call_expression "(uint64)(**(code **)(pcVar8 + 0x2c080))(1,4)" (call_expression "(uint64)(**(code **)(pcVar8 + 0x2c080))" (parenthesized_expression "(uint64)" ( identifier )) (argument_list "(**(code **)(pcVar8 + 0x2c080))" ( (pointer_expression "**(code **)(pcVar8 + 0x2c080)" * (pointer_expression "*(code **)(pcVar8 + 0x2c080)" * (cast_expression "(code **)(pcVar8 + 0x2c080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar8 + 0x2c080)" ( (binary_expression "pcVar8 + 0x2c080" identifier + number_literal) ))))) ))) (argument_list "(1,4)" ( number_literal , number_literal )))) ;) (expression_statement "*(ulong *)uVar11.hi = uVar2;" (assignment_expression "*(ulong *)uVar11.hi = uVar2" (pointer_expression "*(ulong *)uVar11.hi" * (cast_expression "(ulong *)uVar11.hi" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "uVar11.hi" identifier . field_identifier))) = identifier) ;) })) (return_statement "return uVar11;" return identifier ;) })) (expression_statement "uVar10.hi = uVar2;" (assignment_expression "uVar10.hi = uVar2" (field_expression "uVar10.hi" identifier . field_identifier) = identifier) ;) (return_statement "return uVar10;" return identifier ;) })))
(translation_unit "int * get_file_posn(int *param_1,undefined4 *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}\n\n" (function_definition "int * get_file_posn(int *param_1,undefined4 *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}" primitive_type (pointer_declarator "* get_file_posn(int *param_1,undefined4 *param_2)" * (function_declarator "get_file_posn(int *param_1,undefined4 *param_2)" identifier (parameter_list "(int *param_1,undefined4 *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "code *pcVar9;" type_identifier (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "undefined1 auStack_f0 [24];" type_identifier (array_declarator "auStack_f0 [24]" identifier [ number_literal ]) ;) (declaration "uint uStack_d8;" type_identifier identifier ;) (declaration "int iStack_4c;" primitive_type identifier ;) (declaration "undefined *puStack_44;" type_identifier (pointer_declarator "*puStack_44" * identifier) ;) (declaration "int *piStack_40;" primitive_type (pointer_declarator "*piStack_40" * identifier) ;) (declaration "code *pcStack_3c;" type_identifier (pointer_declarator "*pcStack_3c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000bef2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000bef2c" identifier = identifier) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_000bef2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000bef2c" * (cast_expression "(int *)PTR___stack_chk_guard_000bef2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" identifier = number_literal) ;) (expression_statement "uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);" (assignment_expression "uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0)" identifier = (call_expression "(*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0)" (parenthesized_expression "(*(code *)PTR_lseek64_000beecc)" ( (pointer_expression "*(code *)PTR_lseek64_000beecc" * (cast_expression "(code *)PTR_lseek64_000beecc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_2,param_2,0,0)" ( (pointer_expression "*param_2" * identifier) , identifier , number_literal , number_literal )))) ;) (expression_statement "(*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);" (call_expression "(*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10)" (parenthesized_expression "(*(code *)PTR_uint64_make_000be644)" ( (pointer_expression "*(code *)PTR_uint64_make_000be644" * (cast_expression "(code *)PTR_uint64_make_000be644" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10)" ( identifier , (cast_expression "(int)((ulonglong)uVar10 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) , (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (if_statement "if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "pcVar9 = file_type;" (assignment_expression "pcVar9 = file_type" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_000bef04;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000bef04" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000bef04)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bef04)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bef04)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000bef04" * (cast_expression "(code *)PTR___stack_chk_fail_000bef04" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puStack_44 = puVar1;" (assignment_expression "puStack_44 = puVar1" identifier = identifier) ;) (expression_statement "iStack_4c = **(int **)(puVar8 + 0x2ccf0);" (assignment_expression "iStack_4c = **(int **)(puVar8 + 0x2ccf0)" identifier = (pointer_expression "**(int **)(puVar8 + 0x2ccf0)" * (pointer_expression "*(int **)(puVar8 + 0x2ccf0)" * (cast_expression "(int **)(puVar8 + 0x2ccf0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2ccf0)" ( (binary_expression "puVar8 + 0x2ccf0" identifier + number_literal) )))))) ;) (expression_statement "piStack_40 = param_1;" (assignment_expression "piStack_40 = param_1" identifier = identifier) ;) (expression_statement "pcStack_3c = pcVar9;" (assignment_expression "pcStack_3c = pcVar9" identifier = identifier) ;) (expression_statement "iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);" (assignment_expression "iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0)" identifier = (call_expression "(**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0)" (parenthesized_expression "(**(code **)(puVar8 + 0x2cb4c))" ( (pointer_expression "**(code **)(puVar8 + 0x2cb4c)" * (pointer_expression "*(code **)(puVar8 + 0x2cb4c)" * (cast_expression "(code **)(puVar8 + 0x2cb4c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cb4c)" ( (binary_expression "puVar8 + 0x2cb4c" identifier + number_literal) ))))) )) (argument_list "(3,iVar2,auStack_f0)" ( number_literal , identifier , identifier )))) ;) (if_statement "if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }" { (expression_statement "piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();" (assignment_expression "piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))()" identifier = (cast_expression "(int *)(**(code **)(puVar8 + 0x2cc00))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar8 + 0x2cc00))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2cc00))" ( (pointer_expression "**(code **)(puVar8 + 0x2cc00)" * (pointer_expression "*(code **)(puVar8 + 0x2cc00)" * (cast_expression "(code **)(puVar8 + 0x2cc00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cc00)" ( (binary_expression "puVar8 + 0x2cc00" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (if_statement "if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" if (parenthesized_expression "(*piVar6 == 2)" ( (binary_expression "*piVar6 == 2" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n      piVar6 = (int *)0x0;\n    }" { (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" else (compound_statement "{\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" { (expression_statement "uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);" (assignment_expression "uVar7 = **(undefined4 **)(puVar8 + 0x2cd08)" identifier = (pointer_expression "**(undefined4 **)(puVar8 + 0x2cd08)" * (pointer_expression "*(undefined4 **)(puVar8 + 0x2cd08)" * (cast_expression "(undefined4 **)(puVar8 + 0x2cd08)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cd08)" ( (binary_expression "puVar8 + 0x2cd08" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = (**(code **)(puVar8 + 0x2cc6c))();" (assignment_expression "uVar4 = (**(code **)(puVar8 + 0x2cc6c))()" identifier = (call_expression "(**(code **)(puVar8 + 0x2cc6c))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2cc6c))" ( (pointer_expression "**(code **)(puVar8 + 0x2cc6c)" * (pointer_expression "*(code **)(puVar8 + 0x2cc6c)" * (cast_expression "(code **)(puVar8 + 0x2cc6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cc6c)" ( (binary_expression "puVar8 + 0x2cc6c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "(**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);" (call_expression "(**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4)" (parenthesized_expression "(**(code **)(puVar8 + 0x2cb6c))" ( (pointer_expression "**(code **)(puVar8 + 0x2cb6c)" * (pointer_expression "*(code **)(puVar8 + 0x2cb6c)" * (cast_expression "(code **)(puVar8 + 0x2cb6c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2cb6c)" ( (binary_expression "puVar8 + 0x2cb6c" identifier + number_literal) ))))) )) (argument_list "(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4)" ( identifier , number_literal , (binary_expression "*(int *)(puVar8 + 0x2c208) + -0x4454" (pointer_expression "*(int *)(puVar8 + 0x2c208)" * (cast_expression "(int *)(puVar8 + 0x2c208)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 0x2c208)" ( (binary_expression "puVar8 + 0x2c208" identifier + number_literal) )))) + number_literal) , identifier , identifier ))) ;) (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" else (if_statement "if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" if (parenthesized_expression "((uStack_d8 & 0xf000) == 0x8000)" ( (binary_expression "(uStack_d8 & 0xf000) == 0x8000" (parenthesized_expression "(uStack_d8 & 0xf000)" ( (binary_expression "uStack_d8 & 0xf000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    piVar6 = (int *)0x1;\n  }" { (expression_statement "piVar6 = (int *)0x1;" (assignment_expression "piVar6 = (int *)0x1" identifier = (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" else (compound_statement "{\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" { (expression_statement "piVar6 = (int *)0x2;" (assignment_expression "piVar6 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }" if (parenthesized_expression "((uStack_d8 & 0xf000) != 0x4000)" ( (binary_expression "(uStack_d8 & 0xf000) != 0x4000" (parenthesized_expression "(uStack_d8 & 0xf000)" ( (binary_expression "uStack_d8 & 0xf000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      piVar6 = (int *)0x3;\n    }" { (expression_statement "piVar6 = (int *)0x3;" (assignment_expression "piVar6 = (int *)0x3" identifier = (cast_expression "(int *)0x3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) }))))) (if_statement "if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }" if (parenthesized_expression "(iStack_4c != **(int **)(puVar8 + 0x2ccf0))" ( (binary_expression "iStack_4c != **(int **)(puVar8 + 0x2ccf0)" identifier != (pointer_expression "**(int **)(puVar8 + 0x2ccf0)" * (pointer_expression "*(int **)(puVar8 + 0x2ccf0)" * (cast_expression "(int **)(puVar8 + 0x2ccf0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2ccf0)" ( (binary_expression "puVar8 + 0x2ccf0" identifier + number_literal) )))))) )) (compound_statement "{\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }" { (expression_statement "pcVar9 = *(code **)(puVar8 + 0x2ccc8);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x2ccc8)" identifier = (pointer_expression "*(code **)(puVar8 + 0x2ccc8)" * (cast_expression "(code **)(puVar8 + 0x2ccc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar8 + 0x2ccc8)" ( (binary_expression "puVar8 + 0x2ccc8" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" ( (pointer_expression "*pcVar9" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))()" identifier = (cast_expression "(int *)(**(code **)(pcVar9 + 0x2ca10))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar9 + 0x2ca10))()" (parenthesized_expression "(**(code **)(pcVar9 + 0x2ca10))" ( (pointer_expression "**(code **)(pcVar9 + 0x2ca10)" * (pointer_expression "*(code **)(pcVar9 + 0x2ca10)" * (cast_expression "(code **)(pcVar9 + 0x2ca10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2ca10)" ( (binary_expression "pcVar9 + 0x2ca10" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" identifier = identifier) ;) (if_statement "if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }" if (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }" { (expression_statement "piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);" (assignment_expression "piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4)" identifier = (cast_expression "(int *)(**(code **)(pcVar9 + 0x2c080))(1,4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(pcVar9 + 0x2c080))(1,4)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2c080))" ( (pointer_expression "**(code **)(pcVar9 + 0x2c080)" * (pointer_expression "*(code **)(pcVar9 + 0x2c080)" * (cast_expression "(code **)(pcVar9 + 0x2c080)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar9 + 0x2c080)" ( (binary_expression "pcVar9 + 0x2c080" identifier + number_literal) ))))) )) (argument_list "(1,4)" ( number_literal , number_literal ))))) ;) (expression_statement "*piVar6 = (int)piVar5;" (assignment_expression "*piVar6 = (int)piVar5" (pointer_expression "*piVar6" * identifier) = (cast_expression "(int)piVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (return_statement "return piVar6;" return identifier ;) })) (return_statement "return piVar6;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) , IDENT , LIT , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( LIT , LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "int * get_file_posn(int *param_1,undefined4 *param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}" (primitive_type "int") (pointer_declarator "* get_file_posn(int *param_1,undefined4 *param_2)" (* "*") (function_declarator "get_file_posn(int *param_1,undefined4 *param_2)" (identifier "get_file_posn") (parameter_list "(int *param_1,undefined4 *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int *piVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  undefined *puVar8;\n  code *pcVar9;\n  undefined8 uVar10;\n  undefined1 auStack_f0 [24];\n  uint uStack_d8;\n  int iStack_4c;\n  undefined *puStack_44;\n  int *piStack_40;\n  code *pcStack_3c;\n  undefined4 local_28;\n  \n  puVar1 = PTR___stack_chk_guard_000bef2c;\n  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;\n  local_28 = 1;\n  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);\n  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);\n  if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }\n  pcVar9 = file_type;\n  puVar8 = PTR___stack_chk_fail_000bef04;\n  (*(code *)PTR___stack_chk_fail_000bef04)();\n  puStack_44 = puVar1;\n  iStack_4c = **(int **)(puVar8 + 0x2ccf0);\n  piStack_40 = param_1;\n  pcStack_3c = pcVar9;\n  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);\n  if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }\n  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }\n  return piVar6;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "code *pcVar9;" (type_identifier "code") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "undefined8 uVar10;" (type_identifier "undefined8") (identifier "uVar10") (; ";")) (declaration "undefined1 auStack_f0 [24];" (type_identifier "undefined1") (array_declarator "auStack_f0 [24]" (identifier "auStack_f0") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "uint uStack_d8;" (type_identifier "uint") (identifier "uStack_d8") (; ";")) (declaration "int iStack_4c;" (primitive_type "int") (identifier "iStack_4c") (; ";")) (declaration "undefined *puStack_44;" (type_identifier "undefined") (pointer_declarator "*puStack_44" (* "*") (identifier "puStack_44")) (; ";")) (declaration "int *piStack_40;" (primitive_type "int") (pointer_declarator "*piStack_40" (* "*") (identifier "piStack_40")) (; ";")) (declaration "code *pcStack_3c;" (type_identifier "code") (pointer_declarator "*pcStack_3c" (* "*") (identifier "pcStack_3c")) (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000bef2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000bef2c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000bef2c")) (; ";")) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_000bef2c" (identifier "iVar2") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000bef2c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000bef2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000bef2c")))) (; ";")) (expression_statement "local_28 = 1;" (assignment_expression "local_28 = 1" (identifier "local_28") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);" (assignment_expression "uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0)" (parenthesized_expression "(*(code *)PTR_lseek64_000beecc)" (( "(") (pointer_expression "*(code *)PTR_lseek64_000beecc" (* "*") (cast_expression "(code *)PTR_lseek64_000beecc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_lseek64_000beecc"))) () ")")) (argument_list "(*param_2,param_2,0,0)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "(*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);" (call_expression "(*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10)" (parenthesized_expression "(*(code *)PTR_uint64_make_000be644)" (( "(") (pointer_expression "*(code *)PTR_uint64_make_000be644" (* "*") (cast_expression "(code *)PTR_uint64_make_000be644" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_uint64_make_000be644"))) () ")")) (argument_list "(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10)" (( "(") (identifier "param_1") (, ",") (cast_expression "(int)((ulonglong)uVar10 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "0x20")) () ")"))) (, ",") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) () ")"))) (; ";")) (if_statement "if (iVar2 == *(int *)puVar1) {\n    return param_1;\n  }" (if "if") (parenthesized_expression "(iVar2 == *(int *)puVar1)" (( "(") (binary_expression "iVar2 == *(int *)puVar1" (identifier "iVar2") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return param_1;\n  }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "pcVar9 = file_type;" (assignment_expression "pcVar9 = file_type" (identifier "pcVar9") (= "=") (identifier "file_type")) (; ";")) (expression_statement "puVar8 = PTR___stack_chk_fail_000bef04;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000bef04" (identifier "puVar8") (= "=") (identifier "PTR___stack_chk_fail_000bef04")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000bef04)();" (call_expression "(*(code *)PTR___stack_chk_fail_000bef04)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000bef04)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000bef04" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000bef04" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000bef04"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puStack_44 = puVar1;" (assignment_expression "puStack_44 = puVar1" (identifier "puStack_44") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "iStack_4c = **(int **)(puVar8 + 0x2ccf0);" (assignment_expression "iStack_4c = **(int **)(puVar8 + 0x2ccf0)" (identifier "iStack_4c") (= "=") (pointer_expression "**(int **)(puVar8 + 0x2ccf0)" (* "*") (pointer_expression "*(int **)(puVar8 + 0x2ccf0)" (* "*") (cast_expression "(int **)(puVar8 + 0x2ccf0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2ccf0)" (( "(") (binary_expression "puVar8 + 0x2ccf0" (identifier "puVar8") (+ "+") (number_literal "0x2ccf0")) () ")")))))) (; ";")) (expression_statement "piStack_40 = param_1;" (assignment_expression "piStack_40 = param_1" (identifier "piStack_40") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pcStack_3c = pcVar9;" (assignment_expression "pcStack_3c = pcVar9" (identifier "pcStack_3c") (= "=") (identifier "pcVar9")) (; ";")) (expression_statement "iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);" (assignment_expression "iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0)" (parenthesized_expression "(**(code **)(puVar8 + 0x2cb4c))" (( "(") (pointer_expression "**(code **)(puVar8 + 0x2cb4c)" (* "*") (pointer_expression "*(code **)(puVar8 + 0x2cb4c)" (* "*") (cast_expression "(code **)(puVar8 + 0x2cb4c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2cb4c)" (( "(") (binary_expression "puVar8 + 0x2cb4c" (identifier "puVar8") (+ "+") (number_literal "0x2cb4c")) () ")"))))) () ")")) (argument_list "(3,iVar2,auStack_f0)" (( "(") (number_literal "3") (, ",") (identifier "iVar2") (, ",") (identifier "auStack_f0") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }\n  else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();\n    if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }\n  }" ({ "{") (expression_statement "piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();" (assignment_expression "piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))()" (identifier "piVar6") (= "=") (cast_expression "(int *)(**(code **)(puVar8 + 0x2cc00))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar8 + 0x2cc00))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2cc00))" (( "(") (pointer_expression "**(code **)(puVar8 + 0x2cc00)" (* "*") (pointer_expression "*(code **)(puVar8 + 0x2cc00)" (* "*") (cast_expression "(code **)(puVar8 + 0x2cc00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2cc00)" (( "(") (binary_expression "puVar8 + 0x2cc00" (identifier "puVar8") (+ "+") (number_literal "0x2cc00")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (*piVar6 == 2) {\n      piVar6 = (int *)0x0;\n    }\n    else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" (if "if") (parenthesized_expression "(*piVar6 == 2)" (( "(") (binary_expression "*piVar6 == 2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      piVar6 = (int *)0x0;\n    }" ({ "{") (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" (identifier "piVar6") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" (else "else") (compound_statement "{\n      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);\n      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();\n      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);\n      piVar6 = (int *)0x0;\n    }" ({ "{") (expression_statement "uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);" (assignment_expression "uVar7 = **(undefined4 **)(puVar8 + 0x2cd08)" (identifier "uVar7") (= "=") (pointer_expression "**(undefined4 **)(puVar8 + 0x2cd08)" (* "*") (pointer_expression "*(undefined4 **)(puVar8 + 0x2cd08)" (* "*") (cast_expression "(undefined4 **)(puVar8 + 0x2cd08)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2cd08)" (( "(") (binary_expression "puVar8 + 0x2cd08" (identifier "puVar8") (+ "+") (number_literal "0x2cd08")) () ")")))))) (; ";")) (expression_statement "uVar4 = (**(code **)(puVar8 + 0x2cc6c))();" (assignment_expression "uVar4 = (**(code **)(puVar8 + 0x2cc6c))()" (identifier "uVar4") (= "=") (call_expression "(**(code **)(puVar8 + 0x2cc6c))()" (parenthesized_expression "(**(code **)(puVar8 + 0x2cc6c))" (( "(") (pointer_expression "**(code **)(puVar8 + 0x2cc6c)" (* "*") (pointer_expression "*(code **)(puVar8 + 0x2cc6c)" (* "*") (cast_expression "(code **)(puVar8 + 0x2cc6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2cc6c)" (( "(") (binary_expression "puVar8 + 0x2cc6c" (identifier "puVar8") (+ "+") (number_literal "0x2cc6c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "(**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);" (call_expression "(**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4)" (parenthesized_expression "(**(code **)(puVar8 + 0x2cb6c))" (( "(") (pointer_expression "**(code **)(puVar8 + 0x2cb6c)" (* "*") (pointer_expression "*(code **)(puVar8 + 0x2cb6c)" (* "*") (cast_expression "(code **)(puVar8 + 0x2cb6c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2cb6c)" (( "(") (binary_expression "puVar8 + 0x2cb6c" (identifier "puVar8") (+ "+") (number_literal "0x2cb6c")) () ")"))))) () ")")) (argument_list "(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4)" (( "(") (identifier "uVar7") (, ",") (number_literal "1") (, ",") (binary_expression "*(int *)(puVar8 + 0x2c208) + -0x4454" (pointer_expression "*(int *)(puVar8 + 0x2c208)" (* "*") (cast_expression "(int *)(puVar8 + 0x2c208)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 0x2c208)" (( "(") (binary_expression "puVar8 + 0x2c208" (identifier "puVar8") (+ "+") (number_literal "0x2c208")) () ")")))) (+ "+") (number_literal "-0x4454")) (, ",") (identifier "iVar2") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "piVar6 = (int *)0x0;" (assignment_expression "piVar6 = (int *)0x0" (identifier "piVar6") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" (else "else") (if_statement "if ((uStack_d8 & 0xf000) == 0x8000) {\n    piVar6 = (int *)0x1;\n  }\n  else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" (if "if") (parenthesized_expression "((uStack_d8 & 0xf000) == 0x8000)" (( "(") (binary_expression "(uStack_d8 & 0xf000) == 0x8000" (parenthesized_expression "(uStack_d8 & 0xf000)" (( "(") (binary_expression "uStack_d8 & 0xf000" (identifier "uStack_d8") (& "&") (number_literal "0xf000")) () ")")) (== "==") (number_literal "0x8000")) () ")")) (compound_statement "{\n    piVar6 = (int *)0x1;\n  }" ({ "{") (expression_statement "piVar6 = (int *)0x1;" (assignment_expression "piVar6 = (int *)0x1" (identifier "piVar6") (= "=") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}")) (else_clause "else {\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" (else "else") (compound_statement "{\n    piVar6 = (int *)0x2;\n    if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }\n  }" ({ "{") (expression_statement "piVar6 = (int *)0x2;" (assignment_expression "piVar6 = (int *)0x2" (identifier "piVar6") (= "=") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (if_statement "if ((uStack_d8 & 0xf000) != 0x4000) {\n      piVar6 = (int *)0x3;\n    }" (if "if") (parenthesized_expression "((uStack_d8 & 0xf000) != 0x4000)" (( "(") (binary_expression "(uStack_d8 & 0xf000) != 0x4000" (parenthesized_expression "(uStack_d8 & 0xf000)" (( "(") (binary_expression "uStack_d8 & 0xf000" (identifier "uStack_d8") (& "&") (number_literal "0xf000")) () ")")) (!= "!=") (number_literal "0x4000")) () ")")) (compound_statement "{\n      piVar6 = (int *)0x3;\n    }" ({ "{") (expression_statement "piVar6 = (int *)0x3;" (assignment_expression "piVar6 = (int *)0x3" (identifier "piVar6") (= "=") (cast_expression "(int *)0x3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) (; ";")) (} "}"))) (} "}")))))) (if_statement "if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }" (if "if") (parenthesized_expression "(iStack_4c != **(int **)(puVar8 + 0x2ccf0))" (( "(") (binary_expression "iStack_4c != **(int **)(puVar8 + 0x2ccf0)" (identifier "iStack_4c") (!= "!=") (pointer_expression "**(int **)(puVar8 + 0x2ccf0)" (* "*") (pointer_expression "*(int **)(puVar8 + 0x2ccf0)" (* "*") (cast_expression "(int **)(puVar8 + 0x2ccf0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2ccf0)" (( "(") (binary_expression "puVar8 + 0x2ccf0" (identifier "puVar8") (+ "+") (number_literal "0x2ccf0")) () ")")))))) () ")")) (compound_statement "{\n    pcVar9 = *(code **)(puVar8 + 0x2ccc8);\n    (*pcVar9)();\n    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();\n    piVar6 = piVar5;\n    if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }\n    return piVar6;\n  }" ({ "{") (expression_statement "pcVar9 = *(code **)(puVar8 + 0x2ccc8);" (assignment_expression "pcVar9 = *(code **)(puVar8 + 0x2ccc8)" (identifier "pcVar9") (= "=") (pointer_expression "*(code **)(puVar8 + 0x2ccc8)" (* "*") (cast_expression "(code **)(puVar8 + 0x2ccc8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar8 + 0x2ccc8)" (( "(") (binary_expression "puVar8 + 0x2ccc8" (identifier "puVar8") (+ "+") (number_literal "0x2ccc8")) () ")"))))) (; ";")) (expression_statement "(*pcVar9)();" (call_expression "(*pcVar9)()" (parenthesized_expression "(*pcVar9)" (( "(") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();" (assignment_expression "piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))()" (identifier "piVar5") (= "=") (cast_expression "(int *)(**(code **)(pcVar9 + 0x2ca10))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar9 + 0x2ca10))()" (parenthesized_expression "(**(code **)(pcVar9 + 0x2ca10))" (( "(") (pointer_expression "**(code **)(pcVar9 + 0x2ca10)" (* "*") (pointer_expression "*(code **)(pcVar9 + 0x2ca10)" (* "*") (cast_expression "(code **)(pcVar9 + 0x2ca10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar9 + 0x2ca10)" (( "(") (binary_expression "pcVar9 + 0x2ca10" (identifier "pcVar9") (+ "+") (number_literal "0x2ca10")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar6 = piVar5;" (assignment_expression "piVar6 = piVar5" (identifier "piVar6") (= "=") (identifier "piVar5")) (; ";")) (if_statement "if (piVar5 != (int *)0x0) {\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }" (if "if") (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);\n      *piVar6 = (int)piVar5;\n    }" ({ "{") (expression_statement "piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);" (assignment_expression "piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4)" (identifier "piVar6") (= "=") (cast_expression "(int *)(**(code **)(pcVar9 + 0x2c080))(1,4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(pcVar9 + 0x2c080))(1,4)" (parenthesized_expression "(**(code **)(pcVar9 + 0x2c080))" (( "(") (pointer_expression "**(code **)(pcVar9 + 0x2c080)" (* "*") (pointer_expression "*(code **)(pcVar9 + 0x2c080)" (* "*") (cast_expression "(code **)(pcVar9 + 0x2c080)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar9 + 0x2c080)" (( "(") (binary_expression "pcVar9 + 0x2c080" (identifier "pcVar9") (+ "+") (number_literal "0x2c080")) () ")"))))) () ")")) (argument_list "(1,4)" (( "(") (number_literal "1") (, ",") (number_literal "4") () ")"))))) (; ";")) (expression_statement "*piVar6 = (int)piVar5;" (assignment_expression "*piVar6 = (int)piVar5" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (cast_expression "(int)piVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar5"))) (; ";")) (} "}"))) (return_statement "return piVar6;" (return "return") (identifier "piVar6") (; ";")) (} "}"))) (return_statement "return piVar6;" (return "return") (identifier "piVar6") (; ";")) (} "}")))

type_1 function_1(type_2 *f)

{
  type_3 *puVar1;
  type_4 var_1;
  int var_3;
  int *piVar4;
  type_5 uVar5;
  type_1 *ret;
  type_5 *in_a1;
  type_5 uVar6;
  type_3 *var_2;
  type_6 *var_6;
  type_7 uVar9;
  type_1 uVar10;
  type_1 uVar11;
  type_8 auStack_f0 [24];
  type_9 var_4;
  type_4 var_5;
  type_3 *puStack_44;
  type_2 *pWStack_40;
  type_6 *pcStack_3c;
  type_5 local_28;
  
  puVar1 = PTR___stack_chk_guard_000bef2c;
  var_1 = *(type_4 *)PTR___stack_chk_guard_000bef2c;
  local_28 = 1;
  uVar9 = (*(type_6 *)PTR_lseek64_000beecc)(*in_a1,in_a1,0,0);
  (*(type_6 *)PTR_uint64_make_000be644)(f,(int)((type_10)uVar9 >> 0x20),(int)uVar9);
  uVar11.lo = *(type_4 *)puVar1;
  if (var_1 == uVar11.lo) {
    uVar11.hi = (type_4)f;
    return uVar11;
  }
  var_6 = file_type;
  var_2 = PTR___stack_chk_fail_000bef04;
  (*(type_6 *)PTR___stack_chk_fail_000bef04)();
  puStack_44 = puVar1;
  var_5 = **(type_4 **)(var_2 + 0x2ccf0);
  pWStack_40 = f;
  pcStack_3c = var_6;
  var_3 = (**(type_6 **)(var_2 + 0x2cb4c))(3,var_1,auStack_f0);
  if (var_3 < 0) {
    piVar4 = (int *)(**(type_6 **)(var_2 + 0x2cc00))();
    if (*piVar4 == 2) {
      var_1 = 0;
    }
    else {
      uVar6 = **(type_5 **)(var_2 + 0x2cd08);
      uVar5 = (**(type_6 **)(var_2 + 0x2cc6c))();
      (**(type_6 **)(var_2 + 0x2cb6c))(uVar6,1,*(int *)(var_2 + 0x2c208) + -0x4454,var_1,uVar5);
      var_1 = 0;
    }
  }
  else if ((var_4 & 0xf000) == 0x8000) {
    var_1 = 1;
  }
  else {
    var_1 = 2;
    if ((var_4 & 0xf000) != 0x4000) {
      var_1 = 3;
    }
  }
  uVar10.lo = **(type_4 **)(var_2 + 0x2ccf0);
  if (var_5 != uVar10.lo) {
    var_6 = *(type_6 **)(var_2 + 0x2ccc8);
    (*var_6)();
    uVar11 = (type_1)(**(type_6 **)(var_6 + 0x2ca10))();
    var_1 = uVar11.hi;
    if (var_1 != 0) {
      uVar11 = (type_1)(**(type_6 **)(var_6 + 0x2c080))(1,4);
      *(type_4 *)uVar11.hi = var_1;
    }
    return uVar11;
  }
  uVar10.hi = var_1;
  return uVar10;
}


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

int * MASKED(int *param_1,undefined4 *param_2)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int *piVar5;
  int *piVar6;
  undefined4 uVar7;
  undefined *puVar8;
  code *pcVar9;
  undefined8 uVar10;
  undefined1 auStack_f0 [24];
  uint uStack_d8;
  int iStack_4c;
  undefined *puStack_44;
  int *piStack_40;
  code *pcStack_3c;
  undefined4 local_28;
  
  puVar1 = PTR___stack_chk_guard_000bef2c;
  iVar2 = *(int *)PTR___stack_chk_guard_000bef2c;
  local_28 = 1;
  uVar10 = (*(code *)PTR_lseek64_000beecc)(*param_2,param_2,0,0);
  (*(code *)PTR_uint64_make_000be644)(param_1,(int)((ulonglong)uVar10 >> 0x20),(int)uVar10);
  if (iVar2 == *(int *)puVar1) {
    return param_1;
  }
  pcVar9 = file_type;
  puVar8 = PTR___stack_chk_fail_000bef04;
  (*(code *)PTR___stack_chk_fail_000bef04)();
  puStack_44 = puVar1;
  iStack_4c = **(int **)(puVar8 + 0x2ccf0);
  piStack_40 = param_1;
  pcStack_3c = pcVar9;
  iVar3 = (**(code **)(puVar8 + 0x2cb4c))(3,iVar2,auStack_f0);
  if (iVar3 < 0) {
    piVar6 = (int *)(**(code **)(puVar8 + 0x2cc00))();
    if (*piVar6 == 2) {
      piVar6 = (int *)0x0;
    }
    else {
      uVar7 = **(undefined4 **)(puVar8 + 0x2cd08);
      uVar4 = (**(code **)(puVar8 + 0x2cc6c))();
      (**(code **)(puVar8 + 0x2cb6c))(uVar7,1,*(int *)(puVar8 + 0x2c208) + -0x4454,iVar2,uVar4);
      piVar6 = (int *)0x0;
    }
  }
  else if ((uStack_d8 & 0xf000) == 0x8000) {
    piVar6 = (int *)0x1;
  }
  else {
    piVar6 = (int *)0x2;
    if ((uStack_d8 & 0xf000) != 0x4000) {
      piVar6 = (int *)0x3;
    }
  }
  if (iStack_4c != **(int **)(puVar8 + 0x2ccf0)) {
    pcVar9 = *(code **)(puVar8 + 0x2ccc8);
    (*pcVar9)();
    piVar5 = (int *)(**(code **)(pcVar9 + 0x2ca10))();
    piVar6 = piVar5;
    if (piVar5 != (int *)0x0) {
      piVar6 = (int *)(**(code **)(pcVar9 + 0x2c080))(1,4);
      *piVar6 = (int)piVar5;
    }
    return piVar6;
  }
  return piVar6;
}

