
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void print_symbol_counts(Cref * this, Symbol_table * symtab) */

void __thiscall gold::Cref::print_symbol_counts(Cref *this,Symbol_table *symtab)

{
  General_options *pGVar1;
  byte *__filename;
  char *pcVar2;
  FILE *f;
  int *piVar3;
  char *pcVar4;
  char *format;
  int iVar5;
  Cref_inputs *this_00;
  byte *pbVar6;
  byte *pbVar7;
  bool bVar8;
  bool bVar9;
  
  pGVar1 = parameters->options_;
  if (pGVar1 == (General_options *)0x0) {
LAB_0019f486:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  if ((pGVar1->print_symbol_counts_).user_set_via_option != false) {
    this_00 = this->inputs_;
    bVar8 = false;
    bVar9 = this_00 == (Cref_inputs *)0x0;
    if (!bVar9) {
      __filename = (byte *)(pGVar1->print_symbol_counts_).value;
      iVar5 = 2;
      pbVar6 = __filename;
      pbVar7 = &DAT_0028d758;
      do {
        if (iVar5 == 0) break;
        iVar5 = iVar5 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + 1;
        pbVar7 = pbVar7 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) == bVar8) {
        f = *(FILE **)PTR_stdout_0038eea0;
        if (f != (FILE *)0x0) {
LAB_0019f41d:
          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);
          return;
        }
      }
      else {
        f = fopen64((char *)__filename,"w");
        if (f != (FILE *)0x0) {
          this_00 = this->inputs_;
          goto LAB_0019f41d;
        }
        piVar3 = __errno_location();
        pcVar4 = strerror(*piVar3);
        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;
        pcVar2 = (parameters->options_->print_symbol_counts_).value;
        format = (char *)gettext("cannot open symbol count file %s: %s");
        gold_error(format,pcVar2,pcVar4);
      }
    }
  }
  return;
}



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

void FUN_0019f390(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  FILE *pFVar2;
  int *piVar3;
  char *pcVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  byte *pbVar9;
  byte *pbVar10;
  bool bVar11;
  bool bVar12;
  
  iVar6 = *(int *)(DAT_0038f378 + 8);
  if (iVar6 == 0) {
LAB_0019f486:
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);
  }
  if (*(char *)(iVar6 + 0x2fc8) != '\0') {
    iVar8 = *param_1;
    bVar11 = false;
    bVar12 = iVar8 == 0;
    if (!bVar12) {
      iVar7 = 2;
      pbVar9 = *(byte **)(iVar6 + 0x2fcc);
      pbVar10 = &DAT_0028d758;
      do {
        if (iVar7 == 0) break;
        iVar7 = iVar7 + -1;
        bVar11 = *pbVar9 < *pbVar10;
        bVar12 = *pbVar9 == *pbVar10;
        pbVar9 = pbVar9 + 1;
        pbVar10 = pbVar10 + 1;
      } while (bVar12);
      if ((!bVar11 && !bVar12) == bVar11) {
        pFVar2 = *(FILE **)PTR_stdout_0038eea0;
        if (pFVar2 != (FILE *)0x0) {
LAB_0019f41d:
          FUN_0019f180(iVar8,param_2,pFVar2);
          return;
        }
      }
      else {
        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");
        if (pFVar2 != (FILE *)0x0) {
          iVar8 = *param_1;
          goto LAB_0019f41d;
        }
        piVar3 = __errno_location();
        pcVar4 = strerror(*piVar3);
        iVar6 = *(int *)(DAT_0038f378 + 8);
        if (iVar6 == 0) goto LAB_0019f486;
        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);
        uVar5 = gettext("cannot open symbol count file %s: %s");
        FUN_000654b0(uVar5,uVar1,pcVar4);
      }
    }
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x1efc67
SUB ESP,0xc
LEA EBP,[EBX + 0x378]
MOV EAX,dword ptr [EBP]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0019f486
CMP byte ptr [EAX + 0x2fc8],0x0
JZ 0x0019f3f4
MOV ESI,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESI]
TEST EDX,EDX
JZ 0x0019f3f4
MOV EAX,dword ptr [EAX + 0x2fcc]
MOV ECX,0x2
LEA EDI,[EBX + 0xffefe758]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA CL
SBB CL,0x0
TEST CL,CL
JNZ 0x0019f400
MOV EAX,dword ptr [EBX + 0xfffffea0]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x0019f41d
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
LEA EDX,[EBX + 0xfff0a8a9]
PUSH EDX
PUSH EAX
CALL 0x00029300
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0019f440
MOV EDI,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [EDI]
SUB ESP,0x4
PUSH EAX
PUSH dword ptr [ESP + 0x2c]
PUSH EDX
CALL 0x0019f180
ADD ESP,0x10
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x00029090
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x00029100
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [EBP]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x0019f486
MOV EDI,dword ptr [EAX + 0x2fcc]
SUB ESP,0xc
LEA EAX,[EBX + 0xfff0ee0c]
PUSH EAX
CALL 0x000293b0
ADD ESP,0xc
PUSH ESI
PUSH EDI
PUSH EAX
CALL 0x000654b0
ADD ESP,0x10
JMP 0x0019f3f4
PUSH EAX
LEA EAX,[EBX + 0xfff0ee34]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_0019f390(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_0019f390(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0019f390(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 identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "FILE *pFVar2;" type_identifier (pointer_declarator "*pFVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (expression_statement "iVar6 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar6 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }" { (labeled_statement "LAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);" statement_identifier : comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",iVar6)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;)) })) (if_statement "if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar6 + 0x2fc8) != '\0')" ( (binary_expression "*(char *)(iVar6 + 0x2fc8) != '\0'" (pointer_expression "*(char *)(iVar6 + 0x2fc8)" * (cast_expression "(char *)(iVar6 + 0x2fc8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2fc8)" ( (binary_expression "iVar6 + 0x2fc8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }" { (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = iVar8 == 0;" (assignment_expression "bVar12 = iVar8 == 0" identifier = (binary_expression "iVar8 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) (expression_statement "pbVar9 = *(byte **)(iVar6 + 0x2fcc);" (assignment_expression "pbVar9 = *(byte **)(iVar6 + 0x2fcc)" identifier = (pointer_expression "*(byte **)(iVar6 + 0x2fcc)" * (cast_expression "(byte **)(iVar6 + 0x2fcc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x2fcc)" ( (binary_expression "iVar6 + 0x2fcc" identifier + number_literal) ))))) ;) (expression_statement "pbVar10 = &DAT_0028d758;" (assignment_expression "pbVar10 = &DAT_0028d758" identifier = (pointer_expression "&DAT_0028d758" & identifier)) ;) (do_statement "do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      }" { (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" if (parenthesized_expression "((!bVar11 && !bVar12) == bVar11)" ( (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" ( (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier) )) (compound_statement "{\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }" { (expression_statement "pFVar2 = *(FILE **)PTR_stdout_0038eea0;" (assignment_expression "pFVar2 = *(FILE **)PTR_stdout_0038eea0" identifier = (pointer_expression "*(FILE **)PTR_stdout_0038eea0" * (cast_expression "(FILE **)PTR_stdout_0038eea0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }" if (parenthesized_expression "(pFVar2 != (FILE *)0x0)" ( (binary_expression "pFVar2 != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }" { (labeled_statement "LAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);" statement_identifier : (expression_statement "FUN_0019f180(iVar8,param_2,pFVar2);" (call_expression "FUN_0019f180(iVar8,param_2,pFVar2)" identifier (argument_list "(iVar8,param_2,pFVar2)" ( identifier , identifier , identifier ))) ;)) (return_statement "return;" return ;) })) }) (else_clause "else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" else (compound_statement "{\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" { (expression_statement "pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");" (assignment_expression "pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w")" identifier = (call_expression "fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w")" identifier (argument_list "((char *)*(byte **)(iVar6 + 0x2fcc),"w")" ( (cast_expression "(char *)*(byte **)(iVar6 + 0x2fcc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(byte **)(iVar6 + 0x2fcc)" * (cast_expression "(byte **)(iVar6 + 0x2fcc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x2fcc)" ( (binary_expression "iVar6 + 0x2fcc" identifier + number_literal) ))))) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }" if (parenthesized_expression "(pFVar2 != (FILE *)0x0)" ( (binary_expression "pFVar2 != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }" { (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_0019f41d;" goto statement_identifier ;) })) (expression_statement "piVar3 = __errno_location();" (assignment_expression "piVar3 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = strerror(*piVar3);" (assignment_expression "pcVar4 = strerror(*piVar3)" identifier = (call_expression "strerror(*piVar3)" identifier (argument_list "(*piVar3)" ( (pointer_expression "*piVar3" * identifier) )))) ;) (expression_statement "iVar6 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar6 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) goto LAB_0019f486;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0019f486;" goto statement_identifier ;)) (expression_statement "uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);" (assignment_expression "uVar1 = *(undefined4 *)(iVar6 + 0x2fcc)" identifier = (pointer_expression "*(undefined4 *)(iVar6 + 0x2fcc)" * (cast_expression "(undefined4 *)(iVar6 + 0x2fcc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2fcc)" ( (binary_expression "iVar6 + 0x2fcc" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = gettext("cannot open symbol count file %s: %s");" (assignment_expression "uVar5 = gettext("cannot open symbol count file %s: %s")" identifier = (call_expression "gettext("cannot open symbol count file %s: %s")" identifier (argument_list "("cannot open symbol count file %s: %s")" ( (string_literal ""cannot open symbol count file %s: %s"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar5,uVar1,pcVar4);" (call_expression "FUN_000654b0(uVar5,uVar1,pcVar4)" identifier (argument_list "(uVar5,uVar1,pcVar4)" ( identifier , identifier , identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void print_symbol_counts(Cref * this, Symbol_table * symtab) */\n\nvoid __thiscall gold::Cref::print_symbol_counts(Cref *this,Symbol_table *symtab)\n\n{\n  General_options *pGVar1;\n  byte *__filename;\n  char *pcVar2;\n  FILE *f;\n  int *piVar3;\n  char *pcVar4;\n  char *format;\n  int iVar5;\n  Cref_inputs *this_00;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar1->print_symbol_counts_).user_set_via_option != false) {\n    this_00 = this->inputs_;\n    bVar8 = false;\n    bVar9 = this_00 == (Cref_inputs *)0x0;\n    if (!bVar9) {\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Cref::print_symbol_counts(Cref *this,Symbol_table *symtab)\n\n{\n  General_options *pGVar1;\n  byte *__filename;\n  char *pcVar2;\n  FILE *f;\n  int *piVar3;\n  char *pcVar4;\n  char *format;\n  int iVar5;\n  Cref_inputs *this_00;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar1->print_symbol_counts_).user_set_via_option != false) {\n    this_00 = this->inputs_;\n    bVar8 = false;\n    bVar9 = this_00 == (Cref_inputs *)0x0;\n    if (!bVar9) {\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Cref::" identifier : : identifier : :) (function_declarator "print_symbol_counts(Cref *this,Symbol_table *symtab)" identifier (parameter_list "(Cref *this,Symbol_table *symtab)" ( (parameter_declaration "Cref *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) ))) (compound_statement "{\n  General_options *pGVar1;\n  byte *__filename;\n  char *pcVar2;\n  FILE *f;\n  int *piVar3;\n  char *pcVar4;\n  char *format;\n  int iVar5;\n  Cref_inputs *this_00;\n  byte *pbVar6;\n  byte *pbVar7;\n  bool bVar8;\n  bool bVar9;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  if ((pGVar1->print_symbol_counts_).user_set_via_option != false) {\n    this_00 = this->inputs_;\n    bVar8 = false;\n    bVar9 = this_00 == (Cref_inputs *)0x0;\n    if (!bVar9) {\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }\n  }\n  return;\n}" { (declaration "General_options *pGVar1;" type_identifier (pointer_declarator "*pGVar1" * identifier) ;) (declaration "byte *__filename;" type_identifier (pointer_declarator "*__filename" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "FILE *f;" type_identifier (pointer_declarator "*f" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "Cref_inputs *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (expression_statement "pGVar1 = parameters->options_;" (assignment_expression "pGVar1 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar1 == (General_options *)0x0) {\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(pGVar1 == (General_options *)0x0)" ( (binary_expression "pGVar1 == (General_options *)0x0" identifier == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_0019f486:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;)) })) (if_statement "if ((pGVar1->print_symbol_counts_).user_set_via_option != false) {\n    this_00 = this->inputs_;\n    bVar8 = false;\n    bVar9 = this_00 == (Cref_inputs *)0x0;\n    if (!bVar9) {\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }\n  }" if (parenthesized_expression "((pGVar1->print_symbol_counts_).user_set_via_option != false)" ( (binary_expression "(pGVar1->print_symbol_counts_).user_set_via_option != false" (field_expression "(pGVar1->print_symbol_counts_).user_set_via_option" (parenthesized_expression "(pGVar1->print_symbol_counts_)" ( (field_expression "pGVar1->print_symbol_counts_" identifier -> field_identifier) )) . field_identifier) != false) )) (compound_statement "{\n    this_00 = this->inputs_;\n    bVar8 = false;\n    bVar9 = this_00 == (Cref_inputs *)0x0;\n    if (!bVar9) {\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }\n  }" { (expression_statement "this_00 = this->inputs_;" (assignment_expression "this_00 = this->inputs_" identifier = (field_expression "this->inputs_" identifier -> field_identifier)) ;) (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "bVar9 = this_00 == (Cref_inputs *)0x0;" (assignment_expression "bVar9 = this_00 == (Cref_inputs *)0x0" identifier = (binary_expression "this_00 == (Cref_inputs *)0x0" identifier == (cast_expression "(Cref_inputs *)0x0" ( (type_descriptor "Cref_inputs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar9) {\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      iVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_0028d758;\n      do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);\n      if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }\n    }" { (expression_statement "__filename = (byte *)(pGVar1->print_symbol_counts_).value;" (assignment_expression "__filename = (byte *)(pGVar1->print_symbol_counts_).value" identifier = (cast_expression "(byte *)(pGVar1->print_symbol_counts_).value" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pGVar1->print_symbol_counts_).value" (parenthesized_expression "(pGVar1->print_symbol_counts_)" ( (field_expression "pGVar1->print_symbol_counts_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar5 = 2;" (assignment_expression "iVar5 = 2" identifier = number_literal) ;) (expression_statement "pbVar6 = __filename;" (assignment_expression "pbVar6 = __filename" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_0028d758;" (assignment_expression "pbVar7 = &DAT_0028d758" identifier = (pointer_expression "&DAT_0028d758" & identifier)) ;) (do_statement "do {\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      } while (bVar9);" do (compound_statement "{\n        if (iVar5 == 0) break;\n        iVar5 = iVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      }" { (if_statement "if (iVar5 == 0) break;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar6 < *pbVar7;" (assignment_expression "bVar8 = *pbVar6 < *pbVar7" identifier = (binary_expression "*pbVar6 < *pbVar7" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar7;" (assignment_expression "bVar9 = *pbVar6 == *pbVar7" identifier = (binary_expression "*pbVar6 == *pbVar7" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar8 && !bVar9) == bVar8) {\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }" if (parenthesized_expression "((!bVar8 && !bVar9) == bVar8)" ( (binary_expression "(!bVar8 && !bVar9) == bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier) )) (compound_statement "{\n        f = *(FILE **)PTR_stdout_0038eea0;\n        if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }\n      }" { (expression_statement "f = *(FILE **)PTR_stdout_0038eea0;" (assignment_expression "f = *(FILE **)PTR_stdout_0038eea0" identifier = (pointer_expression "*(FILE **)PTR_stdout_0038eea0" * (cast_expression "(FILE **)PTR_stdout_0038eea0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (f != (FILE *)0x0) {\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }" if (parenthesized_expression "(f != (FILE *)0x0)" ( (binary_expression "f != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n          return;\n        }" { (labeled_statement "LAB_0019f41d:\n          Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);" statement_identifier : (labeled_statement "Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);" statement_identifier : (ERROR ":" :) (expression_statement "print_symbol_counts(this_00,symtab,(FILE *)f);" (call_expression "print_symbol_counts(this_00,symtab,(FILE *)f)" identifier (argument_list "(this_00,symtab,(FILE *)f)" ( identifier , identifier , (cast_expression "(FILE *)f" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (return_statement "return;" return ;) })) }) (else_clause "else {\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }" else (compound_statement "{\n        f = fopen64((char *)__filename,"w");\n        if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;\n        pcVar2 = (parameters->options_->print_symbol_counts_).value;\n        format = (char *)gettext("cannot open symbol count file %s: %s");\n        gold_error(format,pcVar2,pcVar4);\n      }" { (expression_statement "f = fopen64((char *)__filename,"w");" (assignment_expression "f = fopen64((char *)__filename,"w")" identifier = (call_expression "fopen64((char *)__filename,"w")" identifier (argument_list "((char *)__filename,"w")" ( (cast_expression "(char *)__filename" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (f != (FILE *)0x0) {\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }" if (parenthesized_expression "(f != (FILE *)0x0)" ( (binary_expression "f != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          this_00 = this->inputs_;\n          goto LAB_0019f41d;\n        }" { (expression_statement "this_00 = this->inputs_;" (assignment_expression "this_00 = this->inputs_" identifier = (field_expression "this->inputs_" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0019f41d;" goto statement_identifier ;) })) (expression_statement "piVar3 = __errno_location();" (assignment_expression "piVar3 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = strerror(*piVar3);" (assignment_expression "pcVar4 = strerror(*piVar3)" identifier = (call_expression "strerror(*piVar3)" identifier (argument_list "(*piVar3)" ( (pointer_expression "*piVar3" * identifier) )))) ;) (if_statement "if (parameters->options_ == (General_options *)0x0) goto LAB_0019f486;" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0019f486;" goto statement_identifier ;)) (expression_statement "pcVar2 = (parameters->options_->print_symbol_counts_).value;" (assignment_expression "pcVar2 = (parameters->options_->print_symbol_counts_).value" identifier = (field_expression "(parameters->options_->print_symbol_counts_).value" (parenthesized_expression "(parameters->options_->print_symbol_counts_)" ( (field_expression "parameters->options_->print_symbol_counts_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "format = (char *)gettext("cannot open symbol count file %s: %s");" (assignment_expression "format = (char *)gettext("cannot open symbol count file %s: %s")" identifier = (cast_expression "(char *)gettext("cannot open symbol count file %s: %s")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("cannot open symbol count file %s: %s")" identifier (argument_list "("cannot open symbol count file %s: %s")" ( (string_literal ""cannot open symbol count file %s: %s"" " string_content ") ))))) ;) (expression_statement "gold_error(format,pcVar2,pcVar4);" (call_expression "gold_error(format,pcVar2,pcVar4)" identifier (argument_list "(format,pcVar2,pcVar4)" ( identifier , identifier , identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0019f390(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_0019f390(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0019f390(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 identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "FILE *pFVar2;" type_identifier (pointer_declarator "*pFVar2" * identifier) ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (expression_statement "iVar6 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar6 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }" { (labeled_statement "LAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);" statement_identifier : (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",iVar6)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;)) })) (if_statement "if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar6 + 0x2fc8) != '\0')" ( (binary_expression "*(char *)(iVar6 + 0x2fc8) != '\0'" (pointer_expression "*(char *)(iVar6 + 0x2fc8)" * (cast_expression "(char *)(iVar6 + 0x2fc8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2fc8)" ( (binary_expression "iVar6 + 0x2fc8" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }" { (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = iVar8 == 0;" (assignment_expression "bVar12 = iVar8 == 0" identifier = (binary_expression "iVar8 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) (expression_statement "pbVar9 = *(byte **)(iVar6 + 0x2fcc);" (assignment_expression "pbVar9 = *(byte **)(iVar6 + 0x2fcc)" identifier = (pointer_expression "*(byte **)(iVar6 + 0x2fcc)" * (cast_expression "(byte **)(iVar6 + 0x2fcc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x2fcc)" ( (binary_expression "iVar6 + 0x2fcc" identifier + number_literal) ))))) ;) (expression_statement "pbVar10 = &DAT_0028d758;" (assignment_expression "pbVar10 = &DAT_0028d758" identifier = (pointer_expression "&DAT_0028d758" & identifier)) ;) (do_statement "do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      }" { (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" identifier = (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" identifier = (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" if (parenthesized_expression "((!bVar11 && !bVar12) == bVar11)" ( (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" ( (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar12" ! identifier)) )) == identifier) )) (compound_statement "{\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }" { (expression_statement "pFVar2 = *(FILE **)PTR_stdout_0038eea0;" (assignment_expression "pFVar2 = *(FILE **)PTR_stdout_0038eea0" identifier = (pointer_expression "*(FILE **)PTR_stdout_0038eea0" * (cast_expression "(FILE **)PTR_stdout_0038eea0" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }" if (parenthesized_expression "(pFVar2 != (FILE *)0x0)" ( (binary_expression "pFVar2 != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }" { (labeled_statement "LAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);" statement_identifier : (expression_statement "FUN_0019f180(iVar8,param_2,pFVar2);" (call_expression "FUN_0019f180(iVar8,param_2,pFVar2)" identifier (argument_list "(iVar8,param_2,pFVar2)" ( identifier , identifier , identifier ))) ;)) (return_statement "return;" return ;) })) }) (else_clause "else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" else (compound_statement "{\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" { (expression_statement "pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");" (assignment_expression "pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w")" identifier = (call_expression "fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w")" identifier (argument_list "((char *)*(byte **)(iVar6 + 0x2fcc),"w")" ( (cast_expression "(char *)*(byte **)(iVar6 + 0x2fcc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(byte **)(iVar6 + 0x2fcc)" * (cast_expression "(byte **)(iVar6 + 0x2fcc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar6 + 0x2fcc)" ( (binary_expression "iVar6 + 0x2fcc" identifier + number_literal) ))))) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }" if (parenthesized_expression "(pFVar2 != (FILE *)0x0)" ( (binary_expression "pFVar2 != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }" { (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_0019f41d;" goto statement_identifier ;) })) (expression_statement "piVar3 = __errno_location();" (assignment_expression "piVar3 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = strerror(*piVar3);" (assignment_expression "pcVar4 = strerror(*piVar3)" identifier = (call_expression "strerror(*piVar3)" identifier (argument_list "(*piVar3)" ( (pointer_expression "*piVar3" * identifier) )))) ;) (expression_statement "iVar6 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar6 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar6 == 0) goto LAB_0019f486;" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0019f486;" goto statement_identifier ;)) (expression_statement "uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);" (assignment_expression "uVar1 = *(undefined4 *)(iVar6 + 0x2fcc)" identifier = (pointer_expression "*(undefined4 *)(iVar6 + 0x2fcc)" * (cast_expression "(undefined4 *)(iVar6 + 0x2fcc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x2fcc)" ( (binary_expression "iVar6 + 0x2fcc" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = gettext("cannot open symbol count file %s: %s");" (assignment_expression "uVar5 = gettext("cannot open symbol count file %s: %s")" identifier = (call_expression "gettext("cannot open symbol count file %s: %s")" identifier (argument_list "("cannot open symbol count file %s: %s")" ( (string_literal ""cannot open symbol count file %s: %s"" " string_content ") )))) ;) (expression_statement "FUN_000654b0(uVar5,uVar1,pcVar4);" (call_expression "FUN_000654b0(uVar5,uVar1,pcVar4)" identifier (argument_list "(uVar5,uVar1,pcVar4)" ( identifier , identifier , identifier ))) ;) }))) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , IDENT ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }))) })) })) (return_statement return ;) })))
(function_definition "void FUN_0019f390(int *param_1,undefined4 param_2)\n\n{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0019f390(int *param_1,undefined4 param_2)" (identifier "FUN_0019f390") (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") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  FILE *pFVar2;\n  int *piVar3;\n  char *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  iVar6 = *(int *)(DAT_0038f378 + 8);\n  if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }\n  if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "FILE *pFVar2;" (type_identifier "FILE") (pointer_declarator "*pFVar2" (* "*") (identifier "pFVar2")) (; ";")) (declaration "int *piVar3;" (primitive_type "int") (pointer_declarator "*piVar3" (* "*") (identifier "piVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (expression_statement "iVar6 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar6 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar6 == 0) {\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);\n  }" ({ "{") (labeled_statement "LAB_0019f486:\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);" (statement_identifier "LAB_0019f486") (: ":") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x5c,"options",iVar6)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (identifier "iVar6") () ")"))) (; ";"))) (} "}"))) (if_statement "if (*(char *)(iVar6 + 0x2fc8) != '\0') {\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar6 + 0x2fc8) != '\0')" (( "(") (binary_expression "*(char *)(iVar6 + 0x2fc8) != '\0'" (pointer_expression "*(char *)(iVar6 + 0x2fc8)" (* "*") (cast_expression "(char *)(iVar6 + 0x2fc8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2fc8)" (( "(") (binary_expression "iVar6 + 0x2fc8" (identifier "iVar6") (+ "+") (number_literal "0x2fc8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar8 = *param_1;\n    bVar11 = false;\n    bVar12 = iVar8 == 0;\n    if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }\n  }" ({ "{") (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = iVar8 == 0;" (assignment_expression "bVar12 = iVar8 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar12) {\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }" (if "if") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (compound_statement "{\n      iVar7 = 2;\n      pbVar9 = *(byte **)(iVar6 + 0x2fcc);\n      pbVar10 = &DAT_0028d758;\n      do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }\n    }" ({ "{") (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" (identifier "iVar7") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar9 = *(byte **)(iVar6 + 0x2fcc);" (assignment_expression "pbVar9 = *(byte **)(iVar6 + 0x2fcc)" (identifier "pbVar9") (= "=") (pointer_expression "*(byte **)(iVar6 + 0x2fcc)" (* "*") (cast_expression "(byte **)(iVar6 + 0x2fcc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0x2fcc)" (( "(") (binary_expression "iVar6 + 0x2fcc" (identifier "iVar6") (+ "+") (number_literal "0x2fcc")) () ")"))))) (; ";")) (expression_statement "pbVar10 = &DAT_0028d758;" (assignment_expression "pbVar10 = &DAT_0028d758" (identifier "pbVar10") (= "=") (pointer_expression "&DAT_0028d758" (& "&") (identifier "DAT_0028d758"))) (; ";")) (do_statement "do {\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      } while (bVar12);" (do "do") (compound_statement "{\n        if (iVar7 == 0) break;\n        iVar7 = iVar7 + -1;\n        bVar11 = *pbVar9 < *pbVar10;\n        bVar12 = *pbVar9 == *pbVar10;\n        pbVar9 = pbVar9 + 1;\n        pbVar10 = pbVar10 + 1;\n      }" ({ "{") (if_statement "if (iVar7 == 0) break;" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar7 = iVar7 + -1;" (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar9 < *pbVar10;" (assignment_expression "bVar11 = *pbVar9 < *pbVar10" (identifier "bVar11") (= "=") (binary_expression "*pbVar9 < *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar12 = *pbVar9 == *pbVar10;" (assignment_expression "bVar12 = *pbVar9 == *pbVar10" (identifier "bVar12") (= "=") (binary_expression "*pbVar9 == *pbVar10" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (if_statement "if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }\n      else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" (if "if") (parenthesized_expression "((!bVar11 && !bVar12) == bVar11)" (( "(") (binary_expression "(!bVar11 && !bVar12) == bVar11" (parenthesized_expression "(!bVar11 && !bVar12)" (( "(") (binary_expression "!bVar11 && !bVar12" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar12" (! "!") (identifier "bVar12"))) () ")")) (== "==") (identifier "bVar11")) () ")")) (compound_statement "{\n        pFVar2 = *(FILE **)PTR_stdout_0038eea0;\n        if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }\n      }" ({ "{") (expression_statement "pFVar2 = *(FILE **)PTR_stdout_0038eea0;" (assignment_expression "pFVar2 = *(FILE **)PTR_stdout_0038eea0" (identifier "pFVar2") (= "=") (pointer_expression "*(FILE **)PTR_stdout_0038eea0" (* "*") (cast_expression "(FILE **)PTR_stdout_0038eea0" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdout_0038eea0")))) (; ";")) (if_statement "if (pFVar2 != (FILE *)0x0) {\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }" (if "if") (parenthesized_expression "(pFVar2 != (FILE *)0x0)" (( "(") (binary_expression "pFVar2 != (FILE *)0x0" (identifier "pFVar2") (!= "!=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);\n          return;\n        }" ({ "{") (labeled_statement "LAB_0019f41d:\n          FUN_0019f180(iVar8,param_2,pFVar2);" (statement_identifier "LAB_0019f41d") (: ":") (expression_statement "FUN_0019f180(iVar8,param_2,pFVar2);" (call_expression "FUN_0019f180(iVar8,param_2,pFVar2)" (identifier "FUN_0019f180") (argument_list "(iVar8,param_2,pFVar2)" (( "(") (identifier "iVar8") (, ",") (identifier "param_2") (, ",") (identifier "pFVar2") () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" (else "else") (compound_statement "{\n        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");\n        if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }\n        piVar3 = __errno_location();\n        pcVar4 = strerror(*piVar3);\n        iVar6 = *(int *)(DAT_0038f378 + 8);\n        if (iVar6 == 0) goto LAB_0019f486;\n        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);\n        uVar5 = gettext("cannot open symbol count file %s: %s");\n        FUN_000654b0(uVar5,uVar1,pcVar4);\n      }" ({ "{") (expression_statement "pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");" (assignment_expression "pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w")" (identifier "pFVar2") (= "=") (call_expression "fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w")" (identifier "fopen64") (argument_list "((char *)*(byte **)(iVar6 + 0x2fcc),"w")" (( "(") (cast_expression "(char *)*(byte **)(iVar6 + 0x2fcc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*(byte **)(iVar6 + 0x2fcc)" (* "*") (cast_expression "(byte **)(iVar6 + 0x2fcc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar6 + 0x2fcc)" (( "(") (binary_expression "iVar6 + 0x2fcc" (identifier "iVar6") (+ "+") (number_literal "0x2fcc")) () ")"))))) (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (if_statement "if (pFVar2 != (FILE *)0x0) {\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }" (if "if") (parenthesized_expression "(pFVar2 != (FILE *)0x0)" (( "(") (binary_expression "pFVar2 != (FILE *)0x0" (identifier "pFVar2") (!= "!=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          iVar8 = *param_1;\n          goto LAB_0019f41d;\n        }" ({ "{") (expression_statement "iVar8 = *param_1;" (assignment_expression "iVar8 = *param_1" (identifier "iVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_0019f41d;" (goto "goto") (statement_identifier "LAB_0019f41d") (; ";")) (} "}"))) (expression_statement "piVar3 = __errno_location();" (assignment_expression "piVar3 = __errno_location()" (identifier "piVar3") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar4 = strerror(*piVar3);" (assignment_expression "pcVar4 = strerror(*piVar3)" (identifier "pcVar4") (= "=") (call_expression "strerror(*piVar3)" (identifier "strerror") (argument_list "(*piVar3)" (( "(") (pointer_expression "*piVar3" (* "*") (identifier "piVar3")) () ")")))) (; ";")) (expression_statement "iVar6 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar6 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar6 == 0) goto LAB_0019f486;" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0019f486;" (goto "goto") (statement_identifier "LAB_0019f486") (; ";"))) (expression_statement "uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);" (assignment_expression "uVar1 = *(undefined4 *)(iVar6 + 0x2fcc)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(iVar6 + 0x2fcc)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0x2fcc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x2fcc)" (( "(") (binary_expression "iVar6 + 0x2fcc" (identifier "iVar6") (+ "+") (number_literal "0x2fcc")) () ")"))))) (; ";")) (expression_statement "uVar5 = gettext("cannot open symbol count file %s: %s");" (assignment_expression "uVar5 = gettext("cannot open symbol count file %s: %s")" (identifier "uVar5") (= "=") (call_expression "gettext("cannot open symbol count file %s: %s")" (identifier "gettext") (argument_list "("cannot open symbol count file %s: %s")" (( "(") (string_literal ""cannot open symbol count file %s: %s"" (" """) (string_content "cannot open symbol count file %s: %s") (" """)) () ")")))) (; ";")) (expression_statement "FUN_000654b0(uVar5,uVar1,pcVar4);" (call_expression "FUN_000654b0(uVar5,uVar1,pcVar4)" (identifier "FUN_000654b0") (argument_list "(uVar5,uVar1,pcVar4)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar1") (, ",") (identifier "pcVar4") () ")"))) (; ";")) (} "}")))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void print_symbol_counts(Cref * this, Symbol_table * symtab) */

void __thiscall gold::type_1::function_1(type_1 *this,type_2 *symtab)

{
  type_3 *var_1;
  type_4 *__filename;
  char *pcVar2;
  type_5 *var_8;
  int *piVar3;
  char *pcVar4;
  char *format;
  int var_4;
  type_6 *var_3;
  type_4 *var_5;
  type_4 *var_6;
  bool var_7;
  bool bVar9;
  
  var_1 = parameters->options_;
  if (var_1 == (type_3 *)0x0) {
LAB_0019f486:
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/parameters.h",0x5c,"options");
  }
  if ((var_1->print_symbol_counts_).user_set_via_option != false) {
    var_3 = this->inputs_;
    var_7 = false;
    bVar9 = var_3 == (type_6 *)0x0;
    if (!bVar9) {
      __filename = (type_4 *)(var_1->print_symbol_counts_).value;
      var_4 = 2;
      var_5 = __filename;
      var_6 = &DAT_0028d758;
      do {
        if (var_4 == 0) break;
        var_4 = var_4 + -1;
        var_7 = *var_5 < *var_6;
        bVar9 = *var_5 == *var_6;
        var_5 = var_5 + 1;
        var_6 = var_6 + 1;
      } while (bVar9);
      if ((!var_7 && !bVar9) == var_7) {
        var_8 = *(type_5 **)PTR_stdout_0038eea0;
        if (var_8 != (type_5 *)0x0) {
LAB_0019f41d:
          Cref_inputs::function_1(var_3,symtab,(type_5 *)var_8);
          return;
        }
      }
      else {
        var_8 = var_9((char *)__filename,"w");
        if (var_8 != (type_5 *)0x0) {
          var_3 = this->inputs_;
          goto LAB_0019f41d;
        }
        piVar3 = var_10();
        pcVar4 = var_11(*piVar3);
        if (parameters->options_ == (type_3 *)0x0) goto LAB_0019f486;
        pcVar2 = (parameters->options_->print_symbol_counts_).value;
        format = (char *)var_12("cannot open symbol count file %s: %s");
        var_13(format,pcVar2,pcVar4);
      }
    }
  }
  return;
}


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

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

void MASKED(int *param_1,undefined4 param_2)

{
  undefined4 uVar1;
  FILE *pFVar2;
  int *piVar3;
  char *pcVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  byte *pbVar9;
  byte *pbVar10;
  bool bVar11;
  bool bVar12;
  
  iVar6 = *(int *)(DAT_0038f378 + 8);
  if (iVar6 == 0) {
LAB_0019f486:
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",iVar6);
  }
  if (*(char *)(iVar6 + 0x2fc8) != '\0') {
    iVar8 = *param_1;
    bVar11 = false;
    bVar12 = iVar8 == 0;
    if (!bVar12) {
      iVar7 = 2;
      pbVar9 = *(byte **)(iVar6 + 0x2fcc);
      pbVar10 = &DAT_0028d758;
      do {
        if (iVar7 == 0) break;
        iVar7 = iVar7 + -1;
        bVar11 = *pbVar9 < *pbVar10;
        bVar12 = *pbVar9 == *pbVar10;
        pbVar9 = pbVar9 + 1;
        pbVar10 = pbVar10 + 1;
      } while (bVar12);
      if ((!bVar11 && !bVar12) == bVar11) {
        pFVar2 = *(FILE **)PTR_stdout_0038eea0;
        if (pFVar2 != (FILE *)0x0) {
LAB_0019f41d:
          FUN_0019f180(iVar8,param_2,pFVar2);
          return;
        }
      }
      else {
        pFVar2 = fopen64((char *)*(byte **)(iVar6 + 0x2fcc),"w");
        if (pFVar2 != (FILE *)0x0) {
          iVar8 = *param_1;
          goto LAB_0019f41d;
        }
        piVar3 = __errno_location();
        pcVar4 = strerror(*piVar3);
        iVar6 = *(int *)(DAT_0038f378 + 8);
        if (iVar6 == 0) goto LAB_0019f486;
        uVar1 = *(undefined4 *)(iVar6 + 0x2fcc);
        uVar5 = gettext("cannot open symbol count file %s: %s");
        FUN_000654b0(uVar5,uVar1,pcVar4);
      }
    }
  }
  return;
}

