
/* 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;
  long lVar5;
  byte *pbVar6;
  byte *pbVar7;
  Cref_inputs *this_00;
  bool bVar8;
  bool bVar9;
  
  pGVar1 = parameters->options_;
  if (pGVar1 == (General_options *)0x0) {
LAB_00297380:
                    /* 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;
      lVar5 = 2;
      pbVar6 = __filename;
      pbVar7 = &DAT_00379a38;
      do {
        if (lVar5 == 0) break;
        lVar5 = lVar5 + -1;
        bVar8 = *pbVar6 < *pbVar7;
        bVar9 = *pbVar6 == *pbVar7;
        pbVar6 = pbVar6 + 1;
        pbVar7 = pbVar7 + 1;
      } while (bVar9);
      if ((!bVar8 && !bVar9) == bVar8) {
        f = stdout;
        if (stdout == (FILE *)0x0) {
          return;
        }
      }
      else {
        f = fopen64((char *)__filename,"w");
        if (f == (FILE *)0x0) {
          piVar3 = __errno_location();
          pcVar4 = strerror(*piVar3);
          if (parameters->options_ != (General_options *)0x0) {
            pcVar2 = (parameters->options_->print_symbol_counts_).value;
            format = (char *)gettext("cannot open symbol count file %s: %s");
            gold_error(format,pcVar2,pcVar4);
            return;
          }
          goto LAB_00297380;
        }
        this_00 = this->inputs_;
      }
      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);
      return;
    }
  }
  return;
}



void FUN_002972a0(long *param_1,undefined8 param_2)

{
  long lVar1;
  undefined8 uVar2;
  FILE *pFVar3;
  int *piVar4;
  char *pcVar5;
  undefined8 uVar6;
  long lVar7;
  byte *pbVar8;
  byte *pbVar9;
  long lVar10;
  bool bVar11;
  bool bVar12;
  
  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);
  if (lVar1 == 0) {
LAB_00297380:
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(lVar1 + 0x4d70) != '\0') {
    lVar10 = *param_1;
    bVar11 = false;
    bVar12 = lVar10 == 0;
    if (!bVar12) {
      lVar7 = 2;
      pbVar8 = *(byte **)(lVar1 + 0x4d78);
      pbVar9 = &DAT_00379a38;
      do {
        if (lVar7 == 0) break;
        lVar7 = lVar7 + -1;
        bVar11 = *pbVar8 < *pbVar9;
        bVar12 = *pbVar8 == *pbVar9;
        pbVar8 = pbVar8 + 1;
        pbVar9 = pbVar9 + 1;
      } while (bVar12);
      if ((!bVar11 && !bVar12) == bVar11) {
        pFVar3 = stdout;
        if (stdout == (FILE *)0x0) {
          return;
        }
      }
      else {
        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");
        if (pFVar3 == (FILE *)0x0) {
          piVar4 = __errno_location();
          pcVar5 = strerror(*piVar4);
          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {
            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);
            uVar6 = gettext("cannot open symbol count file %s: %s");
            FUN_00178320(uVar6,uVar2,pcVar5);
            return;
          }
          goto LAB_00297380;
        }
        lVar10 = *param_1;
      }
      FUN_002970c0(lVar10,param_2,pFVar3);
      return;
    }
  }
  return;
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x00297380
CMP byte ptr [RAX + 0x4d70],0x0
JZ 0x002972fe
MOV R8,qword ptr [RDI]
MOV RBX,RDI
TEST R8,R8
JZ 0x002972fe
MOV RDX,qword ptr [RAX + 0x4d78]
MOV RBP,RSI
MOV ECX,0x2
LEA RDI,[0x379a38]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x00297308
MOV RDX,qword ptr [0x0043e868]
TEST RDX,RDX
JNZ 0x00297322
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV RDI,RDX
LEA RSI,[0x3867a9]
CALL 0x00147980
MOV RDX,RAX
TEST RAX,RAX
JZ 0x00297338
MOV R8,qword ptr [RBX]
ADD RSP,0x8
MOV RSI,RBP
MOV RDI,R8
POP RBX
POP RBP
JMP 0x002970c0
CALL 0x00147770
MOV EDI,dword ptr [RAX]
CALL 0x00147610
MOV RBP,RAX
MOV RAX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x00297380
MOV RBX,qword ptr [RAX + 0x4d78]
LEA RDI,[0x38b050]
CALL 0x00147320
ADD RSP,0x8
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,RAX
POP RBX
XOR EAX,EAX
POP RBP
JMP 0x00178320
LEA RDX,[0x38b080]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
(translation_unit "void FUN_002972a0(long *param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_002972a0(long *param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002972a0(long *param_1,undefined8 param_2)" identifier (parameter_list "(long *param_1,undefined8 param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "FILE *pFVar3;" type_identifier (pointer_declarator "*pFVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (expression_statement "lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) {\nLAB_00297380:\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00297380:\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_00297380:\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");" statement_identifier : comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../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 (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }" if (parenthesized_expression "(*(char *)(lVar1 + 0x4d70) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x4d70) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x4d70)" * (cast_expression "(char *)(lVar1 + 0x4d70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x4d70)" ( (binary_expression "lVar1 + 0x4d70" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }" { (expression_statement "lVar10 = *param_1;" (assignment_expression "lVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = lVar10 == 0;" (assignment_expression "bVar12 = lVar10 == 0" identifier = (binary_expression "lVar10 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }" { (expression_statement "lVar7 = 2;" (assignment_expression "lVar7 = 2" identifier = number_literal) ;) (expression_statement "pbVar8 = *(byte **)(lVar1 + 0x4d78);" (assignment_expression "pbVar8 = *(byte **)(lVar1 + 0x4d78)" identifier = (pointer_expression "*(byte **)(lVar1 + 0x4d78)" * (cast_expression "(byte **)(lVar1 + 0x4d78)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x4d78)" ( (binary_expression "lVar1 + 0x4d78" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = &DAT_00379a38;" (assignment_expression "pbVar9 = &DAT_00379a38" identifier = (pointer_expression "&DAT_00379a38" & identifier)) ;) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar8 == *pbVar9;" (assignment_expression "bVar12 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\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        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }" { (expression_statement "pFVar3 = stdout;" (assignment_expression "pFVar3 = stdout" identifier = identifier) ;) (if_statement "if (stdout == (FILE *)0x0) {\n          return;\n        }" if (parenthesized_expression "(stdout == (FILE *)0x0)" ( (binary_expression "stdout == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }" else (compound_statement "{\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }" { (expression_statement "pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");" (assignment_expression "pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w")" identifier = (call_expression "fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w")" identifier (argument_list "((char *)*(byte **)(lVar1 + 0x4d78),"w")" ( (cast_expression "(char *)*(byte **)(lVar1 + 0x4d78)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(byte **)(lVar1 + 0x4d78)" * (cast_expression "(byte **)(lVar1 + 0x4d78)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x4d78)" ( (binary_expression "lVar1 + 0x4d78" identifier + number_literal) ))))) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }" if (parenthesized_expression "(pFVar3 == (FILE *)0x0)" ( (binary_expression "pFVar3 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }" { (expression_statement "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);" (assignment_expression "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = gettext("cannot open symbol count file %s: %s");" (assignment_expression "uVar6 = 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_00178320(uVar6,uVar2,pcVar5);" (call_expression "FUN_00178320(uVar6,uVar2,pcVar5)" identifier (argument_list "(uVar6,uVar2,pcVar5)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_00297380;" goto statement_identifier ;) })) (expression_statement "lVar10 = *param_1;" (assignment_expression "lVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }))) (expression_statement "FUN_002970c0(lVar10,param_2,pFVar3);" (call_expression "FUN_002970c0(lVar10,param_2,pFVar3)" identifier (argument_list "(lVar10,param_2,pFVar3)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* 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  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  Cref_inputs *this_00;\n  bool bVar8;\n  bool bVar9;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_00297380:\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      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\n    }\n  }\n  return;\n}\n\n" 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  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  Cref_inputs *this_00;\n  bool bVar8;\n  bool bVar9;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_00297380:\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      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\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  long lVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  Cref_inputs *this_00;\n  bool bVar8;\n  bool bVar9;\n  \n  pGVar1 = parameters->options_;\n  if (pGVar1 == (General_options *)0x0) {\nLAB_00297380:\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      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\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 "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "Cref_inputs *this_00;" type_identifier (pointer_declarator "*this_00" * 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_00297380:\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_00297380:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_00297380:\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      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\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      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\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      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\n    }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n      __filename = (byte *)(pGVar1->print_symbol_counts_).value;\n      lVar5 = 2;\n      pbVar6 = __filename;\n      pbVar7 = &DAT_00379a38;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }\n      Cref_inputs::print_symbol_counts(this_00,symtab,(FILE *)f);\n      return;\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 "lVar5 = 2;" (assignment_expression "lVar5 = 2" identifier = number_literal) ;) (expression_statement "pbVar6 = __filename;" (assignment_expression "pbVar6 = __filename" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_00379a38;" (assignment_expression "pbVar7 = &DAT_00379a38" identifier = (pointer_expression "&DAT_00379a38" & identifier)) ;) (do_statement "do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -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 (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar8 = *pbVar6 < *pbVar7;\n        bVar9 = *pbVar6 == *pbVar7;\n        pbVar6 = pbVar6 + 1;\n        pbVar7 = pbVar7 + 1;\n      }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\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 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }" { (expression_statement "f = stdout;" (assignment_expression "f = stdout" identifier = identifier) ;) (if_statement "if (stdout == (FILE *)0x0) {\n          return;\n        }" if (parenthesized_expression "(stdout == (FILE *)0x0)" ( (binary_expression "stdout == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\n      }" else (compound_statement "{\n        f = fopen64((char *)__filename,"w");\n        if (f == (FILE *)0x0) {\n          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }\n        this_00 = this->inputs_;\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          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\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          piVar3 = __errno_location();\n          pcVar4 = strerror(*piVar3);\n          if (parameters->options_ != (General_options *)0x0) {\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            return;\n          }\n          goto LAB_00297380;\n        }" { (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) {\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            return;\n          }" 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)) )) (compound_statement "{\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            return;\n          }" { (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 ;) })) (goto_statement "goto LAB_00297380;" goto statement_identifier ;) })) (expression_statement "this_00 = this->inputs_;" (assignment_expression "this_00 = this->inputs_" identifier = (field_expression "this->inputs_" identifier -> field_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 ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_002972a0(long *param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_002972a0(long *param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002972a0(long *param_1,undefined8 param_2)" identifier (parameter_list "(long *param_1,undefined8 param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "FILE *pFVar3;" type_identifier (pointer_declarator "*pFVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (expression_statement "lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(lVar1 == 0)" ( (binary_expression "lVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" { (labeled_statement "LAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");" statement_identifier : (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../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 (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }" if (parenthesized_expression "(*(char *)(lVar1 + 0x4d70) != '\0')" ( (binary_expression "*(char *)(lVar1 + 0x4d70) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x4d70)" * (cast_expression "(char *)(lVar1 + 0x4d70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x4d70)" ( (binary_expression "lVar1 + 0x4d70" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }" { (expression_statement "lVar10 = *param_1;" (assignment_expression "lVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar12 = lVar10 == 0;" (assignment_expression "bVar12 = lVar10 == 0" identifier = (binary_expression "lVar10 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }" if (parenthesized_expression "(!bVar12)" ( (unary_expression "!bVar12" ! identifier) )) (compound_statement "{\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }" { (expression_statement "lVar7 = 2;" (assignment_expression "lVar7 = 2" identifier = number_literal) ;) (expression_statement "pbVar8 = *(byte **)(lVar1 + 0x4d78);" (assignment_expression "pbVar8 = *(byte **)(lVar1 + 0x4d78)" identifier = (pointer_expression "*(byte **)(lVar1 + 0x4d78)" * (cast_expression "(byte **)(lVar1 + 0x4d78)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x4d78)" ( (binary_expression "lVar1 + 0x4d78" identifier + number_literal) ))))) ;) (expression_statement "pbVar9 = &DAT_00379a38;" (assignment_expression "pbVar9 = &DAT_00379a38" identifier = (pointer_expression "&DAT_00379a38" & identifier)) ;) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);" do (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      }" { (if_statement "if (lVar7 == 0) break;" if (parenthesized_expression "(lVar7 == 0)" ( (binary_expression "lVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" identifier = (binary_expression "lVar7 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" identifier = (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar12 = *pbVar8 == *pbVar9;" (assignment_expression "bVar12 = *pbVar8 == *pbVar9" identifier = (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar12)" ( identifier )) ;) (if_statement "if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\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        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }" { (expression_statement "pFVar3 = stdout;" (assignment_expression "pFVar3 = stdout" identifier = identifier) ;) (if_statement "if (stdout == (FILE *)0x0) {\n          return;\n        }" if (parenthesized_expression "(stdout == (FILE *)0x0)" ( (binary_expression "stdout == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }" else (compound_statement "{\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }" { (expression_statement "pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");" (assignment_expression "pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w")" identifier = (call_expression "fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w")" identifier (argument_list "((char *)*(byte **)(lVar1 + 0x4d78),"w")" ( (cast_expression "(char *)*(byte **)(lVar1 + 0x4d78)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(byte **)(lVar1 + 0x4d78)" * (cast_expression "(byte **)(lVar1 + 0x4d78)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x4d78)" ( (binary_expression "lVar1 + 0x4d78" identifier + number_literal) ))))) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }" if (parenthesized_expression "(pFVar3 == (FILE *)0x0)" ( (binary_expression "pFVar3 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }" { (expression_statement "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);" (assignment_expression "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar6 = gettext("cannot open symbol count file %s: %s");" (assignment_expression "uVar6 = 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_00178320(uVar6,uVar2,pcVar5);" (call_expression "FUN_00178320(uVar6,uVar2,pcVar5)" identifier (argument_list "(uVar6,uVar2,pcVar5)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_00297380;" goto statement_identifier ;) })) (expression_statement "lVar10 = *param_1;" (assignment_expression "lVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) }))) (expression_statement "FUN_002970c0(lVar10,param_2,pFVar3);" (call_expression "FUN_002970c0(lVar10,param_2,pFVar3)" identifier (argument_list "(lVar10,param_2,pFVar3)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 ") ))) ;)) })) (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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (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 = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_002972a0(long *param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002972a0(long *param_1,undefined8 param_2)" (identifier "FUN_002972a0") (parameter_list "(long *param_1,undefined8 param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  FILE *pFVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  long lVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  long lVar10;\n  bool bVar11;\n  bool bVar12;\n  \n  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);\n  if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "FILE *pFVar3;" (type_identifier "FILE") (pointer_declarator "*pFVar3" (* "*") (identifier "pFVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (expression_statement "lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);" (assignment_expression "lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar1 == 0) {\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(lVar1 == 0)" (( "(") (binary_expression "lVar1 == 0" (identifier "lVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (labeled_statement "LAB_00297380:\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (statement_identifier "LAB_00297380") (: ":") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";"))) (} "}"))) (if_statement "if (*(char *)(lVar1 + 0x4d70) != '\0') {\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(lVar1 + 0x4d70) != '\0')" (( "(") (binary_expression "*(char *)(lVar1 + 0x4d70) != '\0'" (pointer_expression "*(char *)(lVar1 + 0x4d70)" (* "*") (cast_expression "(char *)(lVar1 + 0x4d70)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x4d70)" (( "(") (binary_expression "lVar1 + 0x4d70" (identifier "lVar1") (+ "+") (number_literal "0x4d70")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    lVar10 = *param_1;\n    bVar11 = false;\n    bVar12 = lVar10 == 0;\n    if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }\n  }" ({ "{") (expression_statement "lVar10 = *param_1;" (assignment_expression "lVar10 = *param_1" (identifier "lVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar12 = lVar10 == 0;" (assignment_expression "bVar12 = lVar10 == 0" (identifier "bVar12") (= "=") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar12) {\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }" (if "if") (parenthesized_expression "(!bVar12)" (( "(") (unary_expression "!bVar12" (! "!") (identifier "bVar12")) () ")")) (compound_statement "{\n      lVar7 = 2;\n      pbVar8 = *(byte **)(lVar1 + 0x4d78);\n      pbVar9 = &DAT_00379a38;\n      do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);\n      if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }\n      FUN_002970c0(lVar10,param_2,pFVar3);\n      return;\n    }" ({ "{") (expression_statement "lVar7 = 2;" (assignment_expression "lVar7 = 2" (identifier "lVar7") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar8 = *(byte **)(lVar1 + 0x4d78);" (assignment_expression "pbVar8 = *(byte **)(lVar1 + 0x4d78)" (identifier "pbVar8") (= "=") (pointer_expression "*(byte **)(lVar1 + 0x4d78)" (* "*") (cast_expression "(byte **)(lVar1 + 0x4d78)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x4d78)" (( "(") (binary_expression "lVar1 + 0x4d78" (identifier "lVar1") (+ "+") (number_literal "0x4d78")) () ")"))))) (; ";")) (expression_statement "pbVar9 = &DAT_00379a38;" (assignment_expression "pbVar9 = &DAT_00379a38" (identifier "pbVar9") (= "=") (pointer_expression "&DAT_00379a38" (& "&") (identifier "DAT_00379a38"))) (; ";")) (do_statement "do {\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      } while (bVar12);" (do "do") (compound_statement "{\n        if (lVar7 == 0) break;\n        lVar7 = lVar7 + -1;\n        bVar11 = *pbVar8 < *pbVar9;\n        bVar12 = *pbVar8 == *pbVar9;\n        pbVar8 = pbVar8 + 1;\n        pbVar9 = pbVar9 + 1;\n      }" ({ "{") (if_statement "if (lVar7 == 0) break;" (if "if") (parenthesized_expression "(lVar7 == 0)" (( "(") (binary_expression "lVar7 == 0" (identifier "lVar7") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar7 = lVar7 + -1;" (assignment_expression "lVar7 = lVar7 + -1" (identifier "lVar7") (= "=") (binary_expression "lVar7 + -1" (identifier "lVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar8 < *pbVar9;" (assignment_expression "bVar11 = *pbVar8 < *pbVar9" (identifier "bVar11") (= "=") (binary_expression "*pbVar8 < *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "bVar12 = *pbVar8 == *pbVar9;" (assignment_expression "bVar12 = *pbVar8 == *pbVar9" (identifier "bVar12") (= "=") (binary_expression "*pbVar8 == *pbVar9" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (; ";")) (if_statement "if ((!bVar11 && !bVar12) == bVar11) {\n        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }\n      else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\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        pFVar3 = stdout;\n        if (stdout == (FILE *)0x0) {\n          return;\n        }\n      }" ({ "{") (expression_statement "pFVar3 = stdout;" (assignment_expression "pFVar3 = stdout" (identifier "pFVar3") (= "=") (identifier "stdout")) (; ";")) (if_statement "if (stdout == (FILE *)0x0) {\n          return;\n        }" (if "if") (parenthesized_expression "(stdout == (FILE *)0x0)" (( "(") (binary_expression "stdout == (FILE *)0x0" (identifier "stdout") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }" (else "else") (compound_statement "{\n        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");\n        if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }\n        lVar10 = *param_1;\n      }" ({ "{") (expression_statement "pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");" (assignment_expression "pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w")" (identifier "pFVar3") (= "=") (call_expression "fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w")" (identifier "fopen64") (argument_list "((char *)*(byte **)(lVar1 + 0x4d78),"w")" (( "(") (cast_expression "(char *)*(byte **)(lVar1 + 0x4d78)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*(byte **)(lVar1 + 0x4d78)" (* "*") (cast_expression "(byte **)(lVar1 + 0x4d78)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x4d78)" (( "(") (binary_expression "lVar1 + 0x4d78" (identifier "lVar1") (+ "+") (number_literal "0x4d78")) () ")"))))) (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (if_statement "if (pFVar3 == (FILE *)0x0) {\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }" (if "if") (parenthesized_expression "(pFVar3 == (FILE *)0x0)" (( "(") (binary_expression "pFVar3 == (FILE *)0x0" (identifier "pFVar3") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          piVar4 = __errno_location();\n          pcVar5 = strerror(*piVar4);\n          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }\n          goto LAB_00297380;\n        }" ({ "{") (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar4)" (identifier "strerror") (argument_list "(*piVar4)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")")))) (; ";")) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);\n            uVar6 = gettext("cannot open symbol count file %s: %s");\n            FUN_00178320(uVar6,uVar2,pcVar5);\n            return;\n          }" ({ "{") (expression_statement "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);" (assignment_expression "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" (* "*") (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x4d78")) () ")"))))) (; ";")) (expression_statement "uVar6 = gettext("cannot open symbol count file %s: %s");" (assignment_expression "uVar6 = gettext("cannot open symbol count file %s: %s")" (identifier "uVar6") (= "=") (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_00178320(uVar6,uVar2,pcVar5);" (call_expression "FUN_00178320(uVar6,uVar2,pcVar5)" (identifier "FUN_00178320") (argument_list "(uVar6,uVar2,pcVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar2") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_00297380;" (goto "goto") (statement_identifier "LAB_00297380") (; ";")) (} "}"))) (expression_statement "lVar10 = *param_1;" (assignment_expression "lVar10 = *param_1" (identifier "lVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}")))) (expression_statement "FUN_002970c0(lVar10,param_2,pFVar3);" (call_expression "FUN_002970c0(lVar10,param_2,pFVar3)" (identifier "FUN_002970c0") (argument_list "(lVar10,param_2,pFVar3)" (( "(") (identifier "lVar10") (, ",") (identifier "param_2") (, ",") (identifier "pFVar3") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* 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_10;
  int *piVar3;
  char *pcVar4;
  char *format;
  long var_4;
  type_4 *var_5;
  type_4 *var_6;
  type_6 *var_3;
  bool var_7;
  bool bVar9;
  
  var_1 = parameters->options_;
  if (var_1 == (type_3 *)0x0) {
LAB_00297380:
                    /* 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_00379a38;
      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_10 = var_8;
        if (var_8 == (type_5 *)0x0) {
          return;
        }
      }
      else {
        var_10 = var_9((char *)__filename,"w");
        if (var_10 == (type_5 *)0x0) {
          piVar3 = var_11();
          pcVar4 = var_12(*piVar3);
          if (parameters->options_ != (type_3 *)0x0) {
            pcVar2 = (parameters->options_->print_symbol_counts_).value;
            format = (char *)var_13("cannot open symbol count file %s: %s");
            var_14(format,pcVar2,pcVar4);
            return;
          }
          goto LAB_00297380;
        }
        var_3 = this->inputs_;
      }
      Cref_inputs::function_1(var_3,symtab,(type_5 *)var_10);
      return;
    }
  }
  return;
}


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

void MASKED(long *param_1,undefined8 param_2)

{
  long lVar1;
  undefined8 uVar2;
  FILE *pFVar3;
  int *piVar4;
  char *pcVar5;
  undefined8 uVar6;
  long lVar7;
  byte *pbVar8;
  byte *pbVar9;
  long lVar10;
  bool bVar11;
  bool bVar12;
  
  lVar1 = *(long *)(PTR_DAT_0043e6b0 + 0x10);
  if (lVar1 == 0) {
LAB_00297380:
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x5c,"options");
  }
  if (*(char *)(lVar1 + 0x4d70) != '\0') {
    lVar10 = *param_1;
    bVar11 = false;
    bVar12 = lVar10 == 0;
    if (!bVar12) {
      lVar7 = 2;
      pbVar8 = *(byte **)(lVar1 + 0x4d78);
      pbVar9 = &DAT_00379a38;
      do {
        if (lVar7 == 0) break;
        lVar7 = lVar7 + -1;
        bVar11 = *pbVar8 < *pbVar9;
        bVar12 = *pbVar8 == *pbVar9;
        pbVar8 = pbVar8 + 1;
        pbVar9 = pbVar9 + 1;
      } while (bVar12);
      if ((!bVar11 && !bVar12) == bVar11) {
        pFVar3 = stdout;
        if (stdout == (FILE *)0x0) {
          return;
        }
      }
      else {
        pFVar3 = fopen64((char *)*(byte **)(lVar1 + 0x4d78),"w");
        if (pFVar3 == (FILE *)0x0) {
          piVar4 = __errno_location();
          pcVar5 = strerror(*piVar4);
          if (*(long *)(PTR_DAT_0043e6b0 + 0x10) != 0) {
            uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4d78);
            uVar6 = gettext("cannot open symbol count file %s: %s");
            FUN_00178320(uVar6,uVar2,pcVar5);
            return;
          }
          goto LAB_00297380;
        }
        lVar10 = *param_1;
      }
      FUN_002970c0(lVar10,param_2,pFVar3);
      return;
    }
  }
  return;
}

