
void ar_directory(char *ar_name,list *list,char *output)

{
  bfd *pbVar1;
  bfd *arch;
  char *__format;
  char *pcVar2;
  bfd *abfd;
  
  arch = open_inarch(ar_name,(char *)0x0);
  if (output == (char *)0x0) {
    outfile = stdout;
    if (list != (list *)0x0) goto LAB_0010647d;
LAB_001064c3:
    abfd = arch->archive_next;
    if (arch->archive_next != (bfd *)0x0) {
      do {
        pbVar1 = abfd->archive_next;
        ar_directory_doer(abfd,(bfd *)0x0);
        abfd = pbVar1;
      } while (pbVar1 != (bfd *)0x0);
      bfd_close(arch);
      goto joined_r0x001064f1;
    }
  }
  else {
    outfile = (FILE *)fopen(output,"w");
    pcVar2 = output;
    if ((FILE *)outfile == (FILE *)0x0) {
      outfile = stdout;
      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);
      pcVar2 = (char *)0x0;
      fprintf(stderr,__format,output);
    }
    output = pcVar2;
    if (list == (list *)0x0) goto LAB_001064c3;
LAB_0010647d:
    map_over_list(arch,ar_directory_doer,list);
  }
  bfd_close(arch);
joined_r0x001064f1:
  if (output != (char *)0x0) {
    fclose((FILE *)outfile);
    return;
  }
  return;
}



void FUN_00106440(undefined8 param_1,long param_2,char *param_3)

{
  long lVar1;
  long lVar2;
  char *__format;
  char *pcVar3;
  long lVar4;
  
  lVar2 = FUN_00104620(param_1,0);
  if (param_3 == (char *)0x0) {
    DAT_00110538 = stdout;
    if (param_2 != 0) goto LAB_0010647d;
LAB_001064c3:
    lVar4 = *(long *)(lVar2 + 0xd8);
    if (*(long *)(lVar2 + 0xd8) != 0) {
      do {
        lVar1 = *(long *)(lVar4 + 0xd8);
        FUN_00106360(lVar4,0);
        lVar4 = lVar1;
      } while (lVar1 != 0);
      bfd_close(lVar2);
      goto joined_r0x001064f1;
    }
  }
  else {
    DAT_00110538 = fopen(param_3,"w");
    pcVar3 = param_3;
    if (DAT_00110538 == (FILE *)0x0) {
      DAT_00110538 = stdout;
      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);
      pcVar3 = (char *)0x0;
      fprintf(stderr,__format,param_3);
    }
    param_3 = pcVar3;
    if (param_2 == 0) goto LAB_001064c3;
LAB_0010647d:
    FUN_00106380(lVar2,FUN_00106360,param_2);
  }
  bfd_close(lVar2);
joined_r0x001064f1:
  if (param_3 != (char *)0x0) {
    fclose(DAT_00110538);
    return;
  }
  return;
}


PUSH R12
MOV R12,RSI
XOR ESI,ESI
PUSH RBP
PUSH RBX
MOV RBX,RDX
CALL 0x00104620
MOV RBP,RAX
TEST RBX,RBX
JZ 0x001064b0
LEA RSI,[0x10a107]
MOV RDI,RBX
CALL 0x001024f0
MOV qword ptr [0x00110538],RAX
TEST RAX,RAX
JZ 0x00106500
TEST R12,R12
JZ 0x001064c3
MOV RDX,R12
LEA RSI,[0x106360]
MOV RDI,RBP
CALL 0x00106380
MOV RDI,RBP
CALL 0x00102510
TEST RBX,RBX
JZ 0x001064f3
MOV RDI,qword ptr [0x00110538]
POP RBX
POP RBP
POP R12
JMP 0x00102180
MOV RAX,qword ptr [0x00110420]
MOV qword ptr [0x00110538],RAX
TEST R12,R12
JNZ 0x0010647d
MOV RDI,qword ptr [RBP + 0xd8]
TEST RDI,RDI
JZ 0x0010648f
NOP
MOV R12,qword ptr [RDI + 0xd8]
XOR ESI,ESI
CALL 0x00106360
MOV RDI,R12
TEST R12,R12
JNZ 0x001064d0
MOV RDI,RBP
CALL 0x00102510
TEST RBX,RBX
JNZ 0x0010649c
POP RBX
POP RBP
POP R12
RET
MOV RAX,qword ptr [0x00110420]
MOV EDX,0x5
LEA RSI,[0x10c09b]
XOR EDI,EDI
MOV qword ptr [0x00110538],RAX
CALL 0x001021b0
MOV RDI,qword ptr [0x00110460]
MOV RDX,RBX
XOR EBX,EBX
MOV RSI,RAX
XOR EAX,EAX
CALL 0x00102340
JMP 0x00106478
(translation_unit "void FUN_00106440(undefined8 param_1,long param_2,char *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00106440(undefined8 param_1,long param_2,char *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00106440(undefined8 param_1,long param_2,char *param_3)" identifier (parameter_list "(undefined8 param_1,long param_2,char *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = FUN_00104620(param_1,0);" (assignment_expression "lVar2 = FUN_00104620(param_1,0)" identifier = (call_expression "FUN_00104620(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (if_statement "if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" if (parenthesized_expression "(param_3 == (char *)0x0)" ( (binary_expression "param_3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }" { (expression_statement "DAT_00110538 = stdout;" (assignment_expression "DAT_00110538 = stdout" identifier = identifier) ;) (if_statement "if (param_2 != 0) goto LAB_0010647d;" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0010647d;" goto statement_identifier ;)) (labeled_statement "LAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);" statement_identifier : (expression_statement "lVar4 = *(long *)(lVar2 + 0xd8);" (assignment_expression "lVar4 = *(long *)(lVar2 + 0xd8)" identifier = (pointer_expression "*(long *)(lVar2 + 0xd8)" * (cast_expression "(long *)(lVar2 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0xd8)" ( (binary_expression "lVar2 + 0xd8" identifier + number_literal) ))))) ;)) (if_statement "if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }" if (parenthesized_expression "(*(long *)(lVar2 + 0xd8) != 0)" ( (binary_expression "*(long *)(lVar2 + 0xd8) != 0" (pointer_expression "*(long *)(lVar2 + 0xd8)" * (cast_expression "(long *)(lVar2 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0xd8)" ( (binary_expression "lVar2 + 0xd8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }" { (do_statement "do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);" do (compound_statement "{\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      }" { (expression_statement "lVar1 = *(long *)(lVar4 + 0xd8);" (assignment_expression "lVar1 = *(long *)(lVar4 + 0xd8)" identifier = (pointer_expression "*(long *)(lVar4 + 0xd8)" * (cast_expression "(long *)(lVar4 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xd8)" ( (binary_expression "lVar4 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "FUN_00106360(lVar4,0);" (call_expression "FUN_00106360(lVar4,0)" identifier (argument_list "(lVar4,0)" ( identifier , number_literal ))) ;) (expression_statement "lVar4 = lVar1;" (assignment_expression "lVar4 = lVar1" identifier = identifier) ;) }) while (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) ;) (expression_statement "bfd_close(lVar2);" (call_expression "bfd_close(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) (goto_statement "goto joined_r0x001064f1;" goto statement_identifier ;) })) }) (else_clause "else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" else (compound_statement "{\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" { (expression_statement "DAT_00110538 = fopen(param_3,"w");" (assignment_expression "DAT_00110538 = fopen(param_3,"w")" identifier = (call_expression "fopen(param_3,"w")" identifier (argument_list "(param_3,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pcVar3 = param_3;" (assignment_expression "pcVar3 = param_3" identifier = identifier) ;) (if_statement "if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }" if (parenthesized_expression "(DAT_00110538 == (FILE *)0x0)" ( (binary_expression "DAT_00110538 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }" { (expression_statement "DAT_00110538 = stdout;" (assignment_expression "DAT_00110538 = stdout" identifier = identifier) ;) (expression_statement "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Can\'t open file %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Can\'t open file %s\n",5)" identifier (argument_list "(0,"Can\'t open file %s\n",5)" ( number_literal , (string_literal ""Can\'t open file %s\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fprintf(stderr,__format,param_3);" (call_expression "fprintf(stderr,__format,param_3)" identifier (argument_list "(stderr,__format,param_3)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "param_3 = pcVar3;" (assignment_expression "param_3 = pcVar3" identifier = identifier) ;) (if_statement "if (param_2 == 0) goto LAB_001064c3;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001064c3;" goto statement_identifier ;)) (labeled_statement "LAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);" statement_identifier : (expression_statement "FUN_00106380(lVar2,FUN_00106360,param_2);" (call_expression "FUN_00106380(lVar2,FUN_00106360,param_2)" identifier (argument_list "(lVar2,FUN_00106360,param_2)" ( identifier , identifier , identifier ))) ;)) }))) (expression_statement "bfd_close(lVar2);" (call_expression "bfd_close(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) (labeled_statement "joined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }" statement_identifier : (if_statement "if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }" if (parenthesized_expression "(param_3 != (char *)0x0)" ( (binary_expression "param_3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    fclose(DAT_00110538);\n    return;\n  }" { (expression_statement "fclose(DAT_00110538);" (call_expression "fclose(DAT_00110538)" identifier (argument_list "(DAT_00110538)" ( identifier ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void ar_directory(char *ar_name,list *list,char *output)\n\n{\n  bfd *pbVar1;\n  bfd *arch;\n  char *__format;\n  char *pcVar2;\n  bfd *abfd;\n  \n  arch = open_inarch(ar_name,(char *)0x0);\n  if (output == (char *)0x0) {\n    outfile = stdout;\n    if (list != (list *)0x0) goto LAB_0010647d;\nLAB_001064c3:\n    abfd = arch->archive_next;\n    if (arch->archive_next != (bfd *)0x0) {\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    outfile = (FILE *)fopen(output,"w");\n    pcVar2 = output;\n    if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }\n    output = pcVar2;\n    if (list == (list *)0x0) goto LAB_001064c3;\nLAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);\n  }\n  bfd_close(arch);\njoined_r0x001064f1:\n  if (output != (char *)0x0) {\n    fclose((FILE *)outfile);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void ar_directory(char *ar_name,list *list,char *output)\n\n{\n  bfd *pbVar1;\n  bfd *arch;\n  char *__format;\n  char *pcVar2;\n  bfd *abfd;\n  \n  arch = open_inarch(ar_name,(char *)0x0);\n  if (output == (char *)0x0) {\n    outfile = stdout;\n    if (list != (list *)0x0) goto LAB_0010647d;\nLAB_001064c3:\n    abfd = arch->archive_next;\n    if (arch->archive_next != (bfd *)0x0) {\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    outfile = (FILE *)fopen(output,"w");\n    pcVar2 = output;\n    if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }\n    output = pcVar2;\n    if (list == (list *)0x0) goto LAB_001064c3;\nLAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);\n  }\n  bfd_close(arch);\njoined_r0x001064f1:\n  if (output != (char *)0x0) {\n    fclose((FILE *)outfile);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ar_directory(char *ar_name,list *list,char *output)" identifier (parameter_list "(char *ar_name,list *list,char *output)" ( (parameter_declaration "char *ar_name" primitive_type (pointer_declarator "*ar_name" * identifier)) , (parameter_declaration "list *list" type_identifier (pointer_declarator "*list" * identifier)) , (parameter_declaration "char *output" primitive_type (pointer_declarator "*output" * identifier)) ))) (compound_statement "{\n  bfd *pbVar1;\n  bfd *arch;\n  char *__format;\n  char *pcVar2;\n  bfd *abfd;\n  \n  arch = open_inarch(ar_name,(char *)0x0);\n  if (output == (char *)0x0) {\n    outfile = stdout;\n    if (list != (list *)0x0) goto LAB_0010647d;\nLAB_001064c3:\n    abfd = arch->archive_next;\n    if (arch->archive_next != (bfd *)0x0) {\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    outfile = (FILE *)fopen(output,"w");\n    pcVar2 = output;\n    if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }\n    output = pcVar2;\n    if (list == (list *)0x0) goto LAB_001064c3;\nLAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);\n  }\n  bfd_close(arch);\njoined_r0x001064f1:\n  if (output != (char *)0x0) {\n    fclose((FILE *)outfile);\n    return;\n  }\n  return;\n}" { (declaration "bfd *pbVar1;" type_identifier (pointer_declarator "*pbVar1" * identifier) ;) (declaration "bfd *arch;" type_identifier (pointer_declarator "*arch" * identifier) ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "bfd *abfd;" type_identifier (pointer_declarator "*abfd" * identifier) ;) (expression_statement "arch = open_inarch(ar_name,(char *)0x0);" (assignment_expression "arch = open_inarch(ar_name,(char *)0x0)" identifier = (call_expression "open_inarch(ar_name,(char *)0x0)" identifier (argument_list "(ar_name,(char *)0x0)" ( identifier , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (output == (char *)0x0) {\n    outfile = stdout;\n    if (list != (list *)0x0) goto LAB_0010647d;\nLAB_001064c3:\n    abfd = arch->archive_next;\n    if (arch->archive_next != (bfd *)0x0) {\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    outfile = (FILE *)fopen(output,"w");\n    pcVar2 = output;\n    if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }\n    output = pcVar2;\n    if (list == (list *)0x0) goto LAB_001064c3;\nLAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);\n  }" if (parenthesized_expression "(output == (char *)0x0)" ( (binary_expression "output == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    outfile = stdout;\n    if (list != (list *)0x0) goto LAB_0010647d;\nLAB_001064c3:\n    abfd = arch->archive_next;\n    if (arch->archive_next != (bfd *)0x0) {\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }\n  }" { (expression_statement "outfile = stdout;" (assignment_expression "outfile = stdout" identifier = identifier) ;) (if_statement "if (list != (list *)0x0) goto LAB_0010647d;" if (parenthesized_expression "(list != (list *)0x0)" ( (binary_expression "list != (list *)0x0" identifier != (cast_expression "(list *)0x0" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010647d;" goto statement_identifier ;)) (labeled_statement "LAB_001064c3:\n    abfd = arch->archive_next;" statement_identifier : (expression_statement "abfd = arch->archive_next;" (assignment_expression "abfd = arch->archive_next" identifier = (field_expression "arch->archive_next" identifier -> field_identifier)) ;)) (if_statement "if (arch->archive_next != (bfd *)0x0) {\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }" if (parenthesized_expression "(arch->archive_next != (bfd *)0x0)" ( (binary_expression "arch->archive_next != (bfd *)0x0" (field_expression "arch->archive_next" identifier -> field_identifier) != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);\n      bfd_close(arch);\n      goto joined_r0x001064f1;\n    }" { (do_statement "do {\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      } while (pbVar1 != (bfd *)0x0);" do (compound_statement "{\n        pbVar1 = abfd->archive_next;\n        ar_directory_doer(abfd,(bfd *)0x0);\n        abfd = pbVar1;\n      }" { (expression_statement "pbVar1 = abfd->archive_next;" (assignment_expression "pbVar1 = abfd->archive_next" identifier = (field_expression "abfd->archive_next" identifier -> field_identifier)) ;) (expression_statement "ar_directory_doer(abfd,(bfd *)0x0);" (call_expression "ar_directory_doer(abfd,(bfd *)0x0)" identifier (argument_list "(abfd,(bfd *)0x0)" ( identifier , (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "abfd = pbVar1;" (assignment_expression "abfd = pbVar1" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar1 != (bfd *)0x0)" ( (binary_expression "pbVar1 != (bfd *)0x0" identifier != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bfd_close(arch);" (call_expression "bfd_close(arch)" identifier (argument_list "(arch)" ( identifier ))) ;) (goto_statement "goto joined_r0x001064f1;" goto statement_identifier ;) })) }) (else_clause "else {\n    outfile = (FILE *)fopen(output,"w");\n    pcVar2 = output;\n    if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }\n    output = pcVar2;\n    if (list == (list *)0x0) goto LAB_001064c3;\nLAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);\n  }" else (compound_statement "{\n    outfile = (FILE *)fopen(output,"w");\n    pcVar2 = output;\n    if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }\n    output = pcVar2;\n    if (list == (list *)0x0) goto LAB_001064c3;\nLAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);\n  }" { (expression_statement "outfile = (FILE *)fopen(output,"w");" (assignment_expression "outfile = (FILE *)fopen(output,"w")" identifier = (cast_expression "(FILE *)fopen(output,"w")" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "fopen(output,"w")" identifier (argument_list "(output,"w")" ( identifier , (string_literal ""w"" " string_content ") ))))) ;) (expression_statement "pcVar2 = output;" (assignment_expression "pcVar2 = output" identifier = identifier) ;) (if_statement "if ((FILE *)outfile == (FILE *)0x0) {\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }" if (parenthesized_expression "((FILE *)outfile == (FILE *)0x0)" ( (binary_expression "(FILE *)outfile == (FILE *)0x0" (cast_expression "(FILE *)outfile" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      outfile = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar2 = (char *)0x0;\n      fprintf(stderr,__format,output);\n    }" { (expression_statement "outfile = stdout;" (assignment_expression "outfile = stdout" identifier = identifier) ;) (expression_statement "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Can\'t open file %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Can\'t open file %s\n",5)" identifier (argument_list "(0,"Can\'t open file %s\n",5)" ( number_literal , (string_literal ""Can\'t open file %s\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "pcVar2 = (char *)0x0;" (assignment_expression "pcVar2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fprintf(stderr,__format,output);" (call_expression "fprintf(stderr,__format,output)" identifier (argument_list "(stderr,__format,output)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "output = pcVar2;" (assignment_expression "output = pcVar2" identifier = identifier) ;) (if_statement "if (list == (list *)0x0) goto LAB_001064c3;" if (parenthesized_expression "(list == (list *)0x0)" ( (binary_expression "list == (list *)0x0" identifier == (cast_expression "(list *)0x0" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001064c3;" goto statement_identifier ;)) (labeled_statement "LAB_0010647d:\n    map_over_list(arch,ar_directory_doer,list);" statement_identifier : (expression_statement "map_over_list(arch,ar_directory_doer,list);" (call_expression "map_over_list(arch,ar_directory_doer,list)" identifier (argument_list "(arch,ar_directory_doer,list)" ( identifier , identifier , identifier ))) ;)) }))) (expression_statement "bfd_close(arch);" (call_expression "bfd_close(arch)" identifier (argument_list "(arch)" ( identifier ))) ;) (labeled_statement "joined_r0x001064f1:\n  if (output != (char *)0x0) {\n    fclose((FILE *)outfile);\n    return;\n  }" statement_identifier : (if_statement "if (output != (char *)0x0) {\n    fclose((FILE *)outfile);\n    return;\n  }" if (parenthesized_expression "(output != (char *)0x0)" ( (binary_expression "output != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    fclose((FILE *)outfile);\n    return;\n  }" { (expression_statement "fclose((FILE *)outfile);" (call_expression "fclose((FILE *)outfile)" identifier (argument_list "((FILE *)outfile)" ( (cast_expression "(FILE *)outfile" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00106440(undefined8 param_1,long param_2,char *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00106440(undefined8 param_1,long param_2,char *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00106440(undefined8 param_1,long param_2,char *param_3)" identifier (parameter_list "(undefined8 param_1,long param_2,char *param_3)" ( (parameter_declaration "undefined8 param_1" type_identifier identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar2 = FUN_00104620(param_1,0);" (assignment_expression "lVar2 = FUN_00104620(param_1,0)" identifier = (call_expression "FUN_00104620(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (if_statement "if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" if (parenthesized_expression "(param_3 == (char *)0x0)" ( (binary_expression "param_3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }" { (expression_statement "DAT_00110538 = stdout;" (assignment_expression "DAT_00110538 = stdout" identifier = identifier) ;) (if_statement "if (param_2 != 0) goto LAB_0010647d;" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0010647d;" goto statement_identifier ;)) (labeled_statement "LAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);" statement_identifier : (expression_statement "lVar4 = *(long *)(lVar2 + 0xd8);" (assignment_expression "lVar4 = *(long *)(lVar2 + 0xd8)" identifier = (pointer_expression "*(long *)(lVar2 + 0xd8)" * (cast_expression "(long *)(lVar2 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0xd8)" ( (binary_expression "lVar2 + 0xd8" identifier + number_literal) ))))) ;)) (if_statement "if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }" if (parenthesized_expression "(*(long *)(lVar2 + 0xd8) != 0)" ( (binary_expression "*(long *)(lVar2 + 0xd8) != 0" (pointer_expression "*(long *)(lVar2 + 0xd8)" * (cast_expression "(long *)(lVar2 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0xd8)" ( (binary_expression "lVar2 + 0xd8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }" { (do_statement "do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);" do (compound_statement "{\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      }" { (expression_statement "lVar1 = *(long *)(lVar4 + 0xd8);" (assignment_expression "lVar1 = *(long *)(lVar4 + 0xd8)" identifier = (pointer_expression "*(long *)(lVar4 + 0xd8)" * (cast_expression "(long *)(lVar4 + 0xd8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0xd8)" ( (binary_expression "lVar4 + 0xd8" identifier + number_literal) ))))) ;) (expression_statement "FUN_00106360(lVar4,0);" (call_expression "FUN_00106360(lVar4,0)" identifier (argument_list "(lVar4,0)" ( identifier , number_literal ))) ;) (expression_statement "lVar4 = lVar1;" (assignment_expression "lVar4 = lVar1" identifier = identifier) ;) }) while (parenthesized_expression "(lVar1 != 0)" ( (binary_expression "lVar1 != 0" identifier != number_literal) )) ;) (expression_statement "bfd_close(lVar2);" (call_expression "bfd_close(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) (goto_statement "goto joined_r0x001064f1;" goto statement_identifier ;) })) }) (else_clause "else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" else (compound_statement "{\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" { (expression_statement "DAT_00110538 = fopen(param_3,"w");" (assignment_expression "DAT_00110538 = fopen(param_3,"w")" identifier = (call_expression "fopen(param_3,"w")" identifier (argument_list "(param_3,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pcVar3 = param_3;" (assignment_expression "pcVar3 = param_3" identifier = identifier) ;) (if_statement "if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }" if (parenthesized_expression "(DAT_00110538 == (FILE *)0x0)" ( (binary_expression "DAT_00110538 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }" { (expression_statement "DAT_00110538 = stdout;" (assignment_expression "DAT_00110538 = stdout" identifier = identifier) ;) (expression_statement "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Can\'t open file %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Can\'t open file %s\n",5)" identifier (argument_list "(0,"Can\'t open file %s\n",5)" ( number_literal , (string_literal ""Can\'t open file %s\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "fprintf(stderr,__format,param_3);" (call_expression "fprintf(stderr,__format,param_3)" identifier (argument_list "(stderr,__format,param_3)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "param_3 = pcVar3;" (assignment_expression "param_3 = pcVar3" identifier = identifier) ;) (if_statement "if (param_2 == 0) goto LAB_001064c3;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001064c3;" goto statement_identifier ;)) (labeled_statement "LAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);" statement_identifier : (expression_statement "FUN_00106380(lVar2,FUN_00106360,param_2);" (call_expression "FUN_00106380(lVar2,FUN_00106360,param_2)" identifier (argument_list "(lVar2,FUN_00106360,param_2)" ( identifier , identifier , identifier ))) ;)) }))) (expression_statement "bfd_close(lVar2);" (call_expression "bfd_close(lVar2)" identifier (argument_list "(lVar2)" ( identifier ))) ;) (labeled_statement "joined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }" statement_identifier : (if_statement "if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }" if (parenthesized_expression "(param_3 != (char *)0x0)" ( (binary_expression "param_3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    fclose(DAT_00110538);\n    return;\n  }" { (expression_statement "fclose(DAT_00110538);" (call_expression "fclose(DAT_00110538)" identifier (argument_list "(DAT_00110538)" ( identifier ))) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) }))) (return_statement return ;) })))
(function_definition "void FUN_00106440(undefined8 param_1,long param_2,char *param_3)\n\n{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00106440(undefined8 param_1,long param_2,char *param_3)" (identifier "FUN_00106440") (parameter_list "(undefined8 param_1,long param_2,char *param_3)" (( "(") (parameter_declaration "undefined8 param_1" (type_identifier "undefined8") (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  long lVar1;\n  long lVar2;\n  char *__format;\n  char *pcVar3;\n  long lVar4;\n  \n  lVar2 = FUN_00104620(param_1,0);\n  if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }\n  bfd_close(lVar2);\njoined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "char *__format;" (primitive_type "char") (pointer_declarator "*__format" (* "*") (identifier "__format")) (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (expression_statement "lVar2 = FUN_00104620(param_1,0);" (assignment_expression "lVar2 = FUN_00104620(param_1,0)" (identifier "lVar2") (= "=") (call_expression "FUN_00104620(param_1,0)" (identifier "FUN_00104620") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (param_3 == (char *)0x0) {\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }\n  else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" (if "if") (parenthesized_expression "(param_3 == (char *)0x0)" (( "(") (binary_expression "param_3 == (char *)0x0" (identifier "param_3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    DAT_00110538 = stdout;\n    if (param_2 != 0) goto LAB_0010647d;\nLAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);\n    if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }\n  }" ({ "{") (expression_statement "DAT_00110538 = stdout;" (assignment_expression "DAT_00110538 = stdout" (identifier "DAT_00110538") (= "=") (identifier "stdout")) (; ";")) (if_statement "if (param_2 != 0) goto LAB_0010647d;" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0010647d;" (goto "goto") (statement_identifier "LAB_0010647d") (; ";"))) (labeled_statement "LAB_001064c3:\n    lVar4 = *(long *)(lVar2 + 0xd8);" (statement_identifier "LAB_001064c3") (: ":") (expression_statement "lVar4 = *(long *)(lVar2 + 0xd8);" (assignment_expression "lVar4 = *(long *)(lVar2 + 0xd8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(lVar2 + 0xd8)" (* "*") (cast_expression "(long *)(lVar2 + 0xd8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0xd8)" (( "(") (binary_expression "lVar2 + 0xd8" (identifier "lVar2") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";"))) (if_statement "if (*(long *)(lVar2 + 0xd8) != 0) {\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }" (if "if") (parenthesized_expression "(*(long *)(lVar2 + 0xd8) != 0)" (( "(") (binary_expression "*(long *)(lVar2 + 0xd8) != 0" (pointer_expression "*(long *)(lVar2 + 0xd8)" (* "*") (cast_expression "(long *)(lVar2 + 0xd8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar2 + 0xd8)" (( "(") (binary_expression "lVar2 + 0xd8" (identifier "lVar2") (+ "+") (number_literal "0xd8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);\n      bfd_close(lVar2);\n      goto joined_r0x001064f1;\n    }" ({ "{") (do_statement "do {\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      } while (lVar1 != 0);" (do "do") (compound_statement "{\n        lVar1 = *(long *)(lVar4 + 0xd8);\n        FUN_00106360(lVar4,0);\n        lVar4 = lVar1;\n      }" ({ "{") (expression_statement "lVar1 = *(long *)(lVar4 + 0xd8);" (assignment_expression "lVar1 = *(long *)(lVar4 + 0xd8)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(lVar4 + 0xd8)" (* "*") (cast_expression "(long *)(lVar4 + 0xd8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0xd8)" (( "(") (binary_expression "lVar4 + 0xd8" (identifier "lVar4") (+ "+") (number_literal "0xd8")) () ")"))))) (; ";")) (expression_statement "FUN_00106360(lVar4,0);" (call_expression "FUN_00106360(lVar4,0)" (identifier "FUN_00106360") (argument_list "(lVar4,0)" (( "(") (identifier "lVar4") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "lVar4 = lVar1;" (assignment_expression "lVar4 = lVar1" (identifier "lVar4") (= "=") (identifier "lVar1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar1 != 0)" (( "(") (binary_expression "lVar1 != 0" (identifier "lVar1") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "bfd_close(lVar2);" (call_expression "bfd_close(lVar2)" (identifier "bfd_close") (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")"))) (; ";")) (goto_statement "goto joined_r0x001064f1;" (goto "goto") (statement_identifier "joined_r0x001064f1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" (else "else") (compound_statement "{\n    DAT_00110538 = fopen(param_3,"w");\n    pcVar3 = param_3;\n    if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }\n    param_3 = pcVar3;\n    if (param_2 == 0) goto LAB_001064c3;\nLAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);\n  }" ({ "{") (expression_statement "DAT_00110538 = fopen(param_3,"w");" (assignment_expression "DAT_00110538 = fopen(param_3,"w")" (identifier "DAT_00110538") (= "=") (call_expression "fopen(param_3,"w")" (identifier "fopen") (argument_list "(param_3,"w")" (( "(") (identifier "param_3") (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (expression_statement "pcVar3 = param_3;" (assignment_expression "pcVar3 = param_3" (identifier "pcVar3") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (DAT_00110538 == (FILE *)0x0) {\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }" (if "if") (parenthesized_expression "(DAT_00110538 == (FILE *)0x0)" (( "(") (binary_expression "DAT_00110538 == (FILE *)0x0" (identifier "DAT_00110538") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      DAT_00110538 = stdout;\n      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);\n      pcVar3 = (char *)0x0;\n      fprintf(stderr,__format,param_3);\n    }" ({ "{") (expression_statement "DAT_00110538 = stdout;" (assignment_expression "DAT_00110538 = stdout" (identifier "DAT_00110538") (= "=") (identifier "stdout")) (; ";")) (expression_statement "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5);" (assignment_expression "__format = (char *)dcgettext(0,"Can\'t open file %s\n",5)" (identifier "__format") (= "=") (cast_expression "(char *)dcgettext(0,"Can\'t open file %s\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"Can\'t open file %s\n",5)" (identifier "dcgettext") (argument_list "(0,"Can\'t open file %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Can\'t open file %s\n"" (" """) (string_content "Can") (escape_sequence "\'") (string_content "t open file %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" (identifier "pcVar3") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "fprintf(stderr,__format,param_3);" (call_expression "fprintf(stderr,__format,param_3)" (identifier "fprintf") (argument_list "(stderr,__format,param_3)" (( "(") (identifier "stderr") (, ",") (identifier "__format") (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (expression_statement "param_3 = pcVar3;" (assignment_expression "param_3 = pcVar3" (identifier "param_3") (= "=") (identifier "pcVar3")) (; ";")) (if_statement "if (param_2 == 0) goto LAB_001064c3;" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001064c3;" (goto "goto") (statement_identifier "LAB_001064c3") (; ";"))) (labeled_statement "LAB_0010647d:\n    FUN_00106380(lVar2,FUN_00106360,param_2);" (statement_identifier "LAB_0010647d") (: ":") (expression_statement "FUN_00106380(lVar2,FUN_00106360,param_2);" (call_expression "FUN_00106380(lVar2,FUN_00106360,param_2)" (identifier "FUN_00106380") (argument_list "(lVar2,FUN_00106360,param_2)" (( "(") (identifier "lVar2") (, ",") (identifier "FUN_00106360") (, ",") (identifier "param_2") () ")"))) (; ";"))) (} "}")))) (expression_statement "bfd_close(lVar2);" (call_expression "bfd_close(lVar2)" (identifier "bfd_close") (argument_list "(lVar2)" (( "(") (identifier "lVar2") () ")"))) (; ";")) (labeled_statement "joined_r0x001064f1:\n  if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }" (statement_identifier "joined_r0x001064f1") (: ":") (if_statement "if (param_3 != (char *)0x0) {\n    fclose(DAT_00110538);\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 != (char *)0x0)" (( "(") (binary_expression "param_3 != (char *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    fclose(DAT_00110538);\n    return;\n  }" ({ "{") (expression_statement "fclose(DAT_00110538);" (call_expression "fclose(DAT_00110538)" (identifier "fclose") (argument_list "(DAT_00110538)" (( "(") (identifier "DAT_00110538") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(char *ar_name,type_1 *type_1,char *var_2)

{
  type_2 *var_4;
  type_2 *arch;
  char *__format;
  char *pcVar2;
  type_2 *abfd;
  
  arch = var_1(ar_name,(char *)0x0);
  if (var_2 == (char *)0x0) {
    outfile = stdout;
    if (type_1 != (type_1 *)0x0) goto LAB_0010647d;
LAB_001064c3:
    abfd = arch->archive_next;
    if (arch->archive_next != (type_2 *)0x0) {
      do {
        var_4 = abfd->archive_next;
        var_3(abfd,(type_2 *)0x0);
        abfd = var_4;
      } while (var_4 != (type_2 *)0x0);
      var_5(arch);
      goto joined_r0x001064f1;
    }
  }
  else {
    outfile = (type_3 *)var_6(var_2,"w");
    pcVar2 = var_2;
    if ((type_3 *)outfile == (type_3 *)0x0) {
      outfile = stdout;
      __format = (char *)var_7(0,"Can\'t open file %s\n",5);
      pcVar2 = (char *)0x0;
      var_8(stderr,__format,var_2);
    }
    var_2 = pcVar2;
    if (type_1 == (type_1 *)0x0) goto LAB_001064c3;
LAB_0010647d:
    var_9(arch,var_3,type_1);
  }
  var_5(arch);
joined_r0x001064f1:
  if (var_2 != (char *)0x0) {
    var_10((type_3 *)outfile);
    return;
  }
  return;
}


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

void MASKED(undefined8 param_1,long param_2,char *param_3)

{
  long lVar1;
  long lVar2;
  char *__format;
  char *pcVar3;
  long lVar4;
  
  lVar2 = FUN_00104620(param_1,0);
  if (param_3 == (char *)0x0) {
    DAT_00110538 = stdout;
    if (param_2 != 0) goto LAB_0010647d;
LAB_001064c3:
    lVar4 = *(long *)(lVar2 + 0xd8);
    if (*(long *)(lVar2 + 0xd8) != 0) {
      do {
        lVar1 = *(long *)(lVar4 + 0xd8);
        FUN_00106360(lVar4,0);
        lVar4 = lVar1;
      } while (lVar1 != 0);
      bfd_close(lVar2);
      goto joined_r0x001064f1;
    }
  }
  else {
    DAT_00110538 = fopen(param_3,"w");
    pcVar3 = param_3;
    if (DAT_00110538 == (FILE *)0x0) {
      DAT_00110538 = stdout;
      __format = (char *)dcgettext(0,"Can\'t open file %s\n",5);
      pcVar3 = (char *)0x0;
      fprintf(stderr,__format,param_3);
    }
    param_3 = pcVar3;
    if (param_2 == 0) goto LAB_001064c3;
LAB_0010647d:
    FUN_00106380(lVar2,FUN_00106360,param_2);
  }
  bfd_close(lVar2);
joined_r0x001064f1:
  if (param_3 != (char *)0x0) {
    fclose(DAT_00110538);
    return;
  }
  return;
}

