
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::wfilebuf::showmanyc() */

void std::wfilebuf::showmanyc(void)

{
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int FUN_002735d0(int param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {
    cVar2 = FUN_00248850(param_1 + 0x38);
    if (cVar2 != '\0') {
      piVar1 = *(int **)(param_1 + 0x78);
      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;
      if (piVar1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_0028daa0();
      }
      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);
      if (iVar3 < 0) {
        return iVar5;
      }
      iVar3 = FUN_00248c40(param_1 + 0x38);
      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));
      return iVar5 + iVar3 / iVar4;
    }
  }
  return -1;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x0003a210
ADD EBX,0x1a0a27
SUB ESP,0xc
MOV EDI,dword ptr [ESP + 0x20]
TEST byte ptr [EDI + 0x40],0x8
JZ 0x00273650
SUB ESP,0xc
LEA EBP,[EDI + 0x38]
PUSH EBP
CALL 0x00248850
ADD ESP,0x10
TEST AL,AL
JZ 0x00273650
MOV EAX,dword ptr [EDI + 0x78]
MOV ESI,dword ptr [EDI + 0xc]
SUB ESI,dword ptr [EDI + 0x8]
SAR ESI,0x2
TEST EAX,EAX
JZ 0x00273657
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x14]
ADD ESP,0x10
TEST EAX,EAX
JS 0x00273641
SUB ESP,0xc
PUSH EBP
CALL 0x00248c40
MOV EBX,EAX
MOV EAX,dword ptr [EDI + 0x78]
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP],EAX
CALL dword ptr [EDX + 0x20]
ADD ESP,0x10
MOV ECX,EAX
MOV EAX,EBX
CDQ
IDIV ECX
ADD ESI,EAX
ADD ESP,0xc
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,0xffffffff
JMP 0x00273641
CALL 0x0028daa0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_002735d0(int param_1)\n\n{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}\n\n" comment (function_definition "int FUN_002735d0(int param_1)\n\n{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}" primitive_type (function_declarator "FUN_002735d0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x40) & 8) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x40) & 8) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x40) & 8)" ( (binary_expression "*(byte *)(param_1 + 0x40) & 8" (pointer_expression "*(byte *)(param_1 + 0x40)" * (cast_expression "(byte *)(param_1 + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }" { (expression_statement "cVar2 = FUN_00248850(param_1 + 0x38);" (assignment_expression "cVar2 = FUN_00248850(param_1 + 0x38)" identifier = (call_expression "FUN_00248850(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (if_statement "if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }" { (expression_statement "piVar1 = *(int **)(param_1 + 0x78);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x78)" identifier = (pointer_expression "*(int **)(param_1 + 0x78)" * (cast_expression "(int **)(param_1 + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;" (assignment_expression "iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2" identifier = (binary_expression "*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2" (binary_expression "*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (piVar1 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        FUN_0028daa0();\n      }" { comment (expression_statement "FUN_0028daa0();" (call_expression "FUN_0028daa0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);" (assignment_expression "iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0x14))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x14))" ( (pointer_expression "**(code **)(*piVar1 + 0x14)" * (pointer_expression "*(code **)(*piVar1 + 0x14)" * (cast_expression "(code **)(*piVar1 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x14)" ( (binary_expression "*piVar1 + 0x14" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        return iVar5;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "iVar3 = FUN_00248c40(param_1 + 0x38);" (assignment_expression "iVar3 = FUN_00248c40(param_1 + 0x38)" identifier = (call_expression "FUN_00248c40(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (expression_statement "iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));" (assignment_expression "iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78))" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0x78) + 0x20))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0x78) + 0x20)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0x78) + 0x20)" * (cast_expression "(code **)(**(int **)(param_1 + 0x78) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0x78) + 0x20)" ( (binary_expression "**(int **)(param_1 + 0x78) + 0x20" (pointer_expression "**(int **)(param_1 + 0x78)" * (pointer_expression "*(int **)(param_1 + 0x78)" * (cast_expression "(int **)(param_1 + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0x78))" ( (pointer_expression "*(int **)(param_1 + 0x78)" * (cast_expression "(int **)(param_1 + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) )))) ;) (return_statement "return iVar5 + iVar3 / iVar4;" return (binary_expression "iVar5 + iVar3 / iVar4" identifier + (binary_expression "iVar3 / iVar4" identifier / identifier)) ;) })) })) (return_statement "return -1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* std::wfilebuf::showmanyc() */\n\nvoid std::wfilebuf::showmanyc(void)\n\n{\n}\n\n" comment comment (function_definition "void std::wfilebuf::showmanyc(void)\n\n{\n}" primitive_type (ERROR "std::wfilebuf::" identifier : : identifier : :) (function_declarator "showmanyc(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n}" { })))
(translation_unit "int FUN_002735d0(int param_1)\n\n{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}\n\n" (function_definition "int FUN_002735d0(int param_1)\n\n{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}" primitive_type (function_declarator "FUN_002735d0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (if_statement "if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }" if (parenthesized_expression "((*(byte *)(param_1 + 0x40) & 8) != 0)" ( (binary_expression "(*(byte *)(param_1 + 0x40) & 8) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x40) & 8)" ( (binary_expression "*(byte *)(param_1 + 0x40) & 8" (pointer_expression "*(byte *)(param_1 + 0x40)" * (cast_expression "(byte *)(param_1 + 0x40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }" { (expression_statement "cVar2 = FUN_00248850(param_1 + 0x38);" (assignment_expression "cVar2 = FUN_00248850(param_1 + 0x38)" identifier = (call_expression "FUN_00248850(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (if_statement "if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }" { (expression_statement "piVar1 = *(int **)(param_1 + 0x78);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x78)" identifier = (pointer_expression "*(int **)(param_1 + 0x78)" * (cast_expression "(int **)(param_1 + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;" (assignment_expression "iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2" identifier = (binary_expression "*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2" (binary_expression "*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) - (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) >> number_literal)) ;) (if_statement "if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }" if (parenthesized_expression "(piVar1 == (int *)0x0)" ( (binary_expression "piVar1 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n        FUN_0028daa0();\n      }" { (expression_statement "FUN_0028daa0();" (call_expression "FUN_0028daa0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);" (assignment_expression "iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1)" identifier = (call_expression "(**(code **)(*piVar1 + 0x14))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x14))" ( (pointer_expression "**(code **)(*piVar1 + 0x14)" * (pointer_expression "*(code **)(*piVar1 + 0x14)" * (cast_expression "(code **)(*piVar1 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar1 + 0x14)" ( (binary_expression "*piVar1 + 0x14" (pointer_expression "*piVar1" * identifier) + number_literal) ))))) )) (argument_list "(piVar1)" ( identifier )))) ;) (if_statement "if (iVar3 < 0) {\n        return iVar5;\n      }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n        return iVar5;\n      }" { (return_statement "return iVar5;" return identifier ;) })) (expression_statement "iVar3 = FUN_00248c40(param_1 + 0x38);" (assignment_expression "iVar3 = FUN_00248c40(param_1 + 0x38)" identifier = (call_expression "FUN_00248c40(param_1 + 0x38)" identifier (argument_list "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) ;) (expression_statement "iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));" (assignment_expression "iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78))" identifier = (call_expression "(**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0x78) + 0x20))" ( (pointer_expression "**(code **)(**(int **)(param_1 + 0x78) + 0x20)" * (pointer_expression "*(code **)(**(int **)(param_1 + 0x78) + 0x20)" * (cast_expression "(code **)(**(int **)(param_1 + 0x78) + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(int **)(param_1 + 0x78) + 0x20)" ( (binary_expression "**(int **)(param_1 + 0x78) + 0x20" (pointer_expression "**(int **)(param_1 + 0x78)" * (pointer_expression "*(int **)(param_1 + 0x78)" * (cast_expression "(int **)(param_1 + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(int **)(param_1 + 0x78))" ( (pointer_expression "*(int **)(param_1 + 0x78)" * (cast_expression "(int **)(param_1 + 0x78)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x78)" ( (binary_expression "param_1 + 0x78" identifier + number_literal) )))) )))) ;) (return_statement "return iVar5 + iVar3 / iVar4;" return (binary_expression "iVar5 + iVar3 / iVar4" identifier + (binary_expression "iVar3 / iVar4" identifier / identifier)) ;) })) })) (return_statement "return -1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (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 (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (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 (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (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 (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (return_statement return (binary_expression IDENT + (binary_expression IDENT / IDENT)) ;) })) })) (return_statement return LIT ;) })))
(function_definition "int FUN_002735d0(int param_1)\n\n{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}" (primitive_type "int") (function_declarator "FUN_002735d0(int param_1)" (identifier "FUN_002735d0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int *piVar1;\n  char cVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  \n  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }\n  return -1;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (if_statement "if ((*(byte *)(param_1 + 0x40) & 8) != 0) {\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }" (if "if") (parenthesized_expression "((*(byte *)(param_1 + 0x40) & 8) != 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 0x40) & 8) != 0" (parenthesized_expression "(*(byte *)(param_1 + 0x40) & 8)" (( "(") (binary_expression "*(byte *)(param_1 + 0x40) & 8" (pointer_expression "*(byte *)(param_1 + 0x40)" (* "*") (cast_expression "(byte *)(param_1 + 0x40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    cVar2 = FUN_00248850(param_1 + 0x38);\n    if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }\n  }" ({ "{") (expression_statement "cVar2 = FUN_00248850(param_1 + 0x38);" (assignment_expression "cVar2 = FUN_00248850(param_1 + 0x38)" (identifier "cVar2") (= "=") (call_expression "FUN_00248850(param_1 + 0x38)" (identifier "FUN_00248850") (argument_list "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') {\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      piVar1 = *(int **)(param_1 + 0x78);\n      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;\n      if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }\n      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);\n      if (iVar3 < 0) {\n        return iVar5;\n      }\n      iVar3 = FUN_00248c40(param_1 + 0x38);\n      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));\n      return iVar5 + iVar3 / iVar4;\n    }" ({ "{") (expression_statement "piVar1 = *(int **)(param_1 + 0x78);" (assignment_expression "piVar1 = *(int **)(param_1 + 0x78)" (identifier "piVar1") (= "=") (pointer_expression "*(int **)(param_1 + 0x78)" (* "*") (cast_expression "(int **)(param_1 + 0x78)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;" (assignment_expression "iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2" (identifier "iVar5") (= "=") (binary_expression "*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2" (binary_expression "*(int *)(param_1 + 0xc) - *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (- "-") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (>> ">>") (number_literal "2"))) (; ";")) (if_statement "if (piVar1 == (int *)0x0) {\n                    \n        FUN_0028daa0();\n      }" (if "if") (parenthesized_expression "(piVar1 == (int *)0x0)" (( "(") (binary_expression "piVar1 == (int *)0x0" (identifier "piVar1") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n        FUN_0028daa0();\n      }" ({ "{") (expression_statement "FUN_0028daa0();" (call_expression "FUN_0028daa0()" (identifier "FUN_0028daa0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);" (assignment_expression "iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(*piVar1 + 0x14))(piVar1)" (parenthesized_expression "(**(code **)(*piVar1 + 0x14))" (( "(") (pointer_expression "**(code **)(*piVar1 + 0x14)" (* "*") (pointer_expression "*(code **)(*piVar1 + 0x14)" (* "*") (cast_expression "(code **)(*piVar1 + 0x14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar1 + 0x14)" (( "(") (binary_expression "*piVar1 + 0x14" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (argument_list "(piVar1)" (( "(") (identifier "piVar1") () ")")))) (; ";")) (if_statement "if (iVar3 < 0) {\n        return iVar5;\n      }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        return iVar5;\n      }" ({ "{") (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_00248c40(param_1 + 0x38);" (assignment_expression "iVar3 = FUN_00248c40(param_1 + 0x38)" (identifier "iVar3") (= "=") (call_expression "FUN_00248c40(param_1 + 0x38)" (identifier "FUN_00248c40") (argument_list "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (; ";")) (expression_statement "iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));" (assignment_expression "iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78))" (identifier "iVar4") (= "=") (call_expression "(**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78))" (parenthesized_expression "(**(code **)(**(int **)(param_1 + 0x78) + 0x20))" (( "(") (pointer_expression "**(code **)(**(int **)(param_1 + 0x78) + 0x20)" (* "*") (pointer_expression "*(code **)(**(int **)(param_1 + 0x78) + 0x20)" (* "*") (cast_expression "(code **)(**(int **)(param_1 + 0x78) + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(int **)(param_1 + 0x78) + 0x20)" (( "(") (binary_expression "**(int **)(param_1 + 0x78) + 0x20" (pointer_expression "**(int **)(param_1 + 0x78)" (* "*") (pointer_expression "*(int **)(param_1 + 0x78)" (* "*") (cast_expression "(int **)(param_1 + 0x78)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")"))))) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(*(int **)(param_1 + 0x78))" (( "(") (pointer_expression "*(int **)(param_1 + 0x78)" (* "*") (cast_expression "(int **)(param_1 + 0x78)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x78)" (( "(") (binary_expression "param_1 + 0x78" (identifier "param_1") (+ "+") (number_literal "0x78")) () ")")))) () ")")))) (; ";")) (return_statement "return iVar5 + iVar3 / iVar4;" (return "return") (binary_expression "iVar5 + iVar3 / iVar4" (identifier "iVar5") (+ "+") (binary_expression "iVar3 / iVar4" (identifier "iVar3") (/ "/") (identifier "iVar4"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return -1;" (return "return") (number_literal "-1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::wfilebuf::showmanyc() */

void std::wfilebuf::function_1(void)

{
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int MASKED(int param_1)

{
  int *piVar1;
  char cVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  
  if ((*(byte *)(param_1 + 0x40) & 8) != 0) {
    cVar2 = FUN_00248850(param_1 + 0x38);
    if (cVar2 != '\0') {
      piVar1 = *(int **)(param_1 + 0x78);
      iVar5 = *(int *)(param_1 + 0xc) - *(int *)(param_1 + 8) >> 2;
      if (piVar1 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
        FUN_0028daa0();
      }
      iVar3 = (**(code **)(*piVar1 + 0x14))(piVar1);
      if (iVar3 < 0) {
        return iVar5;
      }
      iVar3 = FUN_00248c40(param_1 + 0x38);
      iVar4 = (**(code **)(**(int **)(param_1 + 0x78) + 0x20))(*(int **)(param_1 + 0x78));
      return iVar5 + iVar3 / iVar4;
    }
  }
  return -1;
}

