
void extract_file(bfd *abfd)

{
  FILE *pFVar1;
  bfd_boolean bVar2;
  int iVar3;
  void *__ptr;
  size_t sVar4;
  FILE *__s;
  int *piVar5;
  char *pcVar6;
  ulong uVar7;
  char *pcVar8;
  size_t __n;
  stat buf;
  
  __ptr = (void *)xmalloc(0x2000);
  bVar2 = is_valid_archive_path(abfd->filename);
  if (bVar2 == 0) {
    pcVar6 = abfd->filename;
    pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);
    non_fatal(pcVar8,pcVar6);
  }
  else {
    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);
    if (iVar3 != 0) {
      pcVar6 = abfd->filename;
      pcVar8 = "internal stat error on %s";
LAB_0010408e:
      pcVar8 = (char *)dcgettext(0,pcVar8,5);
                    /* WARNING: Subroutine does not return */
      fatal(pcVar8,pcVar6);
    }
    if (verbose != 0) {
      printf("x - %s\n",abfd->filename);
    }
    uVar7 = 0;
    bfd_seek(abfd,0,0);
    __s = (FILE *)0x0;
    if (buf.st_size == 0) {
      output_filename = abfd->filename;
      __s = fopen(output_filename,"w");
      pFVar1 = __s;
      if (__s == (FILE *)0x0) {
LAB_001040c6:
        perror(abfd->filename);
                    /* WARNING: Subroutine does not return */
        xexit(1);
      }
    }
    else {
      do {
        __n = 0x2000;
        if (buf.st_size - uVar7 < 0x2001) {
          __n = buf.st_size - uVar7;
        }
        sVar4 = bfd_bread(__ptr,__n,abfd);
        if (sVar4 != __n) {
          pcVar8 = "%s is not a valid archive";
          pcVar6 = abfd->my_archive->filename;
          goto LAB_0010408e;
        }
        pFVar1 = (FILE *)output_file;
        if (__s == (FILE *)0x0) {
          output_filename = abfd->filename;
          __s = fopen(output_filename,"w");
          pFVar1 = __s;
          if (__s == (FILE *)0x0) goto LAB_001040c6;
        }
        output_file = (FILE *)pFVar1;
        sVar4 = fwrite(__ptr,1,__n,__s);
        if (sVar4 != __n) {
          piVar5 = __errno_location();
          pcVar6 = strerror(*piVar5);
                    /* WARNING: Subroutine does not return */
          fatal("%s: %s",output_filename,pcVar6);
        }
        uVar7 = uVar7 + __n;
        pFVar1 = (FILE *)output_file;
      } while (uVar7 < (ulong)buf.st_size);
    }
    output_file = (FILE *)pFVar1;
    fclose(__s);
    output_file = (FILE *)0x0;
    output_filename = (char *)0x0;
    chmod(abfd->filename,buf.st_mode);
    if (preserve_dates != 0) {
      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;
      set_times(abfd->filename,&buf);
    }
  }
  free(__ptr);
  return;
}



void FUN_00103e80(undefined8 *param_1)

{
  FILE *pFVar1;
  int iVar2;
  void *__ptr;
  size_t sVar3;
  FILE *__s;
  undefined8 uVar4;
  int *piVar5;
  char *pcVar6;
  ulong uVar7;
  undefined8 uVar8;
  size_t __n;
  undefined1 local_c8 [24];
  __mode_t local_b0;
  ulong local_98;
  undefined8 local_80;
  undefined8 local_70;
  
  __ptr = (void *)xmalloc(0x2000);
  iVar2 = FUN_001084f0(*param_1);
  if (iVar2 == 0) {
    uVar8 = *param_1;
    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);
    FUN_00107900(uVar4,uVar8);
  }
  else {
    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);
    if (iVar2 != 0) {
      uVar8 = *param_1;
      pcVar6 = "internal stat error on %s";
LAB_0010408e:
      uVar4 = dcgettext(0,pcVar6,5);
                    /* WARNING: Subroutine does not return */
      FUN_00107860(uVar4,uVar8);
    }
    if (DAT_00110498 != 0) {
      printf("x - %s\n",*param_1);
    }
    uVar7 = 0;
    bfd_seek(param_1,0,0);
    __s = (FILE *)0x0;
    if (local_98 == 0) {
      DAT_001104b0 = (char *)*param_1;
      __s = fopen(DAT_001104b0,"w");
      pFVar1 = __s;
      if (__s == (FILE *)0x0) {
LAB_001040c6:
        perror((char *)*param_1);
                    /* WARNING: Subroutine does not return */
        xexit(1);
      }
    }
    else {
      do {
        __n = 0x2000;
        if (local_98 - uVar7 < 0x2001) {
          __n = local_98 - uVar7;
        }
        sVar3 = bfd_bread(__ptr,__n,param_1);
        if (sVar3 != __n) {
          pcVar6 = "%s is not a valid archive";
          uVar8 = *(undefined8 *)param_1[0x1a];
          goto LAB_0010408e;
        }
        pFVar1 = DAT_001104a8;
        if (__s == (FILE *)0x0) {
          DAT_001104b0 = (char *)*param_1;
          __s = fopen(DAT_001104b0,"w");
          pFVar1 = __s;
          if (__s == (FILE *)0x0) goto LAB_001040c6;
        }
        DAT_001104a8 = pFVar1;
        sVar3 = fwrite(__ptr,1,__n,__s);
        if (sVar3 != __n) {
          piVar5 = __errno_location();
          pcVar6 = strerror(*piVar5);
                    /* WARNING: Subroutine does not return */
          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);
        }
        uVar7 = uVar7 + __n;
        pFVar1 = DAT_001104a8;
      } while (uVar7 < local_98);
    }
    DAT_001104a8 = pFVar1;
    fclose(__s);
    DAT_001104a8 = (FILE *)0x0;
    DAT_001104b0 = (char *)0x0;
    chmod((char *)*param_1,local_b0);
    if (DAT_00110490 != 0) {
      local_80 = local_70;
      FUN_00107050(*param_1,local_c8);
    }
  }
  free(__ptr);
  return;
}


PUSH R15
PUSH R14
MOV R14,RDI
MOV EDI,0x2000
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0xa8
CALL 0x00102270
MOV RDI,qword ptr [R14]
MOV R12,RAX
CALL 0x001084f0
TEST EAX,EAX
JZ 0x00104050
MOV RAX,qword ptr [R14 + 0x8]
LEA RSI,[RSP + 0x10]
MOV RDI,R14
MOV qword ptr [RSP + 0x8],RSI
CALL qword ptr [RAX + 0x1e0]
TEST EAX,EAX
JNZ 0x001040d8
MOV EDX,dword ptr [0x00110498]
MOV R13,qword ptr [RSP + 0x40]
TEST EDX,EDX
JNZ 0x00104010
XOR EDX,EDX
XOR ESI,ESI
MOV RDI,R14
XOR EBX,EBX
CALL 0x001025f0
XOR EBP,EBP
TEST R13,R13
JNZ 0x00103f28
JMP 0x00103f90
MOV RCX,RBP
MOV RDX,R15
MOV ESI,0x1
MOV RDI,R12
CALL 0x00102590
CMP RAX,R15
JNZ 0x001040a2
ADD RBX,R15
CMP R13,RBX
JBE 0x00103fb9
MOV R8,R13
MOV R15D,0x2000
MOV RDX,R14
MOV RDI,R12
SUB R8,RBX
CMP R8,0x2000
CMOVBE R15,R8
MOV RSI,R15
CALL 0x001025c0
CMP RAX,R15
JNZ 0x00104078
TEST RBP,RBP
JNZ 0x00103f00
MOV RDI,qword ptr [R14]
LEA RSI,[0x10a107]
MOV qword ptr [0x001104b0],RDI
CALL 0x001024f0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x001040c6
MOV qword ptr [0x001104a8],RAX
JMP 0x00103f00
MOV RDI,qword ptr [R14]
LEA RSI,[0x10a107]
MOV qword ptr [0x001104b0],RDI
CALL 0x001024f0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x001040c6
MOV qword ptr [0x001104a8],RAX
MOV RDI,RBP
CALL 0x00102180
MOV ESI,dword ptr [RSP + 0x28]
MOV RDI,qword ptr [R14]
MOV qword ptr [0x001104a8],0x0
MOV qword ptr [0x001104b0],0x0
CALL 0x001024a0
MOV EAX,dword ptr [0x00110490]
TEST EAX,EAX
JNZ 0x00104030
ADD RSP,0xa8
MOV RDI,R12
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP 0x00102060
MOV RSI,qword ptr [R14]
LEA RDI,[0x10a0ff]
XOR EAX,EAX
CALL 0x001021f0
JMP 0x00103ee3
MOV RAX,qword ptr [RSP + 0x68]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDI,qword ptr [R14]
MOV qword ptr [RSP + 0x58],RAX
CALL 0x00107050
JMP 0x00103fed
MOV RBX,qword ptr [R14]
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x10aaf8]
CALL 0x001021b0
MOV RDI,RAX
MOV RSI,RBX
XOR EAX,EAX
CALL 0x00107900
JMP 0x00103fed
MOV RAX,qword ptr [R14 + 0xd0]
MOV EDX,0x5
LEA RSI,[0x10a026]
MOV RBX,qword ptr [RAX]
XOR EDI,EDI
CALL 0x001021b0
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00107860
CALL 0x001020a0
MOV EDI,dword ptr [RAX]
CALL 0x001025d0
MOV RSI,qword ptr [0x001104b0]
LEA RDI,[0x10a109]
MOV RDX,RAX
XOR EAX,EAX
CALL 0x00107860
MOV RDI,qword ptr [R14]
CALL 0x00102520
MOV EDI,0x1
CALL 0x00102500
MOV RBX,qword ptr [R14]
MOV EDX,0x5
LEA RSI,[0x10a004]
JMP 0x0010408e
(translation_unit "void FUN_00103e80(undefined8 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}\n\n" (function_definition "void FUN_00103e80(undefined8 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}" primitive_type (function_declarator "FUN_00103e80(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}" { (declaration "FILE *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined1 local_c8 [24];" type_identifier (array_declarator "local_c8 [24]" identifier [ number_literal ]) ;) (declaration "__mode_t local_b0;" type_identifier identifier ;) (declaration "ulong local_98;" type_identifier identifier ;) (declaration "undefined8 local_80;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (expression_statement "__ptr = (void *)xmalloc(0x2000);" (assignment_expression "__ptr = (void *)xmalloc(0x2000)" identifier = (cast_expression "(void *)xmalloc(0x2000)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2000)" identifier (argument_list "(0x2000)" ( number_literal ))))) ;) (expression_statement "iVar2 = FUN_001084f0(*param_1);" (assignment_expression "iVar2 = FUN_001084f0(*param_1)" identifier = (call_expression "FUN_001084f0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }" { (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);" (assignment_expression "uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5)" identifier = (call_expression "dcgettext(0,"illegal pathname found in archive member: %s",5)" identifier (argument_list "(0,"illegal pathname found in archive member: %s",5)" ( number_literal , (string_literal ""illegal pathname found in archive member: %s"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00107900(uVar4,uVar8);" (call_expression "FUN_00107900(uVar4,uVar8)" identifier (argument_list "(uVar4,uVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" else (compound_statement "{\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" { (expression_statement "iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);" (assignment_expression "iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1)" identifier = (call_expression "(**(code **)(param_1[1] + 0x1e0))(param_1)" (parenthesized_expression "(**(code **)(param_1[1] + 0x1e0))" ( (pointer_expression "**(code **)(param_1[1] + 0x1e0)" * (pointer_expression "*(code **)(param_1[1] + 0x1e0)" * (cast_expression "(code **)(param_1[1] + 0x1e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0x1e0)" ( (binary_expression "param_1[1] + 0x1e0" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00107860(uVar4,uVar8);\n    }" { (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar6 = "internal stat error on %s";" (assignment_expression "pcVar6 = "internal stat error on %s"" identifier = (string_literal ""internal stat error on %s"" " string_content ")) ;) (labeled_statement "LAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);" statement_identifier : (expression_statement "uVar4 = dcgettext(0,pcVar6,5);" (assignment_expression "uVar4 = dcgettext(0,pcVar6,5)" identifier = (call_expression "dcgettext(0,pcVar6,5)" identifier (argument_list "(0,pcVar6,5)" ( number_literal , identifier , number_literal )))) ;)) comment (expression_statement "FUN_00107860(uVar4,uVar8);" (call_expression "FUN_00107860(uVar4,uVar8)" identifier (argument_list "(uVar4,uVar8)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }" if (parenthesized_expression "(DAT_00110498 != 0)" ( (binary_expression "DAT_00110498 != 0" identifier != number_literal) )) (compound_statement "{\n      printf("x - %s\n",*param_1);\n    }" { (expression_statement "printf("x - %s\n",*param_1);" (call_expression "printf("x - %s\n",*param_1)" identifier (argument_list "("x - %s\n",*param_1)" ( (string_literal ""x - %s\n"" " string_content escape_sequence ") , (pointer_expression "*param_1" * identifier) ))) ;) })) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bfd_seek(param_1,0,0);" (call_expression "bfd_seek(param_1,0,0)" identifier (argument_list "(param_1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "__s = (FILE *)0x0;" (assignment_expression "__s = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" if (parenthesized_expression "(local_98 == 0)" ( (binary_expression "local_98 == 0" identifier == number_literal) )) (compound_statement "{\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }" { (expression_statement "DAT_001104b0 = (char *)*param_1;" (assignment_expression "DAT_001104b0 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "__s = fopen(DAT_001104b0,"w");" (assignment_expression "__s = fopen(DAT_001104b0,"w")" identifier = (call_expression "fopen(DAT_001104b0,"w")" identifier (argument_list "(DAT_001104b0,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001040c6:\n        perror((char *)*param_1);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }" { (labeled_statement "LAB_001040c6:\n        perror((char *)*param_1);" statement_identifier : (expression_statement "perror((char *)*param_1);" (call_expression "perror((char *)*param_1)" identifier (argument_list "((char *)*param_1)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) ))) ;)) comment (expression_statement "xexit(1);" (call_expression "xexit(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) }) (else_clause "else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" else (compound_statement "{\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" { (do_statement "do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);" do (compound_statement "{\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      }" { (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" identifier = number_literal) ;) (if_statement "if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }" if (parenthesized_expression "(local_98 - uVar7 < 0x2001)" ( (binary_expression "local_98 - uVar7 < 0x2001" (binary_expression "local_98 - uVar7" identifier - identifier) < number_literal) )) (compound_statement "{\n          __n = local_98 - uVar7;\n        }" { (expression_statement "__n = local_98 - uVar7;" (assignment_expression "__n = local_98 - uVar7" identifier = (binary_expression "local_98 - uVar7" identifier - identifier)) ;) })) (expression_statement "sVar3 = bfd_bread(__ptr,__n,param_1);" (assignment_expression "sVar3 = bfd_bread(__ptr,__n,param_1)" identifier = (call_expression "bfd_bread(__ptr,__n,param_1)" identifier (argument_list "(__ptr,__n,param_1)" ( identifier , identifier , identifier )))) ;) (if_statement "if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }" if (parenthesized_expression "(sVar3 != __n)" ( (binary_expression "sVar3 != __n" identifier != identifier) )) (compound_statement "{\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }" { (expression_statement "pcVar6 = "%s is not a valid archive";" (assignment_expression "pcVar6 = "%s is not a valid archive"" identifier = (string_literal ""%s is not a valid archive"" " string_content ")) ;) (expression_statement "uVar8 = *(undefined8 *)param_1[0x1a];" (assignment_expression "uVar8 = *(undefined8 *)param_1[0x1a]" identifier = (pointer_expression "*(undefined8 *)param_1[0x1a]" * (cast_expression "(undefined8 *)param_1[0x1a]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1a]" identifier [ number_literal ])))) ;) (goto_statement "goto LAB_0010408e;" goto statement_identifier ;) })) (expression_statement "pFVar1 = DAT_001104a8;" (assignment_expression "pFVar1 = DAT_001104a8" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" { (expression_statement "DAT_001104b0 = (char *)*param_1;" (assignment_expression "DAT_001104b0 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "__s = fopen(DAT_001104b0,"w");" (assignment_expression "__s = fopen(DAT_001104b0,"w")" identifier = (call_expression "fopen(DAT_001104b0,"w")" identifier (argument_list "(DAT_001104b0,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) goto LAB_001040c6;" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001040c6;" goto statement_identifier ;)) })) (expression_statement "DAT_001104a8 = pFVar1;" (assignment_expression "DAT_001104a8 = pFVar1" identifier = identifier) ;) (expression_statement "sVar3 = fwrite(__ptr,1,__n,__s);" (assignment_expression "sVar3 = fwrite(__ptr,1,__n,__s)" identifier = (call_expression "fwrite(__ptr,1,__n,__s)" identifier (argument_list "(__ptr,1,__n,__s)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }" if (parenthesized_expression "(sVar3 != __n)" ( (binary_expression "sVar3 != __n" identifier != identifier) )) (compound_statement "{\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }" { (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar5);" (assignment_expression "pcVar6 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) comment (expression_statement "FUN_00107860("%s: %s",DAT_001104b0,pcVar6);" (call_expression "FUN_00107860("%s: %s",DAT_001104b0,pcVar6)" identifier (argument_list "("%s: %s",DAT_001104b0,pcVar6)" ( (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "uVar7 = uVar7 + __n;" (assignment_expression "uVar7 = uVar7 + __n" identifier = (binary_expression "uVar7 + __n" identifier + identifier)) ;) (expression_statement "pFVar1 = DAT_001104a8;" (assignment_expression "pFVar1 = DAT_001104a8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar7 < local_98)" ( (binary_expression "uVar7 < local_98" identifier < identifier) )) ;) }))) (expression_statement "DAT_001104a8 = pFVar1;" (assignment_expression "DAT_001104a8 = pFVar1" identifier = identifier) ;) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "DAT_001104a8 = (FILE *)0x0;" (assignment_expression "DAT_001104a8 = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_001104b0 = (char *)0x0;" (assignment_expression "DAT_001104b0 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "chmod((char *)*param_1,local_b0);" (call_expression "chmod((char *)*param_1,local_b0)" identifier (argument_list "((char *)*param_1,local_b0)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , identifier ))) ;) (if_statement "if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }" if (parenthesized_expression "(DAT_00110490 != 0)" ( (binary_expression "DAT_00110490 != 0" identifier != number_literal) )) (compound_statement "{\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }" { (expression_statement "local_80 = local_70;" (assignment_expression "local_80 = local_70" identifier = identifier) ;) (expression_statement "FUN_00107050(*param_1,local_c8);" (call_expression "FUN_00107050(*param_1,local_c8)" identifier (argument_list "(*param_1,local_c8)" ( (pointer_expression "*param_1" * identifier) , identifier ))) ;) })) }))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void extract_file(bfd *abfd)\n\n{\n  FILE *pFVar1;\n  bfd_boolean bVar2;\n  int iVar3;\n  void *__ptr;\n  size_t sVar4;\n  FILE *__s;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  char *pcVar8;\n  size_t __n;\n  stat buf;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  bVar2 = is_valid_archive_path(abfd->filename);\n  if (bVar2 == 0) {\n    pcVar6 = abfd->filename;\n    pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar8,pcVar6);\n  }\n  else {\n    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n    if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }\n    uVar7 = 0;\n    bfd_seek(abfd,0,0);\n    __s = (FILE *)0x0;\n    if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }\n    output_file = (FILE *)pFVar1;\n    fclose(__s);\n    output_file = (FILE *)0x0;\n    output_filename = (char *)0x0;\n    chmod(abfd->filename,buf.st_mode);\n    if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }\n  }\n  free(__ptr);\n  return;\n}\n\n" (function_definition "void extract_file(bfd *abfd)\n\n{\n  FILE *pFVar1;\n  bfd_boolean bVar2;\n  int iVar3;\n  void *__ptr;\n  size_t sVar4;\n  FILE *__s;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  char *pcVar8;\n  size_t __n;\n  stat buf;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  bVar2 = is_valid_archive_path(abfd->filename);\n  if (bVar2 == 0) {\n    pcVar6 = abfd->filename;\n    pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar8,pcVar6);\n  }\n  else {\n    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n    if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }\n    uVar7 = 0;\n    bfd_seek(abfd,0,0);\n    __s = (FILE *)0x0;\n    if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }\n    output_file = (FILE *)pFVar1;\n    fclose(__s);\n    output_file = (FILE *)0x0;\n    output_filename = (char *)0x0;\n    chmod(abfd->filename,buf.st_mode);\n    if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }\n  }\n  free(__ptr);\n  return;\n}" primitive_type (function_declarator "extract_file(bfd *abfd)" identifier (parameter_list "(bfd *abfd)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) ))) (compound_statement "{\n  FILE *pFVar1;\n  bfd_boolean bVar2;\n  int iVar3;\n  void *__ptr;\n  size_t sVar4;\n  FILE *__s;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  char *pcVar8;\n  size_t __n;\n  stat buf;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  bVar2 = is_valid_archive_path(abfd->filename);\n  if (bVar2 == 0) {\n    pcVar6 = abfd->filename;\n    pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar8,pcVar6);\n  }\n  else {\n    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n    if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }\n    uVar7 = 0;\n    bfd_seek(abfd,0,0);\n    __s = (FILE *)0x0;\n    if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }\n    output_file = (FILE *)pFVar1;\n    fclose(__s);\n    output_file = (FILE *)0x0;\n    output_filename = (char *)0x0;\n    chmod(abfd->filename,buf.st_mode);\n    if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }\n  }\n  free(__ptr);\n  return;\n}" { (declaration "FILE *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "stat buf;" type_identifier identifier ;) (expression_statement "__ptr = (void *)xmalloc(0x2000);" (assignment_expression "__ptr = (void *)xmalloc(0x2000)" identifier = (cast_expression "(void *)xmalloc(0x2000)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2000)" identifier (argument_list "(0x2000)" ( number_literal ))))) ;) (expression_statement "bVar2 = is_valid_archive_path(abfd->filename);" (assignment_expression "bVar2 = is_valid_archive_path(abfd->filename)" identifier = (call_expression "is_valid_archive_path(abfd->filename)" identifier (argument_list "(abfd->filename)" ( (field_expression "abfd->filename" identifier -> field_identifier) )))) ;) (if_statement "if (bVar2 == 0) {\n    pcVar6 = abfd->filename;\n    pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar8,pcVar6);\n  }\n  else {\n    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n    if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }\n    uVar7 = 0;\n    bfd_seek(abfd,0,0);\n    __s = (FILE *)0x0;\n    if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }\n    output_file = (FILE *)pFVar1;\n    fclose(__s);\n    output_file = (FILE *)0x0;\n    output_filename = (char *)0x0;\n    chmod(abfd->filename,buf.st_mode);\n    if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }\n  }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar6 = abfd->filename;\n    pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar8,pcVar6);\n  }" { (expression_statement "pcVar6 = abfd->filename;" (assignment_expression "pcVar6 = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5)" identifier = (cast_expression "(char *)dcgettext(0,"illegal pathname found in archive member: %s",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"illegal pathname found in archive member: %s",5)" identifier (argument_list "(0,"illegal pathname found in archive member: %s",5)" ( number_literal , (string_literal ""illegal pathname found in archive member: %s"" " string_content ") , number_literal ))))) ;) (expression_statement "non_fatal(pcVar8,pcVar6);" (call_expression "non_fatal(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n    if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }\n    uVar7 = 0;\n    bfd_seek(abfd,0,0);\n    __s = (FILE *)0x0;\n    if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }\n    output_file = (FILE *)pFVar1;\n    fclose(__s);\n    output_file = (FILE *)0x0;\n    output_filename = (char *)0x0;\n    chmod(abfd->filename,buf.st_mode);\n    if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }\n  }" else (compound_statement "{\n    iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n    if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }\n    uVar7 = 0;\n    bfd_seek(abfd,0,0);\n    __s = (FILE *)0x0;\n    if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }\n    output_file = (FILE *)pFVar1;\n    fclose(__s);\n    output_file = (FILE *)0x0;\n    output_filename = (char *)0x0;\n    chmod(abfd->filename,buf.st_mode);\n    if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }\n  }" { (expression_statement "iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);" (assignment_expression "iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf)" identifier = (call_expression "(*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf)" (parenthesized_expression "(*abfd->xvec->_bfd_stat_arch_elt)" ( (pointer_expression "*abfd->xvec->_bfd_stat_arch_elt" * (field_expression "abfd->xvec->_bfd_stat_arch_elt" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(abfd,&buf)" ( identifier , (pointer_expression "&buf" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar6 = abfd->filename;\n      pcVar8 = "internal stat error on %s";\nLAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }" { (expression_statement "pcVar6 = abfd->filename;" (assignment_expression "pcVar6 = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = "internal stat error on %s";" (assignment_expression "pcVar8 = "internal stat error on %s"" identifier = (string_literal ""internal stat error on %s"" " string_content ")) ;) (labeled_statement "LAB_0010408e:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);" statement_identifier : (expression_statement "pcVar8 = (char *)dcgettext(0,pcVar8,5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,pcVar8,5)" identifier = (cast_expression "(char *)dcgettext(0,pcVar8,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar8,5)" identifier (argument_list "(0,pcVar8,5)" ( number_literal , identifier , number_literal ))))) ;)) comment (expression_statement "fatal(pcVar8,pcVar6);" (call_expression "fatal(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier ))) ;) })) (if_statement "if (verbose != 0) {\n      printf("x - %s\n",abfd->filename);\n    }" if (parenthesized_expression "(verbose != 0)" ( (binary_expression "verbose != 0" identifier != number_literal) )) (compound_statement "{\n      printf("x - %s\n",abfd->filename);\n    }" { (expression_statement "printf("x - %s\n",abfd->filename);" (call_expression "printf("x - %s\n",abfd->filename)" identifier (argument_list "("x - %s\n",abfd->filename)" ( (string_literal ""x - %s\n"" " string_content escape_sequence ") , (field_expression "abfd->filename" identifier -> field_identifier) ))) ;) })) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bfd_seek(abfd,0,0);" (call_expression "bfd_seek(abfd,0,0)" identifier (argument_list "(abfd,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "__s = (FILE *)0x0;" (assignment_expression "__s = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (buf.st_size == 0) {\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }" if (parenthesized_expression "(buf.st_size == 0)" ( (binary_expression "buf.st_size == 0" (field_expression "buf.st_size" identifier . field_identifier) == number_literal) )) (compound_statement "{\n      output_filename = abfd->filename;\n      __s = fopen(output_filename,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }\n    }" { (expression_statement "output_filename = abfd->filename;" (assignment_expression "output_filename = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "__s = fopen(output_filename,"w");" (assignment_expression "__s = fopen(output_filename,"w")" identifier = (call_expression "fopen(output_filename,"w")" identifier (argument_list "(output_filename,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001040c6:\n        perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n        xexit(1);\n      }" { (labeled_statement "LAB_001040c6:\n        perror(abfd->filename);" statement_identifier : (expression_statement "perror(abfd->filename);" (call_expression "perror(abfd->filename)" identifier (argument_list "(abfd->filename)" ( (field_expression "abfd->filename" identifier -> field_identifier) ))) ;)) comment (expression_statement "xexit(1);" (call_expression "xexit(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) }) (else_clause "else {\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }" else (compound_statement "{\n      do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);\n    }" { (do_statement "do {\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      } while (uVar7 < (ulong)buf.st_size);" do (compound_statement "{\n        __n = 0x2000;\n        if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }\n        sVar4 = bfd_bread(__ptr,__n,abfd);\n        if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }\n        pFVar1 = (FILE *)output_file;\n        if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        output_file = (FILE *)pFVar1;\n        sVar4 = fwrite(__ptr,1,__n,__s);\n        if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = (FILE *)output_file;\n      }" { (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" identifier = number_literal) ;) (if_statement "if (buf.st_size - uVar7 < 0x2001) {\n          __n = buf.st_size - uVar7;\n        }" if (parenthesized_expression "(buf.st_size - uVar7 < 0x2001)" ( (binary_expression "buf.st_size - uVar7 < 0x2001" (binary_expression "buf.st_size - uVar7" (field_expression "buf.st_size" identifier . field_identifier) - identifier) < number_literal) )) (compound_statement "{\n          __n = buf.st_size - uVar7;\n        }" { (expression_statement "__n = buf.st_size - uVar7;" (assignment_expression "__n = buf.st_size - uVar7" identifier = (binary_expression "buf.st_size - uVar7" (field_expression "buf.st_size" identifier . field_identifier) - identifier)) ;) })) (expression_statement "sVar4 = bfd_bread(__ptr,__n,abfd);" (assignment_expression "sVar4 = bfd_bread(__ptr,__n,abfd)" identifier = (call_expression "bfd_bread(__ptr,__n,abfd)" identifier (argument_list "(__ptr,__n,abfd)" ( identifier , identifier , identifier )))) ;) (if_statement "if (sVar4 != __n) {\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }" if (parenthesized_expression "(sVar4 != __n)" ( (binary_expression "sVar4 != __n" identifier != identifier) )) (compound_statement "{\n          pcVar8 = "%s is not a valid archive";\n          pcVar6 = abfd->my_archive->filename;\n          goto LAB_0010408e;\n        }" { (expression_statement "pcVar8 = "%s is not a valid archive";" (assignment_expression "pcVar8 = "%s is not a valid archive"" identifier = (string_literal ""%s is not a valid archive"" " string_content ")) ;) (expression_statement "pcVar6 = abfd->my_archive->filename;" (assignment_expression "pcVar6 = abfd->my_archive->filename" identifier = (field_expression "abfd->my_archive->filename" (field_expression "abfd->my_archive" identifier -> field_identifier) -> field_identifier)) ;) (goto_statement "goto LAB_0010408e;" goto statement_identifier ;) })) (expression_statement "pFVar1 = (FILE *)output_file;" (assignment_expression "pFVar1 = (FILE *)output_file" identifier = (cast_expression "(FILE *)output_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (__s == (FILE *)0x0) {\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          output_filename = abfd->filename;\n          __s = fopen(output_filename,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" { (expression_statement "output_filename = abfd->filename;" (assignment_expression "output_filename = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "__s = fopen(output_filename,"w");" (assignment_expression "__s = fopen(output_filename,"w")" identifier = (call_expression "fopen(output_filename,"w")" identifier (argument_list "(output_filename,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) goto LAB_001040c6;" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001040c6;" goto statement_identifier ;)) })) (expression_statement "output_file = (FILE *)pFVar1;" (assignment_expression "output_file = (FILE *)pFVar1" identifier = (cast_expression "(FILE *)pFVar1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "sVar4 = fwrite(__ptr,1,__n,__s);" (assignment_expression "sVar4 = fwrite(__ptr,1,__n,__s)" identifier = (call_expression "fwrite(__ptr,1,__n,__s)" identifier (argument_list "(__ptr,1,__n,__s)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (sVar4 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }" if (parenthesized_expression "(sVar4 != __n)" ( (binary_expression "sVar4 != __n" identifier != identifier) )) (compound_statement "{\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    /* WARNING: Subroutine does not return */\n          fatal("%s: %s",output_filename,pcVar6);\n        }" { (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar5);" (assignment_expression "pcVar6 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) comment (expression_statement "fatal("%s: %s",output_filename,pcVar6);" (call_expression "fatal("%s: %s",output_filename,pcVar6)" identifier (argument_list "("%s: %s",output_filename,pcVar6)" ( (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "uVar7 = uVar7 + __n;" (assignment_expression "uVar7 = uVar7 + __n" identifier = (binary_expression "uVar7 + __n" identifier + identifier)) ;) (expression_statement "pFVar1 = (FILE *)output_file;" (assignment_expression "pFVar1 = (FILE *)output_file" identifier = (cast_expression "(FILE *)output_file" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar7 < (ulong)buf.st_size)" ( (binary_expression "uVar7 < (ulong)buf.st_size" identifier < (cast_expression "(ulong)buf.st_size" ( (type_descriptor "ulong" type_identifier) ) (field_expression "buf.st_size" identifier . field_identifier))) )) ;) }))) (expression_statement "output_file = (FILE *)pFVar1;" (assignment_expression "output_file = (FILE *)pFVar1" identifier = (cast_expression "(FILE *)pFVar1" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "output_file = (FILE *)0x0;" (assignment_expression "output_file = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "output_filename = (char *)0x0;" (assignment_expression "output_filename = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "chmod(abfd->filename,buf.st_mode);" (call_expression "chmod(abfd->filename,buf.st_mode)" identifier (argument_list "(abfd->filename,buf.st_mode)" ( (field_expression "abfd->filename" identifier -> field_identifier) , (field_expression "buf.st_mode" identifier . field_identifier) ))) ;) (if_statement "if (preserve_dates != 0) {\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }" if (parenthesized_expression "(preserve_dates != 0)" ( (binary_expression "preserve_dates != 0" identifier != number_literal) )) (compound_statement "{\n      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;\n      set_times(abfd->filename,&buf);\n    }" { (expression_statement "buf.st_atim.tv_sec = buf.st_mtim.tv_sec;" (assignment_expression "buf.st_atim.tv_sec = buf.st_mtim.tv_sec" (field_expression "buf.st_atim.tv_sec" (field_expression "buf.st_atim" identifier . field_identifier) . field_identifier) = (field_expression "buf.st_mtim.tv_sec" (field_expression "buf.st_mtim" identifier . field_identifier) . field_identifier)) ;) (expression_statement "set_times(abfd->filename,&buf);" (call_expression "set_times(abfd->filename,&buf)" identifier (argument_list "(abfd->filename,&buf)" ( (field_expression "abfd->filename" identifier -> field_identifier) , (pointer_expression "&buf" & identifier) ))) ;) })) }))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00103e80(undefined8 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}\n\n" (function_definition "void FUN_00103e80(undefined8 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}" primitive_type (function_declarator "FUN_00103e80(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}" { (declaration "FILE *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "undefined1 local_c8 [24];" type_identifier (array_declarator "local_c8 [24]" identifier [ number_literal ]) ;) (declaration "__mode_t local_b0;" type_identifier identifier ;) (declaration "ulong local_98;" type_identifier identifier ;) (declaration "undefined8 local_80;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (expression_statement "__ptr = (void *)xmalloc(0x2000);" (assignment_expression "__ptr = (void *)xmalloc(0x2000)" identifier = (cast_expression "(void *)xmalloc(0x2000)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x2000)" identifier (argument_list "(0x2000)" ( number_literal ))))) ;) (expression_statement "iVar2 = FUN_001084f0(*param_1);" (assignment_expression "iVar2 = FUN_001084f0(*param_1)" identifier = (call_expression "FUN_001084f0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }" { (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);" (assignment_expression "uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5)" identifier = (call_expression "dcgettext(0,"illegal pathname found in archive member: %s",5)" identifier (argument_list "(0,"illegal pathname found in archive member: %s",5)" ( number_literal , (string_literal ""illegal pathname found in archive member: %s"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00107900(uVar4,uVar8);" (call_expression "FUN_00107900(uVar4,uVar8)" identifier (argument_list "(uVar4,uVar8)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" else (compound_statement "{\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" { (expression_statement "iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);" (assignment_expression "iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1)" identifier = (call_expression "(**(code **)(param_1[1] + 0x1e0))(param_1)" (parenthesized_expression "(**(code **)(param_1[1] + 0x1e0))" ( (pointer_expression "**(code **)(param_1[1] + 0x1e0)" * (pointer_expression "*(code **)(param_1[1] + 0x1e0)" * (cast_expression "(code **)(param_1[1] + 0x1e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0x1e0)" ( (binary_expression "param_1[1] + 0x1e0" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }" { (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar6 = "internal stat error on %s";" (assignment_expression "pcVar6 = "internal stat error on %s"" identifier = (string_literal ""internal stat error on %s"" " string_content ")) ;) (labeled_statement "LAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);" statement_identifier : (expression_statement "uVar4 = dcgettext(0,pcVar6,5);" (assignment_expression "uVar4 = dcgettext(0,pcVar6,5)" identifier = (call_expression "dcgettext(0,pcVar6,5)" identifier (argument_list "(0,pcVar6,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "FUN_00107860(uVar4,uVar8);" (call_expression "FUN_00107860(uVar4,uVar8)" identifier (argument_list "(uVar4,uVar8)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }" if (parenthesized_expression "(DAT_00110498 != 0)" ( (binary_expression "DAT_00110498 != 0" identifier != number_literal) )) (compound_statement "{\n      printf("x - %s\n",*param_1);\n    }" { (expression_statement "printf("x - %s\n",*param_1);" (call_expression "printf("x - %s\n",*param_1)" identifier (argument_list "("x - %s\n",*param_1)" ( (string_literal ""x - %s\n"" " string_content escape_sequence ") , (pointer_expression "*param_1" * identifier) ))) ;) })) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bfd_seek(param_1,0,0);" (call_expression "bfd_seek(param_1,0,0)" identifier (argument_list "(param_1,0,0)" ( identifier , number_literal , number_literal ))) ;) (expression_statement "__s = (FILE *)0x0;" (assignment_expression "__s = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" if (parenthesized_expression "(local_98 == 0)" ( (binary_expression "local_98 == 0" identifier == number_literal) )) (compound_statement "{\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }" { (expression_statement "DAT_001104b0 = (char *)*param_1;" (assignment_expression "DAT_001104b0 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "__s = fopen(DAT_001104b0,"w");" (assignment_expression "__s = fopen(DAT_001104b0,"w")" identifier = (call_expression "fopen(DAT_001104b0,"w")" identifier (argument_list "(DAT_001104b0,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }" { (labeled_statement "LAB_001040c6:\n        perror((char *)*param_1);" statement_identifier : (expression_statement "perror((char *)*param_1);" (call_expression "perror((char *)*param_1)" identifier (argument_list "((char *)*param_1)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) ))) ;)) (expression_statement "xexit(1);" (call_expression "xexit(1)" identifier (argument_list "(1)" ( number_literal ))) ;) })) }) (else_clause "else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" else (compound_statement "{\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" { (do_statement "do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);" do (compound_statement "{\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      }" { (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" identifier = number_literal) ;) (if_statement "if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }" if (parenthesized_expression "(local_98 - uVar7 < 0x2001)" ( (binary_expression "local_98 - uVar7 < 0x2001" (binary_expression "local_98 - uVar7" identifier - identifier) < number_literal) )) (compound_statement "{\n          __n = local_98 - uVar7;\n        }" { (expression_statement "__n = local_98 - uVar7;" (assignment_expression "__n = local_98 - uVar7" identifier = (binary_expression "local_98 - uVar7" identifier - identifier)) ;) })) (expression_statement "sVar3 = bfd_bread(__ptr,__n,param_1);" (assignment_expression "sVar3 = bfd_bread(__ptr,__n,param_1)" identifier = (call_expression "bfd_bread(__ptr,__n,param_1)" identifier (argument_list "(__ptr,__n,param_1)" ( identifier , identifier , identifier )))) ;) (if_statement "if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }" if (parenthesized_expression "(sVar3 != __n)" ( (binary_expression "sVar3 != __n" identifier != identifier) )) (compound_statement "{\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }" { (expression_statement "pcVar6 = "%s is not a valid archive";" (assignment_expression "pcVar6 = "%s is not a valid archive"" identifier = (string_literal ""%s is not a valid archive"" " string_content ")) ;) (expression_statement "uVar8 = *(undefined8 *)param_1[0x1a];" (assignment_expression "uVar8 = *(undefined8 *)param_1[0x1a]" identifier = (pointer_expression "*(undefined8 *)param_1[0x1a]" * (cast_expression "(undefined8 *)param_1[0x1a]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x1a]" identifier [ number_literal ])))) ;) (goto_statement "goto LAB_0010408e;" goto statement_identifier ;) })) (expression_statement "pFVar1 = DAT_001104a8;" (assignment_expression "pFVar1 = DAT_001104a8" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" { (expression_statement "DAT_001104b0 = (char *)*param_1;" (assignment_expression "DAT_001104b0 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "__s = fopen(DAT_001104b0,"w");" (assignment_expression "__s = fopen(DAT_001104b0,"w")" identifier = (call_expression "fopen(DAT_001104b0,"w")" identifier (argument_list "(DAT_001104b0,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) goto LAB_001040c6;" if (parenthesized_expression "(__s == (FILE *)0x0)" ( (binary_expression "__s == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001040c6;" goto statement_identifier ;)) })) (expression_statement "DAT_001104a8 = pFVar1;" (assignment_expression "DAT_001104a8 = pFVar1" identifier = identifier) ;) (expression_statement "sVar3 = fwrite(__ptr,1,__n,__s);" (assignment_expression "sVar3 = fwrite(__ptr,1,__n,__s)" identifier = (call_expression "fwrite(__ptr,1,__n,__s)" identifier (argument_list "(__ptr,1,__n,__s)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }" if (parenthesized_expression "(sVar3 != __n)" ( (binary_expression "sVar3 != __n" identifier != identifier) )) (compound_statement "{\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }" { (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar5);" (assignment_expression "pcVar6 = strerror(*piVar5)" identifier = (call_expression "strerror(*piVar5)" identifier (argument_list "(*piVar5)" ( (pointer_expression "*piVar5" * identifier) )))) ;) (expression_statement "FUN_00107860("%s: %s",DAT_001104b0,pcVar6);" (call_expression "FUN_00107860("%s: %s",DAT_001104b0,pcVar6)" identifier (argument_list "("%s: %s",DAT_001104b0,pcVar6)" ( (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "uVar7 = uVar7 + __n;" (assignment_expression "uVar7 = uVar7 + __n" identifier = (binary_expression "uVar7 + __n" identifier + identifier)) ;) (expression_statement "pFVar1 = DAT_001104a8;" (assignment_expression "pFVar1 = DAT_001104a8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar7 < local_98)" ( (binary_expression "uVar7 < local_98" identifier < identifier) )) ;) }))) (expression_statement "DAT_001104a8 = pFVar1;" (assignment_expression "DAT_001104a8 = pFVar1" identifier = identifier) ;) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "DAT_001104a8 = (FILE *)0x0;" (assignment_expression "DAT_001104a8 = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_001104b0 = (char *)0x0;" (assignment_expression "DAT_001104b0 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "chmod((char *)*param_1,local_b0);" (call_expression "chmod((char *)*param_1,local_b0)" identifier (argument_list "((char *)*param_1,local_b0)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , identifier ))) ;) (if_statement "if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }" if (parenthesized_expression "(DAT_00110490 != 0)" ( (binary_expression "DAT_00110490 != 0" identifier != number_literal) )) (compound_statement "{\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }" { (expression_statement "local_80 = local_70;" (assignment_expression "local_80 = local_70" identifier = identifier) ;) (expression_statement "FUN_00107050(*param_1,local_c8);" (call_expression "FUN_00107050(*param_1,local_c8)" identifier (argument_list "(*param_1,local_c8)" ( (pointer_expression "*param_1" * identifier) , identifier ))) ;) })) }))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , LIT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (pointer_expression * IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;)) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (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) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT ))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00103e80(undefined8 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00103e80(undefined8 *param_1)" (identifier "FUN_00103e80") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  FILE *pFVar1;\n  int iVar2;\n  void *__ptr;\n  size_t sVar3;\n  FILE *__s;\n  undefined8 uVar4;\n  int *piVar5;\n  char *pcVar6;\n  ulong uVar7;\n  undefined8 uVar8;\n  size_t __n;\n  undefined1 local_c8 [24];\n  __mode_t local_b0;\n  ulong local_98;\n  undefined8 local_80;\n  undefined8 local_70;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  iVar2 = FUN_001084f0(*param_1);\n  if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }\n  free(__ptr);\n  return;\n}" ({ "{") (declaration "FILE *pFVar1;" (type_identifier "FILE") (pointer_declarator "*pFVar1" (* "*") (identifier "pFVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "FILE *__s;" (type_identifier "FILE") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "undefined1 local_c8 [24];" (type_identifier "undefined1") (array_declarator "local_c8 [24]" (identifier "local_c8") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "__mode_t local_b0;" (type_identifier "__mode_t") (identifier "local_b0") (; ";")) (declaration "ulong local_98;" (type_identifier "ulong") (identifier "local_98") (; ";")) (declaration "undefined8 local_80;" (type_identifier "undefined8") (identifier "local_80") (; ";")) (declaration "undefined8 local_70;" (type_identifier "undefined8") (identifier "local_70") (; ";")) (expression_statement "__ptr = (void *)xmalloc(0x2000);" (assignment_expression "__ptr = (void *)xmalloc(0x2000)" (identifier "__ptr") (= "=") (cast_expression "(void *)xmalloc(0x2000)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x2000)" (identifier "xmalloc") (argument_list "(0x2000)" (( "(") (number_literal "0x2000") () ")"))))) (; ";")) (expression_statement "iVar2 = FUN_001084f0(*param_1);" (assignment_expression "iVar2 = FUN_001084f0(*param_1)" (identifier "iVar2") (= "=") (call_expression "FUN_001084f0(*param_1)" (identifier "FUN_001084f0") (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }\n  else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = *param_1;\n    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);\n    FUN_00107900(uVar4,uVar8);\n  }" ({ "{") (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" (identifier "uVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);" (assignment_expression "uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"illegal pathname found in archive member: %s",5)" (identifier "dcgettext") (argument_list "(0,"illegal pathname found in archive member: %s",5)" (( "(") (number_literal "0") (, ",") (string_literal ""illegal pathname found in archive member: %s"" (" """) (string_content "illegal pathname found in archive member: %s") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00107900(uVar4,uVar8);" (call_expression "FUN_00107900(uVar4,uVar8)" (identifier "FUN_00107900") (argument_list "(uVar4,uVar8)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar8") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" (else "else") (compound_statement "{\n    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);\n    if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }\n    if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }\n    uVar7 = 0;\n    bfd_seek(param_1,0,0);\n    __s = (FILE *)0x0;\n    if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }\n    DAT_001104a8 = pFVar1;\n    fclose(__s);\n    DAT_001104a8 = (FILE *)0x0;\n    DAT_001104b0 = (char *)0x0;\n    chmod((char *)*param_1,local_b0);\n    if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }\n  }" ({ "{") (expression_statement "iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);" (assignment_expression "iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1)" (identifier "iVar2") (= "=") (call_expression "(**(code **)(param_1[1] + 0x1e0))(param_1)" (parenthesized_expression "(**(code **)(param_1[1] + 0x1e0))" (( "(") (pointer_expression "**(code **)(param_1[1] + 0x1e0)" (* "*") (pointer_expression "*(code **)(param_1[1] + 0x1e0)" (* "*") (cast_expression "(code **)(param_1[1] + 0x1e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 0x1e0)" (( "(") (binary_expression "param_1[1] + 0x1e0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x1e0")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar8 = *param_1;\n      pcVar6 = "internal stat error on %s";\nLAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);\n                    \n      FUN_00107860(uVar4,uVar8);\n    }" ({ "{") (expression_statement "uVar8 = *param_1;" (assignment_expression "uVar8 = *param_1" (identifier "uVar8") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pcVar6 = "internal stat error on %s";" (assignment_expression "pcVar6 = "internal stat error on %s"" (identifier "pcVar6") (= "=") (string_literal ""internal stat error on %s"" (" """) (string_content "internal stat error on %s") (" """))) (; ";")) (labeled_statement "LAB_0010408e:\n      uVar4 = dcgettext(0,pcVar6,5);" (statement_identifier "LAB_0010408e") (: ":") (expression_statement "uVar4 = dcgettext(0,pcVar6,5);" (assignment_expression "uVar4 = dcgettext(0,pcVar6,5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,pcVar6,5)" (identifier "dcgettext") (argument_list "(0,pcVar6,5)" (( "(") (number_literal "0") (, ",") (identifier "pcVar6") (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "FUN_00107860(uVar4,uVar8);" (call_expression "FUN_00107860(uVar4,uVar8)" (identifier "FUN_00107860") (argument_list "(uVar4,uVar8)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar8") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_00110498 != 0) {\n      printf("x - %s\n",*param_1);\n    }" (if "if") (parenthesized_expression "(DAT_00110498 != 0)" (( "(") (binary_expression "DAT_00110498 != 0" (identifier "DAT_00110498") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      printf("x - %s\n",*param_1);\n    }" ({ "{") (expression_statement "printf("x - %s\n",*param_1);" (call_expression "printf("x - %s\n",*param_1)" (identifier "printf") (argument_list "("x - %s\n",*param_1)" (( "(") (string_literal ""x - %s\n"" (" """) (string_content "x - %s") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "bfd_seek(param_1,0,0);" (call_expression "bfd_seek(param_1,0,0)" (identifier "bfd_seek") (argument_list "(param_1,0,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "__s = (FILE *)0x0;" (assignment_expression "__s = (FILE *)0x0" (identifier "__s") (= "=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (local_98 == 0) {\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }\n    else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" (if "if") (parenthesized_expression "(local_98 == 0)" (( "(") (binary_expression "local_98 == 0" (identifier "local_98") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      DAT_001104b0 = (char *)*param_1;\n      __s = fopen(DAT_001104b0,"w");\n      pFVar1 = __s;\n      if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }\n    }" ({ "{") (expression_statement "DAT_001104b0 = (char *)*param_1;" (assignment_expression "DAT_001104b0 = (char *)*param_1" (identifier "DAT_001104b0") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "__s = fopen(DAT_001104b0,"w");" (assignment_expression "__s = fopen(DAT_001104b0,"w")" (identifier "__s") (= "=") (call_expression "fopen(DAT_001104b0,"w")" (identifier "fopen") (argument_list "(DAT_001104b0,"w")" (( "(") (identifier "DAT_001104b0") (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" (identifier "pFVar1") (= "=") (identifier "__s")) (; ";")) (if_statement "if (__s == (FILE *)0x0) {\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }" (if "if") (parenthesized_expression "(__s == (FILE *)0x0)" (( "(") (binary_expression "__s == (FILE *)0x0" (identifier "__s") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_001040c6:\n        perror((char *)*param_1);\n                    \n        xexit(1);\n      }" ({ "{") (labeled_statement "LAB_001040c6:\n        perror((char *)*param_1);" (statement_identifier "LAB_001040c6") (: ":") (expression_statement "perror((char *)*param_1);" (call_expression "perror((char *)*param_1)" (identifier "perror") (argument_list "((char *)*param_1)" (( "(") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")"))) (; ";"))) (expression_statement "xexit(1);" (call_expression "xexit(1)" (identifier "xexit") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" (else "else") (compound_statement "{\n      do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);\n    }" ({ "{") (do_statement "do {\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      } while (uVar7 < local_98);" (do "do") (compound_statement "{\n        __n = 0x2000;\n        if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }\n        sVar3 = bfd_bread(__ptr,__n,param_1);\n        if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }\n        pFVar1 = DAT_001104a8;\n        if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }\n        DAT_001104a8 = pFVar1;\n        sVar3 = fwrite(__ptr,1,__n,__s);\n        if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }\n        uVar7 = uVar7 + __n;\n        pFVar1 = DAT_001104a8;\n      }" ({ "{") (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" (identifier "__n") (= "=") (number_literal "0x2000")) (; ";")) (if_statement "if (local_98 - uVar7 < 0x2001) {\n          __n = local_98 - uVar7;\n        }" (if "if") (parenthesized_expression "(local_98 - uVar7 < 0x2001)" (( "(") (binary_expression "local_98 - uVar7 < 0x2001" (binary_expression "local_98 - uVar7" (identifier "local_98") (- "-") (identifier "uVar7")) (< "<") (number_literal "0x2001")) () ")")) (compound_statement "{\n          __n = local_98 - uVar7;\n        }" ({ "{") (expression_statement "__n = local_98 - uVar7;" (assignment_expression "__n = local_98 - uVar7" (identifier "__n") (= "=") (binary_expression "local_98 - uVar7" (identifier "local_98") (- "-") (identifier "uVar7"))) (; ";")) (} "}"))) (expression_statement "sVar3 = bfd_bread(__ptr,__n,param_1);" (assignment_expression "sVar3 = bfd_bread(__ptr,__n,param_1)" (identifier "sVar3") (= "=") (call_expression "bfd_bread(__ptr,__n,param_1)" (identifier "bfd_bread") (argument_list "(__ptr,__n,param_1)" (( "(") (identifier "__ptr") (, ",") (identifier "__n") (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (sVar3 != __n) {\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }" (if "if") (parenthesized_expression "(sVar3 != __n)" (( "(") (binary_expression "sVar3 != __n" (identifier "sVar3") (!= "!=") (identifier "__n")) () ")")) (compound_statement "{\n          pcVar6 = "%s is not a valid archive";\n          uVar8 = *(undefined8 *)param_1[0x1a];\n          goto LAB_0010408e;\n        }" ({ "{") (expression_statement "pcVar6 = "%s is not a valid archive";" (assignment_expression "pcVar6 = "%s is not a valid archive"" (identifier "pcVar6") (= "=") (string_literal ""%s is not a valid archive"" (" """) (string_content "%s is not a valid archive") (" """))) (; ";")) (expression_statement "uVar8 = *(undefined8 *)param_1[0x1a];" (assignment_expression "uVar8 = *(undefined8 *)param_1[0x1a]" (identifier "uVar8") (= "=") (pointer_expression "*(undefined8 *)param_1[0x1a]" (* "*") (cast_expression "(undefined8 *)param_1[0x1a]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x1a]" (identifier "param_1") ([ "[") (number_literal "0x1a") (] "]"))))) (; ";")) (goto_statement "goto LAB_0010408e;" (goto "goto") (statement_identifier "LAB_0010408e") (; ";")) (} "}"))) (expression_statement "pFVar1 = DAT_001104a8;" (assignment_expression "pFVar1 = DAT_001104a8" (identifier "pFVar1") (= "=") (identifier "DAT_001104a8")) (; ";")) (if_statement "if (__s == (FILE *)0x0) {\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" (if "if") (parenthesized_expression "(__s == (FILE *)0x0)" (( "(") (binary_expression "__s == (FILE *)0x0" (identifier "__s") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          DAT_001104b0 = (char *)*param_1;\n          __s = fopen(DAT_001104b0,"w");\n          pFVar1 = __s;\n          if (__s == (FILE *)0x0) goto LAB_001040c6;\n        }" ({ "{") (expression_statement "DAT_001104b0 = (char *)*param_1;" (assignment_expression "DAT_001104b0 = (char *)*param_1" (identifier "DAT_001104b0") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "__s = fopen(DAT_001104b0,"w");" (assignment_expression "__s = fopen(DAT_001104b0,"w")" (identifier "__s") (= "=") (call_expression "fopen(DAT_001104b0,"w")" (identifier "fopen") (argument_list "(DAT_001104b0,"w")" (( "(") (identifier "DAT_001104b0") (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" (identifier "pFVar1") (= "=") (identifier "__s")) (; ";")) (if_statement "if (__s == (FILE *)0x0) goto LAB_001040c6;" (if "if") (parenthesized_expression "(__s == (FILE *)0x0)" (( "(") (binary_expression "__s == (FILE *)0x0" (identifier "__s") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001040c6;" (goto "goto") (statement_identifier "LAB_001040c6") (; ";"))) (} "}"))) (expression_statement "DAT_001104a8 = pFVar1;" (assignment_expression "DAT_001104a8 = pFVar1" (identifier "DAT_001104a8") (= "=") (identifier "pFVar1")) (; ";")) (expression_statement "sVar3 = fwrite(__ptr,1,__n,__s);" (assignment_expression "sVar3 = fwrite(__ptr,1,__n,__s)" (identifier "sVar3") (= "=") (call_expression "fwrite(__ptr,1,__n,__s)" (identifier "fwrite") (argument_list "(__ptr,1,__n,__s)" (( "(") (identifier "__ptr") (, ",") (number_literal "1") (, ",") (identifier "__n") (, ",") (identifier "__s") () ")")))) (; ";")) (if_statement "if (sVar3 != __n) {\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }" (if "if") (parenthesized_expression "(sVar3 != __n)" (( "(") (binary_expression "sVar3 != __n" (identifier "sVar3") (!= "!=") (identifier "__n")) () ")")) (compound_statement "{\n          piVar5 = __errno_location();\n          pcVar6 = strerror(*piVar5);\n                    \n          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);\n        }" ({ "{") (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" (identifier "piVar5") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar6 = strerror(*piVar5);" (assignment_expression "pcVar6 = strerror(*piVar5)" (identifier "pcVar6") (= "=") (call_expression "strerror(*piVar5)" (identifier "strerror") (argument_list "(*piVar5)" (( "(") (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) () ")")))) (; ";")) (expression_statement "FUN_00107860("%s: %s",DAT_001104b0,pcVar6);" (call_expression "FUN_00107860("%s: %s",DAT_001104b0,pcVar6)" (identifier "FUN_00107860") (argument_list "("%s: %s",DAT_001104b0,pcVar6)" (( "(") (string_literal ""%s: %s"" (" """) (string_content "%s: %s") (" """)) (, ",") (identifier "DAT_001104b0") (, ",") (identifier "pcVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 + __n;" (assignment_expression "uVar7 = uVar7 + __n" (identifier "uVar7") (= "=") (binary_expression "uVar7 + __n" (identifier "uVar7") (+ "+") (identifier "__n"))) (; ";")) (expression_statement "pFVar1 = DAT_001104a8;" (assignment_expression "pFVar1 = DAT_001104a8" (identifier "pFVar1") (= "=") (identifier "DAT_001104a8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar7 < local_98)" (( "(") (binary_expression "uVar7 < local_98" (identifier "uVar7") (< "<") (identifier "local_98")) () ")")) (; ";")) (} "}")))) (expression_statement "DAT_001104a8 = pFVar1;" (assignment_expression "DAT_001104a8 = pFVar1" (identifier "DAT_001104a8") (= "=") (identifier "pFVar1")) (; ";")) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" (identifier "fclose") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "DAT_001104a8 = (FILE *)0x0;" (assignment_expression "DAT_001104a8 = (FILE *)0x0" (identifier "DAT_001104a8") (= "=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "DAT_001104b0 = (char *)0x0;" (assignment_expression "DAT_001104b0 = (char *)0x0" (identifier "DAT_001104b0") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "chmod((char *)*param_1,local_b0);" (call_expression "chmod((char *)*param_1,local_b0)" (identifier "chmod") (argument_list "((char *)*param_1,local_b0)" (( "(") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (identifier "local_b0") () ")"))) (; ";")) (if_statement "if (DAT_00110490 != 0) {\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }" (if "if") (parenthesized_expression "(DAT_00110490 != 0)" (( "(") (binary_expression "DAT_00110490 != 0" (identifier "DAT_00110490") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_80 = local_70;\n      FUN_00107050(*param_1,local_c8);\n    }" ({ "{") (expression_statement "local_80 = local_70;" (assignment_expression "local_80 = local_70" (identifier "local_80") (= "=") (identifier "local_70")) (; ";")) (expression_statement "FUN_00107050(*param_1,local_c8);" (call_expression "FUN_00107050(*param_1,local_c8)" (identifier "FUN_00107050") (argument_list "(*param_1,local_c8)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (identifier "local_c8") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *abfd)

{
  type_2 *pFVar1;
  type_3 var_3;
  int var_6;
  void *__ptr;
  size_t var_17;
  type_2 *var_12;
  int *piVar5;
  char *pcVar6;
  type_4 var_15;
  char *pcVar8;
  size_t var_18;
  type_5 buf;
  
  __ptr = (void *)var_1(0x2000);
  var_3 = var_2(abfd->filename);
  if (var_3 == 0) {
    pcVar6 = abfd->filename;
    pcVar8 = (char *)var_4(0,"illegal pathname found in archive member: %s",5);
    var_5(pcVar8,pcVar6);
  }
  else {
    var_6 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);
    if (var_6 != 0) {
      pcVar6 = abfd->filename;
      pcVar8 = "internal stat error on %s";
LAB_0010408e:
      pcVar8 = (char *)var_4(0,pcVar8,5);
                    /* WARNING: Subroutine does not return */
      var_7(pcVar8,pcVar6);
    }
    if (var_8 != 0) {
      var_9("x - %s\n",abfd->filename);
    }
    var_15 = 0;
    var_10(abfd,0,0);
    var_12 = (type_2 *)0x0;
    if (buf.st_size == 0) {
      output_filename = abfd->filename;
      var_12 = var_11(output_filename,"w");
      pFVar1 = var_12;
      if (var_12 == (type_2 *)0x0) {
LAB_001040c6:
        var_13(abfd->filename);
                    /* WARNING: Subroutine does not return */
        var_14(1);
      }
    }
    else {
      do {
        var_18 = 0x2000;
        if (buf.st_size - var_15 < 0x2001) {
          var_18 = buf.st_size - var_15;
        }
        var_17 = var_16(__ptr,var_18,abfd);
        if (var_17 != var_18) {
          pcVar8 = "%s is not a valid archive";
          pcVar6 = abfd->my_archive->filename;
          goto LAB_0010408e;
        }
        pFVar1 = (type_2 *)output_file;
        if (var_12 == (type_2 *)0x0) {
          output_filename = abfd->filename;
          var_12 = var_11(output_filename,"w");
          pFVar1 = var_12;
          if (var_12 == (type_2 *)0x0) goto LAB_001040c6;
        }
        output_file = (type_2 *)pFVar1;
        var_17 = var_19(__ptr,1,var_18,var_12);
        if (var_17 != var_18) {
          piVar5 = var_20();
          pcVar6 = var_21(*piVar5);
                    /* WARNING: Subroutine does not return */
          var_7("%s: %s",output_filename,pcVar6);
        }
        var_15 = var_15 + var_18;
        pFVar1 = (type_2 *)output_file;
      } while (var_15 < (type_4)buf.st_size);
    }
    output_file = (type_2 *)pFVar1;
    var_22(var_12);
    output_file = (type_2 *)0x0;
    output_filename = (char *)0x0;
    var_23(abfd->filename,buf.st_mode);
    if (var_24 != 0) {
      buf.st_atim.tv_sec = buf.st_mtim.tv_sec;
      var_25(abfd->filename,&buf);
    }
  }
  var_26(__ptr);
  return;
}


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

void MASKED(undefined8 *param_1)

{
  FILE *pFVar1;
  int iVar2;
  void *__ptr;
  size_t sVar3;
  FILE *__s;
  undefined8 uVar4;
  int *piVar5;
  char *pcVar6;
  ulong uVar7;
  undefined8 uVar8;
  size_t __n;
  undefined1 local_c8 [24];
  __mode_t local_b0;
  ulong local_98;
  undefined8 local_80;
  undefined8 local_70;
  
  __ptr = (void *)xmalloc(0x2000);
  iVar2 = FUN_001084f0(*param_1);
  if (iVar2 == 0) {
    uVar8 = *param_1;
    uVar4 = dcgettext(0,"illegal pathname found in archive member: %s",5);
    FUN_00107900(uVar4,uVar8);
  }
  else {
    iVar2 = (**(code **)(param_1[1] + 0x1e0))(param_1);
    if (iVar2 != 0) {
      uVar8 = *param_1;
      pcVar6 = "internal stat error on %s";
LAB_0010408e:
      uVar4 = dcgettext(0,pcVar6,5);
                    /* WARNING: Subroutine does not return */
      FUN_00107860(uVar4,uVar8);
    }
    if (DAT_00110498 != 0) {
      printf("x - %s\n",*param_1);
    }
    uVar7 = 0;
    bfd_seek(param_1,0,0);
    __s = (FILE *)0x0;
    if (local_98 == 0) {
      DAT_001104b0 = (char *)*param_1;
      __s = fopen(DAT_001104b0,"w");
      pFVar1 = __s;
      if (__s == (FILE *)0x0) {
LAB_001040c6:
        perror((char *)*param_1);
                    /* WARNING: Subroutine does not return */
        xexit(1);
      }
    }
    else {
      do {
        __n = 0x2000;
        if (local_98 - uVar7 < 0x2001) {
          __n = local_98 - uVar7;
        }
        sVar3 = bfd_bread(__ptr,__n,param_1);
        if (sVar3 != __n) {
          pcVar6 = "%s is not a valid archive";
          uVar8 = *(undefined8 *)param_1[0x1a];
          goto LAB_0010408e;
        }
        pFVar1 = DAT_001104a8;
        if (__s == (FILE *)0x0) {
          DAT_001104b0 = (char *)*param_1;
          __s = fopen(DAT_001104b0,"w");
          pFVar1 = __s;
          if (__s == (FILE *)0x0) goto LAB_001040c6;
        }
        DAT_001104a8 = pFVar1;
        sVar3 = fwrite(__ptr,1,__n,__s);
        if (sVar3 != __n) {
          piVar5 = __errno_location();
          pcVar6 = strerror(*piVar5);
                    /* WARNING: Subroutine does not return */
          FUN_00107860("%s: %s",DAT_001104b0,pcVar6);
        }
        uVar7 = uVar7 + __n;
        pFVar1 = DAT_001104a8;
      } while (uVar7 < local_98);
    }
    DAT_001104a8 = pFVar1;
    fclose(__s);
    DAT_001104a8 = (FILE *)0x0;
    DAT_001104b0 = (char *)0x0;
    chmod((char *)*param_1,local_b0);
    if (DAT_00110490 != 0) {
      local_80 = local_70;
      FUN_00107050(*param_1,local_c8);
    }
  }
  free(__ptr);
  return;
}

