
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

void extract_file(bfd *abfd)

{
  FILE *pFVar1;
  void *__ptr;
  bfd_boolean bVar2;
  int iVar3;
  size_t sVar4;
  char *pcVar5;
  int *piVar6;
  char *pcVar7;
  FILE *__s;
  uint __n;
  bool bVar8;
  longlong lVar9;
  bfd *pbVar10;
  uint local_94;
  uint local_90;
  stat buf;
  
  __ptr = (void *)xmalloc(0x2000);
  bVar2 = is_valid_archive_path(abfd->filename);
  if (bVar2 == 0) {
    pcVar7 = abfd->filename;
    pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);
    non_fatal(pcVar5,pcVar7);
    free(__ptr);
    return;
  }
  iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);
  if (iVar3 != 0) {
    pcVar5 = abfd->filename;
    pcVar7 = "internal stat error on %s";
LAB_000160bf:
    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);
                    /* WARNING: Subroutine does not return */
    fatal(pcVar7,pcVar5);
  }
  if (verbose != 0) {
    printf("x - %s\n",abfd->filename);
  }
  bfd_seek(abfd,0,0,0);
  local_94 = 0;
  __s = (FILE *)0x0;
  local_90 = 0;
  if (buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0) {
    output_filename = abfd->filename;
    __s = fopen64(output_filename,"w");
    pFVar1 = __s;
    if (__s == (FILE *)0x0) {
LAB_000160f5:
      perror(abfd->filename);
                    /* WARNING: Subroutine does not return */
      xexit(1);
    }
  }
  else {
    do {
      __n = (uint)buf.st_size - local_94;
      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);
      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {
        __n = 0x2000;
        iVar3 = 0;
      }
      pbVar10 = abfd;
      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);
      if (lVar9 != CONCAT44(iVar3,__n)) {
        pcVar5 = abfd->my_archive->filename;
        pcVar7 = "%s is not a valid archive";
        abfd = pbVar10;
        goto LAB_000160bf;
      }
      pFVar1 = (FILE *)output_file;
      if (__s == (FILE *)0x0) {
        output_filename = abfd->filename;
        __s = fopen64(output_filename,"w");
        pFVar1 = __s;
        if (__s == (FILE *)0x0) goto LAB_000160f5;
      }
      output_file = (FILE *)pFVar1;
      sVar4 = fwrite(__ptr,1,__n,__s);
      if (iVar3 != 0 || sVar4 != __n) {
        piVar6 = __errno_location();
        pcVar7 = strerror(*piVar6);
                    /* WARNING: Subroutine does not return */
        fatal("%s: %s",output_filename,pcVar7);
      }
      bVar8 = CARRY4(local_94,__n);
      local_94 = local_94 + __n;
      local_90 = local_90 + iVar3 + (uint)bVar8;
      pFVar1 = (FILE *)output_file;
    } while (local_90 < buf.st_size._4_4_ ||
             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)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;
}



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

void FUN_00015e00(undefined4 *param_1)

{
  FILE *pFVar1;
  int iVar2;
  size_t sVar3;
  int *piVar4;
  char *pcVar5;
  undefined1 *puVar6;
  undefined1 *puVar7;
  FILE *__s;
  uint __n;
  bool bVar8;
  longlong lVar9;
  undefined4 auStackY_d0 [9];
  undefined1 auStack_9c [8];
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  void *local_84;
  undefined1 *local_80;
  undefined1 local_7c [16];
  __mode_t local_6c;
  uint local_50;
  uint local_4c;
  undefined4 local_3c;
  undefined4 local_34;
  undefined4 auStack_1c [3];
  
  auStack_1c[2] = 0x15e09;
  local_84 = (void *)xmalloc();
  iVar2 = FUN_00018ac0();
  if (iVar2 == 0) {
    dcgettext();
    FUN_00017f20();
    free(local_84);
    return;
  }
  local_80 = local_7c;
  iVar2 = (**(code **)(param_1[1] + 0xfc))();
  if (iVar2 != 0) {
LAB_000160bf:
    dcgettext();
    puVar6 = &stack0xffffff54;
    FUN_00017ef0();
LAB_000160d0:
    *(undefined4 *)(puVar6 + -4) = 0x160d5;
    piVar4 = __errno_location();
    *(int *)(puVar6 + -0x10) = *piVar4;
    *(undefined4 *)(puVar6 + -0x14) = 0x160df;
    pcVar5 = strerror(*(int *)(puVar6 + -0x10));
    *(char **)(puVar6 + -8) = pcVar5;
    *(char **)(puVar6 + -0xc) = DAT_000212b0;
    puVar7 = puVar6 + -0x10;
    *(char **)(puVar6 + -0x10) = "%s: %s";
    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;
    FUN_00017ef0();
LAB_000160f5:
    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);
    *(undefined4 *)(puVar7 + -0x14) = 0x16106;
    perror(*(char **)(puVar7 + -0x10));
    *(undefined4 *)(puVar7 + -0x10) = 1;
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)(puVar7 + -0x14) = 0x16112;
    xexit();
  }
  local_8c = local_50;
  local_88 = local_4c;
  if (DAT_000212a0 != 0) {
    printf("x - %s\n");
  }
  puVar6 = auStack_9c;
  puVar7 = auStack_9c;
  bfd_seek();
  local_94 = 0;
  __s = (FILE *)0x0;
  local_90 = 0;
  if (local_88 == 0 && local_8c == 0) {
    DAT_000212b0 = (char *)*param_1;
    __s = fopen64(DAT_000212b0,"w");
    puVar7 = auStack_9c;
    pFVar1 = __s;
    if (__s == (FILE *)0x0) goto LAB_000160f5;
  }
  else {
    do {
      __n = local_8c - local_94;
      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);
      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {
        __n = 0x2000;
        iVar2 = 0;
      }
      lVar9 = bfd_bread();
      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;
      pFVar1 = DAT_000212ac;
      if (__s == (FILE *)0x0) {
        DAT_000212b0 = (char *)*param_1;
        __s = fopen64(DAT_000212b0,"w");
        pFVar1 = __s;
        if (__s == (FILE *)0x0) goto LAB_000160f5;
      }
      DAT_000212ac = pFVar1;
      sVar3 = fwrite(local_84,1,__n,__s);
      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;
      bVar8 = CARRY4(local_94,__n);
      local_94 = local_94 + __n;
      local_90 = local_90 + iVar2 + (uint)bVar8;
      pFVar1 = DAT_000212ac;
    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));
  }
  DAT_000212ac = pFVar1;
  fclose(__s);
  DAT_000212ac = (FILE *)0x0;
  DAT_000212b0 = (char *)0x0;
  chmod((char *)*param_1,local_6c);
  if (DAT_00021298 != 0) {
    local_3c = local_34;
    FUN_000175c0();
  }
  free(local_84);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013710
ADD EBX,0xb1f7
SUB ESP,0x98
PUSH 0x2000
CALL 0x00012220
MOV dword ptr [ESP + 0x28],EAX
POP EDI
MOV EAX,dword ptr [ESP + 0xac]
PUSH dword ptr [EAX]
CALL 0x00018ac0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00016068
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0xa8]
LEA ECX,[ESP + 0x28]
MOV dword ptr [ESP + 0x24],ECX
MOV EAX,dword ptr [EAX + 0x4]
PUSH ECX
PUSH dword ptr [ESP + 0xac]
CALL dword ptr [EAX + 0xfc]
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00016112
MOV EAX,dword ptr [ESP + 0x4c]
MOV EDX,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EBX + 0x2a0]
MOV dword ptr [ESP + 0x14],EDX
TEST EAX,EAX
JNZ 0x00016020
PUSH 0x0
PUSH 0x0
PUSH 0x0
PUSH dword ptr [ESP + 0xac]
CALL 0x00012610
ADD ESP,0x10
MOV EBP,dword ptr [ESP + 0x14]
MOV EDI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x8],0x0
MOV EDX,EBP
XOR EBP,EBP
MOV dword ptr [ESP + 0xc],0x0
OR EDX,EDI
JNZ 0x00015f08
JMP 0x00015f90
PUSH EBP
PUSH ESI
PUSH 0x1
PUSH dword ptr [ESP + 0x24]
CALL 0x00012210
MOV EDX,EDI
ADD ESP,0x10
XOR EAX,ESI
OR EDX,EAX
JNZ 0x000160d0
ADD dword ptr [ESP + 0x8],ESI
MOV ESI,dword ptr [ESP + 0x10]
ADC dword ptr [ESP + 0xc],EDI
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x14]
CMP EAX,ESI
MOV EAX,EDX
SBB EAX,EDI
JNC 0x00015fc2
MOV EAX,0x2000
MOV ESI,dword ptr [ESP + 0x10]
SUB ESI,dword ptr [ESP + 0x8]
MOV EDI,dword ptr [ESP + 0x14]
SBB EDI,dword ptr [ESP + 0xc]
CMP EAX,ESI
MOV EAX,0x0
SBB EAX,EDI
JNC 0x00015f2f
MOV ESI,0x2000
XOR EDI,EDI
PUSH dword ptr [ESP + 0xa0]
PUSH EDI
PUSH ESI
PUSH dword ptr [ESP + 0x24]
CALL 0x00012560
ADD ESP,0x10
XOR EAX,ESI
XOR EDX,EDI
OR EDX,EAX
JNZ 0x000160a5
TEST EBP,EBP
JNZ 0x00015ec8
MOV EAX,dword ptr [ESP + 0xa0]
LEA EDX,[EBX + 0xffffa0e5]
SUB ESP,0x8
MOV EAX,dword ptr [EAX]
PUSH EDX
PUSH EAX
MOV dword ptr [EBX + 0x2b0],EAX
CALL 0x000121f0
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x000160f5
MOV dword ptr [EBX + 0x2ac],EAX
JMP 0x00015ec8
MOV EAX,dword ptr [ESP + 0xa0]
LEA EDX,[EBX + 0xffffa0e5]
SUB ESP,0x8
MOV EAX,dword ptr [EAX]
PUSH EDX
PUSH EAX
MOV dword ptr [EBX + 0x2b0],EAX
CALL 0x000121f0
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x000160f5
MOV dword ptr [EBX + 0x2ac],EAX
SUB ESP,0xc
PUSH EBP
CALL 0x00012150
POP EAX
POP EDX
PUSH dword ptr [ESP + 0x38]
MOV EAX,dword ptr [ESP + 0xac]
MOV dword ptr [EBX + 0x2ac],0x0
MOV dword ptr [EBX + 0x2b0],0x0
PUSH dword ptr [EAX]
CALL 0x00012570
MOV ECX,dword ptr [EBX + 0x298]
ADD ESP,0x10
TEST ECX,ECX
JNZ 0x00016040
SUB ESP,0xc
PUSH dword ptr [ESP + 0x24]
CALL 0x00012100
ADD ESP,0x10
ADD ESP,0x8c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0xa8]
PUSH dword ptr [EAX]
LEA EAX,[EBX + 0xffffa0dd]
PUSH EAX
CALL 0x000120a0
ADD ESP,0x10
JMP 0x00015e89
MOV EAX,dword ptr [ESP + 0x68]
SUB ESP,0x8
MOV dword ptr [ESP + 0x68],EAX
PUSH dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0xac]
PUSH dword ptr [EAX]
CALL 0x000175c0
ADD ESP,0x10
JMP 0x00016000
MOV EAX,dword ptr [ESP + 0xa0]
SUB ESP,0x4
MOV ESI,dword ptr [EAX]
LEA EAX,[EBX + 0xffffaa90]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00012180
POP EDX
POP ECX
PUSH ESI
PUSH EAX
CALL 0x00017f20
POP ESI
PUSH dword ptr [ESP + 0x24]
CALL 0x00012100
ADD ESP,0x10
ADD ESP,0x8c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0xa0]
SUB ESP,0x4
MOV EAX,dword ptr [EAX + 0x8c]
MOV ESI,dword ptr [EAX]
PUSH 0x5
LEA EAX,[EBX + 0xffffa004]
PUSH EAX
PUSH 0x0
CALL 0x00012180
POP EDI
POP EBP
PUSH ESI
PUSH EAX
CALL 0x00017ef0
CALL 0x00012400
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x000122f0
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xffffa0e7]
PUSH dword ptr [EBX + 0x2b0]
PUSH EAX
CALL 0x00017ef0
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0xac]
PUSH dword ptr [EAX]
CALL 0x00012200
MOV dword ptr [ESP],0x1
CALL 0x000124a0
MOV EAX,dword ptr [ESP + 0xa0]
MOV ESI,dword ptr [EAX]
PUSH EAX
LEA EAX,[EBX + 0xffff9fe2]
PUSH 0x5
JMP 0x000160bf
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00015e00(undefined4 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}\n\n" comment (function_definition "void FUN_00015e00(undefined4 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}" primitive_type (function_declarator "FUN_00015e00(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}" { (declaration "FILE *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint __n;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "longlong lVar9;" type_identifier identifier ;) (declaration "undefined4 auStackY_d0 [9];" type_identifier (array_declarator "auStackY_d0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_9c [8];" type_identifier (array_declarator "auStack_9c [8]" identifier [ number_literal ]) ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "void *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "undefined1 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 local_7c [16];" type_identifier (array_declarator "local_7c [16]" identifier [ number_literal ]) ;) (declaration "__mode_t local_6c;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 auStack_1c [3];" type_identifier (array_declarator "auStack_1c [3]" identifier [ number_literal ]) ;) (expression_statement "auStack_1c[2] = 0x15e09;" (assignment_expression "auStack_1c[2] = 0x15e09" (subscript_expression "auStack_1c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_84 = (void *)xmalloc();" (assignment_expression "local_84 = (void *)xmalloc()" identifier = (cast_expression "(void *)xmalloc()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar2 = FUN_00018ac0();" (assignment_expression "iVar2 = FUN_00018ac0()" identifier = (call_expression "FUN_00018ac0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }" { (expression_statement "dcgettext();" (call_expression "dcgettext()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00017f20();" (call_expression "FUN_00017f20()" identifier (argument_list "()" ( ))) ;) (expression_statement "free(local_84);" (call_expression "free(local_84)" identifier (argument_list "(local_84)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_80 = local_7c;" (assignment_expression "local_80 = local_7c" identifier = identifier) ;) (expression_statement "iVar2 = (**(code **)(param_1[1] + 0xfc))();" (assignment_expression "iVar2 = (**(code **)(param_1[1] + 0xfc))()" identifier = (call_expression "(**(code **)(param_1[1] + 0xfc))()" (parenthesized_expression "(**(code **)(param_1[1] + 0xfc))" ( (pointer_expression "**(code **)(param_1[1] + 0xfc)" * (pointer_expression "*(code **)(param_1[1] + 0xfc)" * (cast_expression "(code **)(param_1[1] + 0xfc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0xfc)" ( (binary_expression "param_1[1] + 0xfc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    /* WARNING: Subroutine does not return */\n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }" { (labeled_statement "LAB_000160bf:\n    dcgettext();" statement_identifier : (expression_statement "dcgettext();" (call_expression "dcgettext()" identifier (argument_list "()" ( ))) ;)) (expression_statement "puVar6 = &stack0xffffff54;" (assignment_expression "puVar6 = &stack0xffffff54" identifier = (pointer_expression "&stack0xffffff54" & identifier)) ;) (expression_statement "FUN_00017ef0();" (call_expression "FUN_00017ef0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;" statement_identifier : (expression_statement "*(undefined4 *)(puVar6 + -4) = 0x160d5;" (assignment_expression "*(undefined4 *)(puVar6 + -4) = 0x160d5" (pointer_expression "*(undefined4 *)(puVar6 + -4)" * (cast_expression "(undefined4 *)(puVar6 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -4)" ( (binary_expression "puVar6 + -4" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(puVar6 + -0x10) = *piVar4;" (assignment_expression "*(int *)(puVar6 + -0x10) = *piVar4" (pointer_expression "*(int *)(puVar6 + -0x10)" * (cast_expression "(int *)(puVar6 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x160df;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x160df" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar5 = strerror(*(int *)(puVar6 + -0x10));" (assignment_expression "pcVar5 = strerror(*(int *)(puVar6 + -0x10))" identifier = (call_expression "strerror(*(int *)(puVar6 + -0x10))" identifier (argument_list "(*(int *)(puVar6 + -0x10))" ( (pointer_expression "*(int *)(puVar6 + -0x10)" * (cast_expression "(int *)(puVar6 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "*(char **)(puVar6 + -8) = pcVar5;" (assignment_expression "*(char **)(puVar6 + -8) = pcVar5" (pointer_expression "*(char **)(puVar6 + -8)" * (cast_expression "(char **)(puVar6 + -8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar6 + -0xc) = DAT_000212b0;" (assignment_expression "*(char **)(puVar6 + -0xc) = DAT_000212b0" (pointer_expression "*(char **)(puVar6 + -0xc)" * (cast_expression "(char **)(puVar6 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar7 = puVar6 + -0x10;" (assignment_expression "puVar7 = puVar6 + -0x10" identifier = (binary_expression "puVar6 + -0x10" identifier + number_literal)) ;) (expression_statement "*(char **)(puVar6 + -0x10) = "%s: %s";" (assignment_expression "*(char **)(puVar6 + -0x10) = "%s: %s"" (pointer_expression "*(char **)(puVar6 + -0x10)" * (cast_expression "(char **)(puVar6 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = (string_literal ""%s: %s"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x160f5;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x160f5" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00017ef0();" (call_expression "FUN_00017ef0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);" statement_identifier : (expression_statement "*(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar7 + -0x10)" * (cast_expression "(undefined4 *)(puVar7 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar7 + 0xa0)" * (pointer_expression "*(undefined4 **)(puVar7 + 0xa0)" * (cast_expression "(undefined4 **)(puVar7 + 0xa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0xa0)" ( (binary_expression "puVar7 + 0xa0" identifier + number_literal) )))))) ;)) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x16106;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x16106" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "perror(*(char **)(puVar7 + -0x10));" (call_expression "perror(*(char **)(puVar7 + -0x10))" identifier (argument_list "(*(char **)(puVar7 + -0x10))" ( (pointer_expression "*(char **)(puVar7 + -0x10)" * (cast_expression "(char **)(puVar7 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar7 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar7 + -0x10)" * (cast_expression "(undefined4 *)(puVar7 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x16112;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x16112" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "xexit();" (call_expression "xexit()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_8c = local_50;" (assignment_expression "local_8c = local_50" identifier = identifier) ;) (expression_statement "local_88 = local_4c;" (assignment_expression "local_88 = local_4c" identifier = identifier) ;) (if_statement "if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }" if (parenthesized_expression "(DAT_000212a0 != 0)" ( (binary_expression "DAT_000212a0 != 0" identifier != number_literal) )) (compound_statement "{\n    printf("x - %s\n");\n  }" { (expression_statement "printf("x - %s\n");" (call_expression "printf("x - %s\n")" identifier (argument_list "("x - %s\n")" ( (string_literal ""x - %s\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "puVar6 = auStack_9c;" (assignment_expression "puVar6 = auStack_9c" identifier = identifier) ;) (expression_statement "puVar7 = auStack_9c;" (assignment_expression "puVar7 = auStack_9c" identifier = identifier) ;) (expression_statement "bfd_seek();" (call_expression "bfd_seek()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = 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)) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (if_statement "if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" if (parenthesized_expression "(local_88 == 0 && local_8c == 0)" ( (binary_expression "local_88 == 0 && local_8c == 0" (binary_expression "local_88 == 0" identifier == number_literal) && (binary_expression "local_8c == 0" identifier == number_literal)) )) (compound_statement "{\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }" { (expression_statement "DAT_000212b0 = (char *)*param_1;" (assignment_expression "DAT_000212b0 = (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 = fopen64(DAT_000212b0,"w");" (assignment_expression "__s = fopen64(DAT_000212b0,"w")" identifier = (call_expression "fopen64(DAT_000212b0,"w")" identifier (argument_list "(DAT_000212b0,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "puVar7 = auStack_9c;" (assignment_expression "puVar7 = auStack_9c" identifier = identifier) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) goto LAB_000160f5;" 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_000160f5;" goto statement_identifier ;)) }) (else_clause "else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" else (compound_statement "{\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" { (do_statement "do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));" do (compound_statement "{\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    }" { (expression_statement "__n = local_8c - local_94;" (assignment_expression "__n = local_8c - local_94" identifier = (binary_expression "local_8c - local_94" identifier - identifier)) ;) (expression_statement "iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);" (assignment_expression "iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94)" identifier = (binary_expression "(local_88 - local_90) - (uint)(local_8c < local_94)" (parenthesized_expression "(local_88 - local_90)" ( (binary_expression "local_88 - local_90" identifier - identifier) )) - (call_expression "(uint)(local_8c < local_94)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_8c < local_94)" ( (binary_expression "local_8c < local_94" identifier < identifier) ))))) ;) (if_statement "if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }" if (parenthesized_expression "(iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n))" ( (binary_expression "iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)" (binary_expression "iVar2 != 0" identifier != number_literal) || (binary_expression "(uint)-iVar2 < (uint)(0x2000 < __n)" (binary_expression "(uint)-iVar2" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(0x2000 < __n)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x2000 < __n)" ( (binary_expression "0x2000 < __n" number_literal < identifier) ))))) )) (compound_statement "{\n        __n = 0x2000;\n        iVar2 = 0;\n      }" { (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) (expression_statement "lVar9 = bfd_bread();" (assignment_expression "lVar9 = bfd_bread()" identifier = (call_expression "bfd_bread()" identifier (argument_list "()" ( )))) ;) (if_statement "if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;" if (parenthesized_expression "(lVar9 != CONCAT44(iVar2,__n))" ( (binary_expression "lVar9 != CONCAT44(iVar2,__n)" identifier != (call_expression "CONCAT44(iVar2,__n)" identifier (argument_list "(iVar2,__n)" ( identifier , identifier )))) )) (goto_statement "goto LAB_000160bf;" goto statement_identifier ;)) (expression_statement "pFVar1 = DAT_000212ac;" (assignment_expression "pFVar1 = DAT_000212ac" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\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_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }" { (expression_statement "DAT_000212b0 = (char *)*param_1;" (assignment_expression "DAT_000212b0 = (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 = fopen64(DAT_000212b0,"w");" (assignment_expression "__s = fopen64(DAT_000212b0,"w")" identifier = (call_expression "fopen64(DAT_000212b0,"w")" identifier (argument_list "(DAT_000212b0,"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_000160f5;" 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_000160f5;" goto statement_identifier ;)) })) (expression_statement "DAT_000212ac = pFVar1;" (assignment_expression "DAT_000212ac = pFVar1" identifier = identifier) ;) (expression_statement "sVar3 = fwrite(local_84,1,__n,__s);" (assignment_expression "sVar3 = fwrite(local_84,1,__n,__s)" identifier = (call_expression "fwrite(local_84,1,__n,__s)" identifier (argument_list "(local_84,1,__n,__s)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;" if (parenthesized_expression "(iVar2 != 0 || sVar3 != __n)" ( (binary_expression "iVar2 != 0 || sVar3 != __n" (binary_expression "iVar2 != 0" identifier != number_literal) || (binary_expression "sVar3 != __n" identifier != identifier)) )) (goto_statement "goto LAB_000160d0;" goto statement_identifier ;)) (expression_statement "bVar8 = CARRY4(local_94,__n);" (assignment_expression "bVar8 = CARRY4(local_94,__n)" identifier = (call_expression "CARRY4(local_94,__n)" identifier (argument_list "(local_94,__n)" ( identifier , identifier )))) ;) (expression_statement "local_94 = local_94 + __n;" (assignment_expression "local_94 = local_94 + __n" identifier = (binary_expression "local_94 + __n" identifier + identifier)) ;) (expression_statement "local_90 = local_90 + iVar2 + (uint)bVar8;" (assignment_expression "local_90 = local_90 + iVar2 + (uint)bVar8" identifier = (binary_expression "local_90 + iVar2 + (uint)bVar8" (binary_expression "local_90 + iVar2" identifier + identifier) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pFVar1 = DAT_000212ac;" (assignment_expression "pFVar1 = DAT_000212ac" identifier = identifier) ;) }) while (parenthesized_expression "(local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c))" ( (binary_expression "local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c)" (binary_expression "local_90 < local_88" identifier < identifier) || (binary_expression "local_90 - local_88 < (uint)(local_94 < local_8c)" (binary_expression "local_90 - local_88" identifier - identifier) < (call_expression "(uint)(local_94 < local_8c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_94 < local_8c)" ( (binary_expression "local_94 < local_8c" identifier < identifier) ))))) )) ;) }))) (expression_statement "DAT_000212ac = pFVar1;" (assignment_expression "DAT_000212ac = pFVar1" identifier = identifier) ;) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "DAT_000212ac = (FILE *)0x0;" (assignment_expression "DAT_000212ac = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_000212b0 = (char *)0x0;" (assignment_expression "DAT_000212b0 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "chmod((char *)*param_1,local_6c);" (call_expression "chmod((char *)*param_1,local_6c)" identifier (argument_list "((char *)*param_1,local_6c)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , identifier ))) ;) (if_statement "if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }" if (parenthesized_expression "(DAT_00021298 != 0)" ( (binary_expression "DAT_00021298 != 0" identifier != number_literal) )) (compound_statement "{\n    local_3c = local_34;\n    FUN_000175c0();\n  }" { (expression_statement "local_3c = local_34;" (assignment_expression "local_3c = local_34" identifier = identifier) ;) (expression_statement "FUN_000175c0();" (call_expression "FUN_000175c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(local_84);" (call_expression "free(local_84)" identifier (argument_list "(local_84)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nvoid extract_file(bfd *abfd)\n\n{\n  FILE *pFVar1;\n  void *__ptr;\n  bfd_boolean bVar2;\n  int iVar3;\n  size_t sVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  bfd *pbVar10;\n  uint local_94;\n  uint local_90;\n  stat buf;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  bVar2 = is_valid_archive_path(abfd->filename);\n  if (bVar2 == 0) {\n    pcVar7 = abfd->filename;\n    pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar5,pcVar7);\n    free(__ptr);\n    return;\n  }\n  iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n  if (iVar3 != 0) {\n    pcVar5 = abfd->filename;\n    pcVar7 = "internal stat error on %s";\nLAB_000160bf:\n    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);\n                    /* WARNING: Subroutine does not return */\n    fatal(pcVar7,pcVar5);\n  }\n  if (verbose != 0) {\n    printf("x - %s\n",abfd->filename);\n  }\n  bfd_seek(abfd,0,0,0);\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0) {\n    output_filename = abfd->filename;\n    __s = fopen64(output_filename,"w");\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) {\nLAB_000160f5:\n      perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n      xexit(1);\n    }\n  }\n  else {\n    do {\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)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  free(__ptr);\n  return;\n}\n\n" comment comment (function_definition "void extract_file(bfd *abfd)\n\n{\n  FILE *pFVar1;\n  void *__ptr;\n  bfd_boolean bVar2;\n  int iVar3;\n  size_t sVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  bfd *pbVar10;\n  uint local_94;\n  uint local_90;\n  stat buf;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  bVar2 = is_valid_archive_path(abfd->filename);\n  if (bVar2 == 0) {\n    pcVar7 = abfd->filename;\n    pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar5,pcVar7);\n    free(__ptr);\n    return;\n  }\n  iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n  if (iVar3 != 0) {\n    pcVar5 = abfd->filename;\n    pcVar7 = "internal stat error on %s";\nLAB_000160bf:\n    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);\n                    /* WARNING: Subroutine does not return */\n    fatal(pcVar7,pcVar5);\n  }\n  if (verbose != 0) {\n    printf("x - %s\n",abfd->filename);\n  }\n  bfd_seek(abfd,0,0,0);\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0) {\n    output_filename = abfd->filename;\n    __s = fopen64(output_filename,"w");\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) {\nLAB_000160f5:\n      perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n      xexit(1);\n    }\n  }\n  else {\n    do {\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)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  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  void *__ptr;\n  bfd_boolean bVar2;\n  int iVar3;\n  size_t sVar4;\n  char *pcVar5;\n  int *piVar6;\n  char *pcVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  bfd *pbVar10;\n  uint local_94;\n  uint local_90;\n  stat buf;\n  \n  __ptr = (void *)xmalloc(0x2000);\n  bVar2 = is_valid_archive_path(abfd->filename);\n  if (bVar2 == 0) {\n    pcVar7 = abfd->filename;\n    pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar5,pcVar7);\n    free(__ptr);\n    return;\n  }\n  iVar3 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);\n  if (iVar3 != 0) {\n    pcVar5 = abfd->filename;\n    pcVar7 = "internal stat error on %s";\nLAB_000160bf:\n    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);\n                    /* WARNING: Subroutine does not return */\n    fatal(pcVar7,pcVar5);\n  }\n  if (verbose != 0) {\n    printf("x - %s\n",abfd->filename);\n  }\n  bfd_seek(abfd,0,0,0);\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0) {\n    output_filename = abfd->filename;\n    __s = fopen64(output_filename,"w");\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) {\nLAB_000160f5:\n      perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n      xexit(1);\n    }\n  }\n  else {\n    do {\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)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  free(__ptr);\n  return;\n}" { (declaration "FILE *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint __n;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "longlong lVar9;" type_identifier identifier ;) (declaration "bfd *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "uint local_90;" type_identifier 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    pcVar7 = abfd->filename;\n    pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar5,pcVar7);\n    free(__ptr);\n    return;\n  }" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar7 = abfd->filename;\n    pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);\n    non_fatal(pcVar5,pcVar7);\n    free(__ptr);\n    return;\n  }" { (expression_statement "pcVar7 = abfd->filename;" (assignment_expression "pcVar7 = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"illegal pathname found in archive member: %s",5);" (assignment_expression "pcVar5 = (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(pcVar5,pcVar7);" (call_expression "non_fatal(pcVar5,pcVar7)" identifier (argument_list "(pcVar5,pcVar7)" ( identifier , identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return;" return ;) })) (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    pcVar5 = abfd->filename;\n    pcVar7 = "internal stat error on %s";\nLAB_000160bf:\n    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);\n                    /* WARNING: Subroutine does not return */\n    fatal(pcVar7,pcVar5);\n  }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n    pcVar5 = abfd->filename;\n    pcVar7 = "internal stat error on %s";\nLAB_000160bf:\n    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);\n                    /* WARNING: Subroutine does not return */\n    fatal(pcVar7,pcVar5);\n  }" { (expression_statement "pcVar5 = abfd->filename;" (assignment_expression "pcVar5 = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = "internal stat error on %s";" (assignment_expression "pcVar7 = "internal stat error on %s"" identifier = (string_literal ""internal stat error on %s"" " string_content ")) ;) (labeled_statement "LAB_000160bf:\n    pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);" statement_identifier : (expression_statement "pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd);" (assignment_expression "pcVar7 = (char *)dcgettext(0,pcVar7,5,abfd)" identifier = (cast_expression "(char *)dcgettext(0,pcVar7,5,abfd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar7,5,abfd)" identifier (argument_list "(0,pcVar7,5,abfd)" ( number_literal , identifier , number_literal , identifier ))))) ;)) comment (expression_statement "fatal(pcVar7,pcVar5);" (call_expression "fatal(pcVar7,pcVar5)" identifier (argument_list "(pcVar7,pcVar5)" ( 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 "bfd_seek(abfd,0,0,0);" (call_expression "bfd_seek(abfd,0,0,0)" identifier (argument_list "(abfd,0,0,0)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = 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)) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (if_statement "if (buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0) {\n    output_filename = abfd->filename;\n    __s = fopen64(output_filename,"w");\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) {\nLAB_000160f5:\n      perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n      xexit(1);\n    }\n  }\n  else {\n    do {\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size));\n  }" if (parenthesized_expression "(buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0)" ( (binary_expression "buf.st_size._4_4_ == 0 && (uint)buf.st_size == 0" (binary_expression "buf.st_size._4_4_ == 0" (field_expression "buf.st_size._4_4_" (field_expression "buf.st_size" identifier . field_identifier) . field_identifier) == number_literal) && (binary_expression "(uint)buf.st_size == 0" (cast_expression "(uint)buf.st_size" ( (type_descriptor "uint" type_identifier) ) (field_expression "buf.st_size" identifier . field_identifier)) == number_literal)) )) (compound_statement "{\n    output_filename = abfd->filename;\n    __s = fopen64(output_filename,"w");\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) {\nLAB_000160f5:\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 = fopen64(output_filename,"w");" (assignment_expression "__s = fopen64(output_filename,"w")" identifier = (call_expression "fopen64(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_000160f5:\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_000160f5:\n      perror(abfd->filename);\n                    /* WARNING: Subroutine does not return */\n      xexit(1);\n    }" { (labeled_statement "LAB_000160f5:\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 = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size));\n  }" else (compound_statement "{\n    do {\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size));\n  }" { (do_statement "do {\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    } while (local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size));" do (compound_statement "{\n      __n = (uint)buf.st_size - local_94;\n      iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);\n      if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }\n      pbVar10 = abfd;\n      lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);\n      if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }\n      pFVar1 = (FILE *)output_file;\n      if (__s == (FILE *)0x0) {\n        output_filename = abfd->filename;\n        __s = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      output_file = (FILE *)pFVar1;\n      sVar4 = fwrite(__ptr,1,__n,__s);\n      if (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar3 + (uint)bVar8;\n      pFVar1 = (FILE *)output_file;\n    }" { (expression_statement "__n = (uint)buf.st_size - local_94;" (assignment_expression "__n = (uint)buf.st_size - local_94" identifier = (binary_expression "(uint)buf.st_size - local_94" (cast_expression "(uint)buf.st_size" ( (type_descriptor "uint" type_identifier) ) (field_expression "buf.st_size" identifier . field_identifier)) - identifier)) ;) (expression_statement "iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94);" (assignment_expression "iVar3 = (buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94)" identifier = (binary_expression "(buf.st_size._4_4_ - local_90) - (uint)((uint)buf.st_size < local_94)" (parenthesized_expression "(buf.st_size._4_4_ - local_90)" ( (binary_expression "buf.st_size._4_4_ - local_90" (field_expression "buf.st_size._4_4_" (field_expression "buf.st_size" identifier . field_identifier) . field_identifier) - identifier) )) - (call_expression "(uint)((uint)buf.st_size < local_94)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)buf.st_size < local_94)" ( (binary_expression "(uint)buf.st_size < local_94" (cast_expression "(uint)buf.st_size" ( (type_descriptor "uint" type_identifier) ) (field_expression "buf.st_size" identifier . field_identifier)) < identifier) ))))) ;) (if_statement "if (iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar3 = 0;\n      }" if (parenthesized_expression "(iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n))" ( (binary_expression "iVar3 != 0 || (uint)-iVar3 < (uint)(0x2000 < __n)" (binary_expression "iVar3 != 0" identifier != number_literal) || (binary_expression "(uint)-iVar3 < (uint)(0x2000 < __n)" (binary_expression "(uint)-iVar3" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(0x2000 < __n)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x2000 < __n)" ( (binary_expression "0x2000 < __n" number_literal < identifier) ))))) )) (compound_statement "{\n        __n = 0x2000;\n        iVar3 = 0;\n      }" { (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" identifier = number_literal) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) })) (expression_statement "pbVar10 = abfd;" (assignment_expression "pbVar10 = abfd" identifier = identifier) ;) (expression_statement "lVar9 = bfd_bread(__ptr,__n,iVar3,abfd);" (assignment_expression "lVar9 = bfd_bread(__ptr,__n,iVar3,abfd)" identifier = (call_expression "bfd_bread(__ptr,__n,iVar3,abfd)" identifier (argument_list "(__ptr,__n,iVar3,abfd)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (lVar9 != CONCAT44(iVar3,__n)) {\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }" if (parenthesized_expression "(lVar9 != CONCAT44(iVar3,__n))" ( (binary_expression "lVar9 != CONCAT44(iVar3,__n)" identifier != (call_expression "CONCAT44(iVar3,__n)" identifier (argument_list "(iVar3,__n)" ( identifier , identifier )))) )) (compound_statement "{\n        pcVar5 = abfd->my_archive->filename;\n        pcVar7 = "%s is not a valid archive";\n        abfd = pbVar10;\n        goto LAB_000160bf;\n      }" { (expression_statement "pcVar5 = abfd->my_archive->filename;" (assignment_expression "pcVar5 = abfd->my_archive->filename" identifier = (field_expression "abfd->my_archive->filename" (field_expression "abfd->my_archive" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pcVar7 = "%s is not a valid archive";" (assignment_expression "pcVar7 = "%s is not a valid archive"" identifier = (string_literal ""%s is not a valid archive"" " string_content ")) ;) (expression_statement "abfd = pbVar10;" (assignment_expression "abfd = pbVar10" identifier = identifier) ;) (goto_statement "goto LAB_000160bf;" 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 = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\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 = fopen64(output_filename,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }" { (expression_statement "output_filename = abfd->filename;" (assignment_expression "output_filename = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "__s = fopen64(output_filename,"w");" (assignment_expression "__s = fopen64(output_filename,"w")" identifier = (call_expression "fopen64(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_000160f5;" 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_000160f5;" 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 (iVar3 != 0 || sVar4 != __n) {\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }" if (parenthesized_expression "(iVar3 != 0 || sVar4 != __n)" ( (binary_expression "iVar3 != 0 || sVar4 != __n" (binary_expression "iVar3 != 0" identifier != number_literal) || (binary_expression "sVar4 != __n" identifier != identifier)) )) (compound_statement "{\n        piVar6 = __errno_location();\n        pcVar7 = strerror(*piVar6);\n                    /* WARNING: Subroutine does not return */\n        fatal("%s: %s",output_filename,pcVar7);\n      }" { (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar7 = strerror(*piVar6);" (assignment_expression "pcVar7 = strerror(*piVar6)" identifier = (call_expression "strerror(*piVar6)" identifier (argument_list "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )))) ;) comment (expression_statement "fatal("%s: %s",output_filename,pcVar7);" (call_expression "fatal("%s: %s",output_filename,pcVar7)" identifier (argument_list "("%s: %s",output_filename,pcVar7)" ( (string_literal ""%s: %s"" " string_content ") , identifier , identifier ))) ;) })) (expression_statement "bVar8 = CARRY4(local_94,__n);" (assignment_expression "bVar8 = CARRY4(local_94,__n)" identifier = (call_expression "CARRY4(local_94,__n)" identifier (argument_list "(local_94,__n)" ( identifier , identifier )))) ;) (expression_statement "local_94 = local_94 + __n;" (assignment_expression "local_94 = local_94 + __n" identifier = (binary_expression "local_94 + __n" identifier + identifier)) ;) (expression_statement "local_90 = local_90 + iVar3 + (uint)bVar8;" (assignment_expression "local_90 = local_90 + iVar3 + (uint)bVar8" identifier = (binary_expression "local_90 + iVar3 + (uint)bVar8" (binary_expression "local_90 + iVar3" identifier + identifier) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_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 "(local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size))" ( (binary_expression "local_90 < buf.st_size._4_4_ ||\n             local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size)" (binary_expression "local_90 < buf.st_size._4_4_" identifier < (field_expression "buf.st_size._4_4_" (field_expression "buf.st_size" identifier . field_identifier) . field_identifier)) || (binary_expression "local_90 - buf.st_size._4_4_ < (uint)(local_94 < (uint)buf.st_size)" (binary_expression "local_90 - buf.st_size._4_4_" identifier - (field_expression "buf.st_size._4_4_" (field_expression "buf.st_size" identifier . field_identifier) . field_identifier)) < (call_expression "(uint)(local_94 < (uint)buf.st_size)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_94 < (uint)buf.st_size)" ( (binary_expression "local_94 < (uint)buf.st_size" identifier < (cast_expression "(uint)buf.st_size" ( (type_descriptor "uint" 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_00015e00(undefined4 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}\n\n" (function_definition "void FUN_00015e00(undefined4 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}" primitive_type (function_declarator "FUN_00015e00(undefined4 *param_1)" identifier (parameter_list "(undefined4 *param_1)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}" { (declaration "FILE *pFVar1;" type_identifier (pointer_declarator "*pFVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "FILE *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "uint __n;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "longlong lVar9;" type_identifier identifier ;) (declaration "undefined4 auStackY_d0 [9];" type_identifier (array_declarator "auStackY_d0 [9]" identifier [ number_literal ]) ;) (declaration "undefined1 auStack_9c [8];" type_identifier (array_declarator "auStack_9c [8]" identifier [ number_literal ]) ;) (declaration "uint local_94;" type_identifier identifier ;) (declaration "uint local_90;" type_identifier identifier ;) (declaration "uint local_8c;" type_identifier identifier ;) (declaration "uint local_88;" type_identifier identifier ;) (declaration "void *local_84;" primitive_type (pointer_declarator "*local_84" * identifier) ;) (declaration "undefined1 *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "undefined1 local_7c [16];" type_identifier (array_declarator "local_7c [16]" identifier [ number_literal ]) ;) (declaration "__mode_t local_6c;" type_identifier identifier ;) (declaration "uint local_50;" type_identifier identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 auStack_1c [3];" type_identifier (array_declarator "auStack_1c [3]" identifier [ number_literal ]) ;) (expression_statement "auStack_1c[2] = 0x15e09;" (assignment_expression "auStack_1c[2] = 0x15e09" (subscript_expression "auStack_1c[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_84 = (void *)xmalloc();" (assignment_expression "local_84 = (void *)xmalloc()" identifier = (cast_expression "(void *)xmalloc()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar2 = FUN_00018ac0();" (assignment_expression "iVar2 = FUN_00018ac0()" identifier = (call_expression "FUN_00018ac0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }" { (expression_statement "dcgettext();" (call_expression "dcgettext()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00017f20();" (call_expression "FUN_00017f20()" identifier (argument_list "()" ( ))) ;) (expression_statement "free(local_84);" (call_expression "free(local_84)" identifier (argument_list "(local_84)" ( identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "local_80 = local_7c;" (assignment_expression "local_80 = local_7c" identifier = identifier) ;) (expression_statement "iVar2 = (**(code **)(param_1[1] + 0xfc))();" (assignment_expression "iVar2 = (**(code **)(param_1[1] + 0xfc))()" identifier = (call_expression "(**(code **)(param_1[1] + 0xfc))()" (parenthesized_expression "(**(code **)(param_1[1] + 0xfc))" ( (pointer_expression "**(code **)(param_1[1] + 0xfc)" * (pointer_expression "*(code **)(param_1[1] + 0xfc)" * (cast_expression "(code **)(param_1[1] + 0xfc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0xfc)" ( (binary_expression "param_1[1] + 0xfc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }" { (labeled_statement "LAB_000160bf:\n    dcgettext();" statement_identifier : (expression_statement "dcgettext();" (call_expression "dcgettext()" identifier (argument_list "()" ( ))) ;)) (expression_statement "puVar6 = &stack0xffffff54;" (assignment_expression "puVar6 = &stack0xffffff54" identifier = (pointer_expression "&stack0xffffff54" & identifier)) ;) (expression_statement "FUN_00017ef0();" (call_expression "FUN_00017ef0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;" statement_identifier : (expression_statement "*(undefined4 *)(puVar6 + -4) = 0x160d5;" (assignment_expression "*(undefined4 *)(puVar6 + -4) = 0x160d5" (pointer_expression "*(undefined4 *)(puVar6 + -4)" * (cast_expression "(undefined4 *)(puVar6 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -4)" ( (binary_expression "puVar6 + -4" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(puVar6 + -0x10) = *piVar4;" (assignment_expression "*(int *)(puVar6 + -0x10) = *piVar4" (pointer_expression "*(int *)(puVar6 + -0x10)" * (cast_expression "(int *)(puVar6 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x160df;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x160df" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pcVar5 = strerror(*(int *)(puVar6 + -0x10));" (assignment_expression "pcVar5 = strerror(*(int *)(puVar6 + -0x10))" identifier = (call_expression "strerror(*(int *)(puVar6 + -0x10))" identifier (argument_list "(*(int *)(puVar6 + -0x10))" ( (pointer_expression "*(int *)(puVar6 + -0x10)" * (cast_expression "(int *)(puVar6 + -0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) )))) ;) (expression_statement "*(char **)(puVar6 + -8) = pcVar5;" (assignment_expression "*(char **)(puVar6 + -8) = pcVar5" (pointer_expression "*(char **)(puVar6 + -8)" * (cast_expression "(char **)(puVar6 + -8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -8)" ( (binary_expression "puVar6 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(char **)(puVar6 + -0xc) = DAT_000212b0;" (assignment_expression "*(char **)(puVar6 + -0xc) = DAT_000212b0" (pointer_expression "*(char **)(puVar6 + -0xc)" * (cast_expression "(char **)(puVar6 + -0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0xc)" ( (binary_expression "puVar6 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar7 = puVar6 + -0x10;" (assignment_expression "puVar7 = puVar6 + -0x10" identifier = (binary_expression "puVar6 + -0x10" identifier + number_literal)) ;) (expression_statement "*(char **)(puVar6 + -0x10) = "%s: %s";" (assignment_expression "*(char **)(puVar6 + -0x10) = "%s: %s"" (pointer_expression "*(char **)(puVar6 + -0x10)" * (cast_expression "(char **)(puVar6 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + -0x10)" ( (binary_expression "puVar6 + -0x10" identifier + number_literal) )))) = (string_literal ""%s: %s"" " string_content ")) ;) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x160f5;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x160f5" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" * (cast_expression "(undefined4 *)(puVar6 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + -0x14)" ( (binary_expression "puVar6 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00017ef0();" (call_expression "FUN_00017ef0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);" statement_identifier : (expression_statement "*(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar7 + -0x10)" * (cast_expression "(undefined4 *)(puVar7 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar7 + 0xa0)" * (pointer_expression "*(undefined4 **)(puVar7 + 0xa0)" * (cast_expression "(undefined4 **)(puVar7 + 0xa0)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + 0xa0)" ( (binary_expression "puVar7 + 0xa0" identifier + number_literal) )))))) ;)) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x16106;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x16106" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "perror(*(char **)(puVar7 + -0x10));" (call_expression "perror(*(char **)(puVar7 + -0x10))" identifier (argument_list "(*(char **)(puVar7 + -0x10))" ( (pointer_expression "*(char **)(puVar7 + -0x10)" * (cast_expression "(char **)(puVar7 + -0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar7 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar7 + -0x10)" * (cast_expression "(undefined4 *)(puVar7 + -0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x10)" ( (binary_expression "puVar7 + -0x10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x16112;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x16112" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" * (cast_expression "(undefined4 *)(puVar7 + -0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + -0x14)" ( (binary_expression "puVar7 + -0x14" identifier + number_literal) )))) = number_literal) ;) (expression_statement "xexit();" (call_expression "xexit()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_8c = local_50;" (assignment_expression "local_8c = local_50" identifier = identifier) ;) (expression_statement "local_88 = local_4c;" (assignment_expression "local_88 = local_4c" identifier = identifier) ;) (if_statement "if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }" if (parenthesized_expression "(DAT_000212a0 != 0)" ( (binary_expression "DAT_000212a0 != 0" identifier != number_literal) )) (compound_statement "{\n    printf("x - %s\n");\n  }" { (expression_statement "printf("x - %s\n");" (call_expression "printf("x - %s\n")" identifier (argument_list "("x - %s\n")" ( (string_literal ""x - %s\n"" " string_content escape_sequence ") ))) ;) })) (expression_statement "puVar6 = auStack_9c;" (assignment_expression "puVar6 = auStack_9c" identifier = identifier) ;) (expression_statement "puVar7 = auStack_9c;" (assignment_expression "puVar7 = auStack_9c" identifier = identifier) ;) (expression_statement "bfd_seek();" (call_expression "bfd_seek()" identifier (argument_list "()" ( ))) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = 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)) ;) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" identifier = number_literal) ;) (if_statement "if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" if (parenthesized_expression "(local_88 == 0 && local_8c == 0)" ( (binary_expression "local_88 == 0 && local_8c == 0" (binary_expression "local_88 == 0" identifier == number_literal) && (binary_expression "local_8c == 0" identifier == number_literal)) )) (compound_statement "{\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }" { (expression_statement "DAT_000212b0 = (char *)*param_1;" (assignment_expression "DAT_000212b0 = (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 = fopen64(DAT_000212b0,"w");" (assignment_expression "__s = fopen64(DAT_000212b0,"w")" identifier = (call_expression "fopen64(DAT_000212b0,"w")" identifier (argument_list "(DAT_000212b0,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (expression_statement "puVar7 = auStack_9c;" (assignment_expression "puVar7 = auStack_9c" identifier = identifier) ;) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) goto LAB_000160f5;" 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_000160f5;" goto statement_identifier ;)) }) (else_clause "else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" else (compound_statement "{\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" { (do_statement "do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));" do (compound_statement "{\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    }" { (expression_statement "__n = local_8c - local_94;" (assignment_expression "__n = local_8c - local_94" identifier = (binary_expression "local_8c - local_94" identifier - identifier)) ;) (expression_statement "iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);" (assignment_expression "iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94)" identifier = (binary_expression "(local_88 - local_90) - (uint)(local_8c < local_94)" (parenthesized_expression "(local_88 - local_90)" ( (binary_expression "local_88 - local_90" identifier - identifier) )) - (call_expression "(uint)(local_8c < local_94)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_8c < local_94)" ( (binary_expression "local_8c < local_94" identifier < identifier) ))))) ;) (if_statement "if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }" if (parenthesized_expression "(iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n))" ( (binary_expression "iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)" (binary_expression "iVar2 != 0" identifier != number_literal) || (binary_expression "(uint)-iVar2 < (uint)(0x2000 < __n)" (binary_expression "(uint)-iVar2" (parenthesized_expression "(uint)" ( identifier )) - identifier) < (call_expression "(uint)(0x2000 < __n)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x2000 < __n)" ( (binary_expression "0x2000 < __n" number_literal < identifier) ))))) )) (compound_statement "{\n        __n = 0x2000;\n        iVar2 = 0;\n      }" { (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" identifier = number_literal) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) })) (expression_statement "lVar9 = bfd_bread();" (assignment_expression "lVar9 = bfd_bread()" identifier = (call_expression "bfd_bread()" identifier (argument_list "()" ( )))) ;) (if_statement "if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;" if (parenthesized_expression "(lVar9 != CONCAT44(iVar2,__n))" ( (binary_expression "lVar9 != CONCAT44(iVar2,__n)" identifier != (call_expression "CONCAT44(iVar2,__n)" identifier (argument_list "(iVar2,__n)" ( identifier , identifier )))) )) (goto_statement "goto LAB_000160bf;" goto statement_identifier ;)) (expression_statement "pFVar1 = DAT_000212ac;" (assignment_expression "pFVar1 = DAT_000212ac" identifier = identifier) ;) (if_statement "if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\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_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }" { (expression_statement "DAT_000212b0 = (char *)*param_1;" (assignment_expression "DAT_000212b0 = (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 = fopen64(DAT_000212b0,"w");" (assignment_expression "__s = fopen64(DAT_000212b0,"w")" identifier = (call_expression "fopen64(DAT_000212b0,"w")" identifier (argument_list "(DAT_000212b0,"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_000160f5;" 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_000160f5;" goto statement_identifier ;)) })) (expression_statement "DAT_000212ac = pFVar1;" (assignment_expression "DAT_000212ac = pFVar1" identifier = identifier) ;) (expression_statement "sVar3 = fwrite(local_84,1,__n,__s);" (assignment_expression "sVar3 = fwrite(local_84,1,__n,__s)" identifier = (call_expression "fwrite(local_84,1,__n,__s)" identifier (argument_list "(local_84,1,__n,__s)" ( identifier , number_literal , identifier , identifier )))) ;) (if_statement "if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;" if (parenthesized_expression "(iVar2 != 0 || sVar3 != __n)" ( (binary_expression "iVar2 != 0 || sVar3 != __n" (binary_expression "iVar2 != 0" identifier != number_literal) || (binary_expression "sVar3 != __n" identifier != identifier)) )) (goto_statement "goto LAB_000160d0;" goto statement_identifier ;)) (expression_statement "bVar8 = CARRY4(local_94,__n);" (assignment_expression "bVar8 = CARRY4(local_94,__n)" identifier = (call_expression "CARRY4(local_94,__n)" identifier (argument_list "(local_94,__n)" ( identifier , identifier )))) ;) (expression_statement "local_94 = local_94 + __n;" (assignment_expression "local_94 = local_94 + __n" identifier = (binary_expression "local_94 + __n" identifier + identifier)) ;) (expression_statement "local_90 = local_90 + iVar2 + (uint)bVar8;" (assignment_expression "local_90 = local_90 + iVar2 + (uint)bVar8" identifier = (binary_expression "local_90 + iVar2 + (uint)bVar8" (binary_expression "local_90 + iVar2" identifier + identifier) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pFVar1 = DAT_000212ac;" (assignment_expression "pFVar1 = DAT_000212ac" identifier = identifier) ;) }) while (parenthesized_expression "(local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c))" ( (binary_expression "local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c)" (binary_expression "local_90 < local_88" identifier < identifier) || (binary_expression "local_90 - local_88 < (uint)(local_94 < local_8c)" (binary_expression "local_90 - local_88" identifier - identifier) < (call_expression "(uint)(local_94 < local_8c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_94 < local_8c)" ( (binary_expression "local_94 < local_8c" identifier < identifier) ))))) )) ;) }))) (expression_statement "DAT_000212ac = pFVar1;" (assignment_expression "DAT_000212ac = pFVar1" identifier = identifier) ;) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" identifier (argument_list "(__s)" ( identifier ))) ;) (expression_statement "DAT_000212ac = (FILE *)0x0;" (assignment_expression "DAT_000212ac = (FILE *)0x0" identifier = (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_000212b0 = (char *)0x0;" (assignment_expression "DAT_000212b0 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "chmod((char *)*param_1,local_6c);" (call_expression "chmod((char *)*param_1,local_6c)" identifier (argument_list "((char *)*param_1,local_6c)" ( (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) , identifier ))) ;) (if_statement "if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }" if (parenthesized_expression "(DAT_00021298 != 0)" ( (binary_expression "DAT_00021298 != 0" identifier != number_literal) )) (compound_statement "{\n    local_3c = local_34;\n    FUN_000175c0();\n  }" { (expression_statement "local_3c = local_34;" (assignment_expression "local_3c = local_34" identifier = identifier) ;) (expression_statement "FUN_000175c0();" (call_expression "FUN_000175c0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(local_84);" (call_expression "free(local_84)" identifier (argument_list "(local_84)" ( 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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (string_literal " string_content ")) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression 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 ") ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (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) ;) (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 ;)) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) (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 (binary_expression IDENT != LIT) || (binary_expression IDENT != IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT < IDENT) || (binary_expression (binary_expression IDENT - IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (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 ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00015e00(undefined4 *param_1)\n\n{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00015e00(undefined4 *param_1)" (identifier "FUN_00015e00") (parameter_list "(undefined4 *param_1)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  FILE *pFVar1;\n  int iVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  FILE *__s;\n  uint __n;\n  bool bVar8;\n  longlong lVar9;\n  undefined4 auStackY_d0 [9];\n  undefined1 auStack_9c [8];\n  uint local_94;\n  uint local_90;\n  uint local_8c;\n  uint local_88;\n  void *local_84;\n  undefined1 *local_80;\n  undefined1 local_7c [16];\n  __mode_t local_6c;\n  uint local_50;\n  uint local_4c;\n  undefined4 local_3c;\n  undefined4 local_34;\n  undefined4 auStack_1c [3];\n  \n  auStack_1c[2] = 0x15e09;\n  local_84 = (void *)xmalloc();\n  iVar2 = FUN_00018ac0();\n  if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }\n  local_80 = local_7c;\n  iVar2 = (**(code **)(param_1[1] + 0xfc))();\n  if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }\n  local_8c = local_50;\n  local_88 = local_4c;\n  if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }\n  puVar6 = auStack_9c;\n  puVar7 = auStack_9c;\n  bfd_seek();\n  local_94 = 0;\n  __s = (FILE *)0x0;\n  local_90 = 0;\n  if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }\n  DAT_000212ac = pFVar1;\n  fclose(__s);\n  DAT_000212ac = (FILE *)0x0;\n  DAT_000212b0 = (char *)0x0;\n  chmod((char *)*param_1,local_6c);\n  if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }\n  free(local_84);\n  return;\n}" ({ "{") (declaration "FILE *pFVar1;" (type_identifier "FILE") (pointer_declarator "*pFVar1" (* "*") (identifier "pFVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "size_t sVar3;" (primitive_type "size_t") (identifier "sVar3") (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "FILE *__s;" (type_identifier "FILE") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "uint __n;" (type_identifier "uint") (identifier "__n") (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "longlong lVar9;" (type_identifier "longlong") (identifier "lVar9") (; ";")) (declaration "undefined4 auStackY_d0 [9];" (type_identifier "undefined4") (array_declarator "auStackY_d0 [9]" (identifier "auStackY_d0") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "undefined1 auStack_9c [8];" (type_identifier "undefined1") (array_declarator "auStack_9c [8]" (identifier "auStack_9c") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "uint local_94;" (type_identifier "uint") (identifier "local_94") (; ";")) (declaration "uint local_90;" (type_identifier "uint") (identifier "local_90") (; ";")) (declaration "uint local_8c;" (type_identifier "uint") (identifier "local_8c") (; ";")) (declaration "uint local_88;" (type_identifier "uint") (identifier "local_88") (; ";")) (declaration "void *local_84;" (primitive_type "void") (pointer_declarator "*local_84" (* "*") (identifier "local_84")) (; ";")) (declaration "undefined1 *local_80;" (type_identifier "undefined1") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "undefined1 local_7c [16];" (type_identifier "undefined1") (array_declarator "local_7c [16]" (identifier "local_7c") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "__mode_t local_6c;" (type_identifier "__mode_t") (identifier "local_6c") (; ";")) (declaration "uint local_50;" (type_identifier "uint") (identifier "local_50") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 auStack_1c [3];" (type_identifier "undefined4") (array_declarator "auStack_1c [3]" (identifier "auStack_1c") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "auStack_1c[2] = 0x15e09;" (assignment_expression "auStack_1c[2] = 0x15e09" (subscript_expression "auStack_1c[2]" (identifier "auStack_1c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0x15e09")) (; ";")) (expression_statement "local_84 = (void *)xmalloc();" (assignment_expression "local_84 = (void *)xmalloc()" (identifier "local_84") (= "=") (cast_expression "(void *)xmalloc()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc()" (identifier "xmalloc") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar2 = FUN_00018ac0();" (assignment_expression "iVar2 = FUN_00018ac0()" (identifier "iVar2") (= "=") (call_expression "FUN_00018ac0()" (identifier "FUN_00018ac0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    dcgettext();\n    FUN_00017f20();\n    free(local_84);\n    return;\n  }" ({ "{") (expression_statement "dcgettext();" (call_expression "dcgettext()" (identifier "dcgettext") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00017f20();" (call_expression "FUN_00017f20()" (identifier "FUN_00017f20") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "free(local_84);" (call_expression "free(local_84)" (identifier "free") (argument_list "(local_84)" (( "(") (identifier "local_84") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_80 = local_7c;" (assignment_expression "local_80 = local_7c" (identifier "local_80") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "iVar2 = (**(code **)(param_1[1] + 0xfc))();" (assignment_expression "iVar2 = (**(code **)(param_1[1] + 0xfc))()" (identifier "iVar2") (= "=") (call_expression "(**(code **)(param_1[1] + 0xfc))()" (parenthesized_expression "(**(code **)(param_1[1] + 0xfc))" (( "(") (pointer_expression "**(code **)(param_1[1] + 0xfc)" (* "*") (pointer_expression "*(code **)(param_1[1] + 0xfc)" (* "*") (cast_expression "(code **)(param_1[1] + 0xfc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 0xfc)" (( "(") (binary_expression "param_1[1] + 0xfc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xfc")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000160bf:\n    dcgettext();\n    puVar6 = &stack0xffffff54;\n    FUN_00017ef0();\nLAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;\n    piVar4 = __errno_location();\n    *(int *)(puVar6 + -0x10) = *piVar4;\n    *(undefined4 *)(puVar6 + -0x14) = 0x160df;\n    pcVar5 = strerror(*(int *)(puVar6 + -0x10));\n    *(char **)(puVar6 + -8) = pcVar5;\n    *(char **)(puVar6 + -0xc) = DAT_000212b0;\n    puVar7 = puVar6 + -0x10;\n    *(char **)(puVar6 + -0x10) = "%s: %s";\n    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;\n    FUN_00017ef0();\nLAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);\n    *(undefined4 *)(puVar7 + -0x14) = 0x16106;\n    perror(*(char **)(puVar7 + -0x10));\n    *(undefined4 *)(puVar7 + -0x10) = 1;\n                    \n    *(undefined4 *)(puVar7 + -0x14) = 0x16112;\n    xexit();\n  }" ({ "{") (labeled_statement "LAB_000160bf:\n    dcgettext();" (statement_identifier "LAB_000160bf") (: ":") (expression_statement "dcgettext();" (call_expression "dcgettext()" (identifier "dcgettext") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "puVar6 = &stack0xffffff54;" (assignment_expression "puVar6 = &stack0xffffff54" (identifier "puVar6") (= "=") (pointer_expression "&stack0xffffff54" (& "&") (identifier "stack0xffffff54"))) (; ";")) (expression_statement "FUN_00017ef0();" (call_expression "FUN_00017ef0()" (identifier "FUN_00017ef0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000160d0:\n    *(undefined4 *)(puVar6 + -4) = 0x160d5;" (statement_identifier "LAB_000160d0") (: ":") (expression_statement "*(undefined4 *)(puVar6 + -4) = 0x160d5;" (assignment_expression "*(undefined4 *)(puVar6 + -4) = 0x160d5" (pointer_expression "*(undefined4 *)(puVar6 + -4)" (* "*") (cast_expression "(undefined4 *)(puVar6 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -4)" (( "(") (binary_expression "puVar6 + -4" (identifier "puVar6") (+ "+") (number_literal "-4")) () ")")))) (= "=") (number_literal "0x160d5")) (; ";"))) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(puVar6 + -0x10) = *piVar4;" (assignment_expression "*(int *)(puVar6 + -0x10) = *piVar4" (pointer_expression "*(int *)(puVar6 + -0x10)" (* "*") (cast_expression "(int *)(puVar6 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -0x10)" (( "(") (binary_expression "puVar6 + -0x10" (identifier "puVar6") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x160df;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x160df" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -0x14)" (( "(") (binary_expression "puVar6 + -0x14" (identifier "puVar6") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x160df")) (; ";")) (expression_statement "pcVar5 = strerror(*(int *)(puVar6 + -0x10));" (assignment_expression "pcVar5 = strerror(*(int *)(puVar6 + -0x10))" (identifier "pcVar5") (= "=") (call_expression "strerror(*(int *)(puVar6 + -0x10))" (identifier "strerror") (argument_list "(*(int *)(puVar6 + -0x10))" (( "(") (pointer_expression "*(int *)(puVar6 + -0x10)" (* "*") (cast_expression "(int *)(puVar6 + -0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -0x10)" (( "(") (binary_expression "puVar6 + -0x10" (identifier "puVar6") (+ "+") (number_literal "-0x10")) () ")")))) () ")")))) (; ";")) (expression_statement "*(char **)(puVar6 + -8) = pcVar5;" (assignment_expression "*(char **)(puVar6 + -8) = pcVar5" (pointer_expression "*(char **)(puVar6 + -8)" (* "*") (cast_expression "(char **)(puVar6 + -8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + -8)" (( "(") (binary_expression "puVar6 + -8" (identifier "puVar6") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "pcVar5")) (; ";")) (expression_statement "*(char **)(puVar6 + -0xc) = DAT_000212b0;" (assignment_expression "*(char **)(puVar6 + -0xc) = DAT_000212b0" (pointer_expression "*(char **)(puVar6 + -0xc)" (* "*") (cast_expression "(char **)(puVar6 + -0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + -0xc)" (( "(") (binary_expression "puVar6 + -0xc" (identifier "puVar6") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "DAT_000212b0")) (; ";")) (expression_statement "puVar7 = puVar6 + -0x10;" (assignment_expression "puVar7 = puVar6 + -0x10" (identifier "puVar7") (= "=") (binary_expression "puVar6 + -0x10" (identifier "puVar6") (+ "+") (number_literal "-0x10"))) (; ";")) (expression_statement "*(char **)(puVar6 + -0x10) = "%s: %s";" (assignment_expression "*(char **)(puVar6 + -0x10) = "%s: %s"" (pointer_expression "*(char **)(puVar6 + -0x10)" (* "*") (cast_expression "(char **)(puVar6 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + -0x10)" (( "(") (binary_expression "puVar6 + -0x10" (identifier "puVar6") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (string_literal ""%s: %s"" (" """) (string_content "%s: %s") (" """))) (; ";")) (expression_statement "*(undefined4 *)(puVar6 + -0x14) = 0x160f5;" (assignment_expression "*(undefined4 *)(puVar6 + -0x14) = 0x160f5" (pointer_expression "*(undefined4 *)(puVar6 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar6 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + -0x14)" (( "(") (binary_expression "puVar6 + -0x14" (identifier "puVar6") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x160f5")) (; ";")) (expression_statement "FUN_00017ef0();" (call_expression "FUN_00017ef0()" (identifier "FUN_00017ef0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000160f5:\n    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);" (statement_identifier "LAB_000160f5") (: ":") (expression_statement "*(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);" (assignment_expression "*(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0)" (pointer_expression "*(undefined4 *)(puVar7 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (pointer_expression "**(undefined4 **)(puVar7 + 0xa0)" (* "*") (pointer_expression "*(undefined4 **)(puVar7 + 0xa0)" (* "*") (cast_expression "(undefined4 **)(puVar7 + 0xa0)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7 + 0xa0)" (( "(") (binary_expression "puVar7 + 0xa0" (identifier "puVar7") (+ "+") (number_literal "0xa0")) () ")")))))) (; ";"))) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x16106;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x16106" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x14)" (( "(") (binary_expression "puVar7 + -0x14" (identifier "puVar7") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x16106")) (; ";")) (expression_statement "perror(*(char **)(puVar7 + -0x10));" (call_expression "perror(*(char **)(puVar7 + -0x10))" (identifier "perror") (argument_list "(*(char **)(puVar7 + -0x10))" (( "(") (pointer_expression "*(char **)(puVar7 + -0x10)" (* "*") (cast_expression "(char **)(puVar7 + -0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -0x10) = 1;" (assignment_expression "*(undefined4 *)(puVar7 + -0x10) = 1" (pointer_expression "*(undefined4 *)(puVar7 + -0x10)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x10)" (( "(") (binary_expression "puVar7 + -0x10" (identifier "puVar7") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar7 + -0x14) = 0x16112;" (assignment_expression "*(undefined4 *)(puVar7 + -0x14) = 0x16112" (pointer_expression "*(undefined4 *)(puVar7 + -0x14)" (* "*") (cast_expression "(undefined4 *)(puVar7 + -0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + -0x14)" (( "(") (binary_expression "puVar7 + -0x14" (identifier "puVar7") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (number_literal "0x16112")) (; ";")) (expression_statement "xexit();" (call_expression "xexit()" (identifier "xexit") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_8c = local_50;" (assignment_expression "local_8c = local_50" (identifier "local_8c") (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_88 = local_4c;" (assignment_expression "local_88 = local_4c" (identifier "local_88") (= "=") (identifier "local_4c")) (; ";")) (if_statement "if (DAT_000212a0 != 0) {\n    printf("x - %s\n");\n  }" (if "if") (parenthesized_expression "(DAT_000212a0 != 0)" (( "(") (binary_expression "DAT_000212a0 != 0" (identifier "DAT_000212a0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    printf("x - %s\n");\n  }" ({ "{") (expression_statement "printf("x - %s\n");" (call_expression "printf("x - %s\n")" (identifier "printf") (argument_list "("x - %s\n")" (( "(") (string_literal ""x - %s\n"" (" """) (string_content "x - %s") (escape_sequence "\n") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar6 = auStack_9c;" (assignment_expression "puVar6 = auStack_9c" (identifier "puVar6") (= "=") (identifier "auStack_9c")) (; ";")) (expression_statement "puVar7 = auStack_9c;" (assignment_expression "puVar7 = auStack_9c" (identifier "puVar7") (= "=") (identifier "auStack_9c")) (; ";")) (expression_statement "bfd_seek();" (call_expression "bfd_seek()" (identifier "bfd_seek") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (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"))) (; ";")) (expression_statement "local_90 = 0;" (assignment_expression "local_90 = 0" (identifier "local_90") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_88 == 0 && local_8c == 0) {\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }\n  else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" (if "if") (parenthesized_expression "(local_88 == 0 && local_8c == 0)" (( "(") (binary_expression "local_88 == 0 && local_8c == 0" (binary_expression "local_88 == 0" (identifier "local_88") (== "==") (number_literal "0")) (&& "&&") (binary_expression "local_8c == 0" (identifier "local_8c") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n    DAT_000212b0 = (char *)*param_1;\n    __s = fopen64(DAT_000212b0,"w");\n    puVar7 = auStack_9c;\n    pFVar1 = __s;\n    if (__s == (FILE *)0x0) goto LAB_000160f5;\n  }" ({ "{") (expression_statement "DAT_000212b0 = (char *)*param_1;" (assignment_expression "DAT_000212b0 = (char *)*param_1" (identifier "DAT_000212b0") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "__s = fopen64(DAT_000212b0,"w");" (assignment_expression "__s = fopen64(DAT_000212b0,"w")" (identifier "__s") (= "=") (call_expression "fopen64(DAT_000212b0,"w")" (identifier "fopen64") (argument_list "(DAT_000212b0,"w")" (( "(") (identifier "DAT_000212b0") (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (expression_statement "puVar7 = auStack_9c;" (assignment_expression "puVar7 = auStack_9c" (identifier "puVar7") (= "=") (identifier "auStack_9c")) (; ";")) (expression_statement "pFVar1 = __s;" (assignment_expression "pFVar1 = __s" (identifier "pFVar1") (= "=") (identifier "__s")) (; ";")) (if_statement "if (__s == (FILE *)0x0) goto LAB_000160f5;" (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_000160f5;" (goto "goto") (statement_identifier "LAB_000160f5") (; ";"))) (} "}")) (else_clause "else {\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" (else "else") (compound_statement "{\n    do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));\n  }" ({ "{") (do_statement "do {\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));" (do "do") (compound_statement "{\n      __n = local_8c - local_94;\n      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);\n      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }\n      lVar9 = bfd_bread();\n      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;\n      pFVar1 = DAT_000212ac;\n      if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }\n      DAT_000212ac = pFVar1;\n      sVar3 = fwrite(local_84,1,__n,__s);\n      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;\n      bVar8 = CARRY4(local_94,__n);\n      local_94 = local_94 + __n;\n      local_90 = local_90 + iVar2 + (uint)bVar8;\n      pFVar1 = DAT_000212ac;\n    }" ({ "{") (expression_statement "__n = local_8c - local_94;" (assignment_expression "__n = local_8c - local_94" (identifier "__n") (= "=") (binary_expression "local_8c - local_94" (identifier "local_8c") (- "-") (identifier "local_94"))) (; ";")) (expression_statement "iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);" (assignment_expression "iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94)" (identifier "iVar2") (= "=") (binary_expression "(local_88 - local_90) - (uint)(local_8c < local_94)" (parenthesized_expression "(local_88 - local_90)" (( "(") (binary_expression "local_88 - local_90" (identifier "local_88") (- "-") (identifier "local_90")) () ")")) (- "-") (call_expression "(uint)(local_8c < local_94)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_8c < local_94)" (( "(") (binary_expression "local_8c < local_94" (identifier "local_8c") (< "<") (identifier "local_94")) () ")"))))) (; ";")) (if_statement "if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {\n        __n = 0x2000;\n        iVar2 = 0;\n      }" (if "if") (parenthesized_expression "(iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n))" (( "(") (binary_expression "iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)" (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uint)-iVar2 < (uint)(0x2000 < __n)" (binary_expression "(uint)-iVar2" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar2")) (< "<") (call_expression "(uint)(0x2000 < __n)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x2000 < __n)" (( "(") (binary_expression "0x2000 < __n" (number_literal "0x2000") (< "<") (identifier "__n")) () ")"))))) () ")")) (compound_statement "{\n        __n = 0x2000;\n        iVar2 = 0;\n      }" ({ "{") (expression_statement "__n = 0x2000;" (assignment_expression "__n = 0x2000" (identifier "__n") (= "=") (number_literal "0x2000")) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "lVar9 = bfd_bread();" (assignment_expression "lVar9 = bfd_bread()" (identifier "lVar9") (= "=") (call_expression "bfd_bread()" (identifier "bfd_bread") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;" (if "if") (parenthesized_expression "(lVar9 != CONCAT44(iVar2,__n))" (( "(") (binary_expression "lVar9 != CONCAT44(iVar2,__n)" (identifier "lVar9") (!= "!=") (call_expression "CONCAT44(iVar2,__n)" (identifier "CONCAT44") (argument_list "(iVar2,__n)" (( "(") (identifier "iVar2") (, ",") (identifier "__n") () ")")))) () ")")) (goto_statement "goto LAB_000160bf;" (goto "goto") (statement_identifier "LAB_000160bf") (; ";"))) (expression_statement "pFVar1 = DAT_000212ac;" (assignment_expression "pFVar1 = DAT_000212ac" (identifier "pFVar1") (= "=") (identifier "DAT_000212ac")) (; ";")) (if_statement "if (__s == (FILE *)0x0) {\n        DAT_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\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_000212b0 = (char *)*param_1;\n        __s = fopen64(DAT_000212b0,"w");\n        pFVar1 = __s;\n        if (__s == (FILE *)0x0) goto LAB_000160f5;\n      }" ({ "{") (expression_statement "DAT_000212b0 = (char *)*param_1;" (assignment_expression "DAT_000212b0 = (char *)*param_1" (identifier "DAT_000212b0") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "__s = fopen64(DAT_000212b0,"w");" (assignment_expression "__s = fopen64(DAT_000212b0,"w")" (identifier "__s") (= "=") (call_expression "fopen64(DAT_000212b0,"w")" (identifier "fopen64") (argument_list "(DAT_000212b0,"w")" (( "(") (identifier "DAT_000212b0") (, ",") (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_000160f5;" (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_000160f5;" (goto "goto") (statement_identifier "LAB_000160f5") (; ";"))) (} "}"))) (expression_statement "DAT_000212ac = pFVar1;" (assignment_expression "DAT_000212ac = pFVar1" (identifier "DAT_000212ac") (= "=") (identifier "pFVar1")) (; ";")) (expression_statement "sVar3 = fwrite(local_84,1,__n,__s);" (assignment_expression "sVar3 = fwrite(local_84,1,__n,__s)" (identifier "sVar3") (= "=") (call_expression "fwrite(local_84,1,__n,__s)" (identifier "fwrite") (argument_list "(local_84,1,__n,__s)" (( "(") (identifier "local_84") (, ",") (number_literal "1") (, ",") (identifier "__n") (, ",") (identifier "__s") () ")")))) (; ";")) (if_statement "if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;" (if "if") (parenthesized_expression "(iVar2 != 0 || sVar3 != __n)" (( "(") (binary_expression "iVar2 != 0 || sVar3 != __n" (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "sVar3 != __n" (identifier "sVar3") (!= "!=") (identifier "__n"))) () ")")) (goto_statement "goto LAB_000160d0;" (goto "goto") (statement_identifier "LAB_000160d0") (; ";"))) (expression_statement "bVar8 = CARRY4(local_94,__n);" (assignment_expression "bVar8 = CARRY4(local_94,__n)" (identifier "bVar8") (= "=") (call_expression "CARRY4(local_94,__n)" (identifier "CARRY4") (argument_list "(local_94,__n)" (( "(") (identifier "local_94") (, ",") (identifier "__n") () ")")))) (; ";")) (expression_statement "local_94 = local_94 + __n;" (assignment_expression "local_94 = local_94 + __n" (identifier "local_94") (= "=") (binary_expression "local_94 + __n" (identifier "local_94") (+ "+") (identifier "__n"))) (; ";")) (expression_statement "local_90 = local_90 + iVar2 + (uint)bVar8;" (assignment_expression "local_90 = local_90 + iVar2 + (uint)bVar8" (identifier "local_90") (= "=") (binary_expression "local_90 + iVar2 + (uint)bVar8" (binary_expression "local_90 + iVar2" (identifier "local_90") (+ "+") (identifier "iVar2")) (+ "+") (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")))) (; ";")) (expression_statement "pFVar1 = DAT_000212ac;" (assignment_expression "pFVar1 = DAT_000212ac" (identifier "pFVar1") (= "=") (identifier "DAT_000212ac")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c))" (( "(") (binary_expression "local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c)" (binary_expression "local_90 < local_88" (identifier "local_90") (< "<") (identifier "local_88")) (|| "||") (binary_expression "local_90 - local_88 < (uint)(local_94 < local_8c)" (binary_expression "local_90 - local_88" (identifier "local_90") (- "-") (identifier "local_88")) (< "<") (call_expression "(uint)(local_94 < local_8c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_94 < local_8c)" (( "(") (binary_expression "local_94 < local_8c" (identifier "local_94") (< "<") (identifier "local_8c")) () ")"))))) () ")")) (; ";")) (} "}")))) (expression_statement "DAT_000212ac = pFVar1;" (assignment_expression "DAT_000212ac = pFVar1" (identifier "DAT_000212ac") (= "=") (identifier "pFVar1")) (; ";")) (expression_statement "fclose(__s);" (call_expression "fclose(__s)" (identifier "fclose") (argument_list "(__s)" (( "(") (identifier "__s") () ")"))) (; ";")) (expression_statement "DAT_000212ac = (FILE *)0x0;" (assignment_expression "DAT_000212ac = (FILE *)0x0" (identifier "DAT_000212ac") (= "=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "DAT_000212b0 = (char *)0x0;" (assignment_expression "DAT_000212b0 = (char *)0x0" (identifier "DAT_000212b0") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "chmod((char *)*param_1,local_6c);" (call_expression "chmod((char *)*param_1,local_6c)" (identifier "chmod") (argument_list "((char *)*param_1,local_6c)" (( "(") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (, ",") (identifier "local_6c") () ")"))) (; ";")) (if_statement "if (DAT_00021298 != 0) {\n    local_3c = local_34;\n    FUN_000175c0();\n  }" (if "if") (parenthesized_expression "(DAT_00021298 != 0)" (( "(") (binary_expression "DAT_00021298 != 0" (identifier "DAT_00021298") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_3c = local_34;\n    FUN_000175c0();\n  }" ({ "{") (expression_statement "local_3c = local_34;" (assignment_expression "local_3c = local_34" (identifier "local_3c") (= "=") (identifier "local_34")) (; ";")) (expression_statement "FUN_000175c0();" (call_expression "FUN_000175c0()" (identifier "FUN_000175c0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "free(local_84);" (call_expression "free(local_84)" (identifier "free") (argument_list "(local_84)" (( "(") (identifier "local_84") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

void function_1(type_1 *abfd)

{
  type_2 *pFVar1;
  void *__ptr;
  type_3 var_3;
  int var_7;
  size_t var_23;
  char *pcVar5;
  int *piVar6;
  char *pcVar7;
  type_2 *var_13;
  type_4 var_18;
  bool bVar8;
  type_5 var_20;
  type_1 *pbVar10;
  type_4 var_16;
  type_4 var_17;
  type_6 buf;
  
  __ptr = (void *)var_1(0x2000);
  var_3 = var_2(abfd->filename);
  if (var_3 == 0) {
    pcVar7 = abfd->filename;
    pcVar5 = (char *)var_4(0,"illegal pathname found in archive member: %s",5);
    var_5(pcVar5,pcVar7);
    var_6(__ptr);
    return;
  }
  var_7 = (*abfd->xvec->_bfd_stat_arch_elt)(abfd,&buf);
  if (var_7 != 0) {
    pcVar5 = abfd->filename;
    pcVar7 = "internal stat error on %s";
LAB_000160bf:
    pcVar7 = (char *)var_4(0,pcVar7,5,abfd);
                    /* WARNING: Subroutine does not return */
    var_8(pcVar7,pcVar5);
  }
  if (var_9 != 0) {
    var_10("x - %s\n",abfd->filename);
  }
  var_11(abfd,0,0,0);
  var_16 = 0;
  var_13 = (type_2 *)0x0;
  var_17 = 0;
  if (buf.st_size._4_4_ == 0 && (type_4)buf.st_size == 0) {
    output_filename = abfd->filename;
    var_13 = var_12(output_filename,"w");
    pFVar1 = var_13;
    if (var_13 == (type_2 *)0x0) {
LAB_000160f5:
      var_14(abfd->filename);
                    /* WARNING: Subroutine does not return */
      var_15(1);
    }
  }
  else {
    do {
      var_18 = (type_4)buf.st_size - var_16;
      var_7 = (buf.st_size._4_4_ - var_17) - (type_4)((type_4)buf.st_size < var_16);
      if (var_7 != 0 || (type_4)-var_7 < (type_4)(0x2000 < var_18)) {
        var_18 = 0x2000;
        var_7 = 0;
      }
      pbVar10 = abfd;
      var_20 = var_19(__ptr,var_18,var_7,abfd);
      if (var_20 != var_21(var_7,var_18)) {
        pcVar5 = abfd->my_archive->filename;
        pcVar7 = "%s is not a valid archive";
        abfd = pbVar10;
        goto LAB_000160bf;
      }
      pFVar1 = (type_2 *)output_file;
      if (var_13 == (type_2 *)0x0) {
        output_filename = abfd->filename;
        var_13 = var_12(output_filename,"w");
        pFVar1 = var_13;
        if (var_13 == (type_2 *)0x0) goto LAB_000160f5;
      }
      output_file = (type_2 *)pFVar1;
      var_23 = var_22(__ptr,1,var_18,var_13);
      if (var_7 != 0 || var_23 != var_18) {
        piVar6 = var_24();
        pcVar7 = var_25(*piVar6);
                    /* WARNING: Subroutine does not return */
        var_8("%s: %s",output_filename,pcVar7);
      }
      bVar8 = var_26(var_16,var_18);
      var_16 = var_16 + var_18;
      var_17 = var_17 + var_7 + (type_4)bVar8;
      pFVar1 = (type_2 *)output_file;
    } while (var_17 < buf.st_size._4_4_ ||
             var_17 - buf.st_size._4_4_ < (type_4)(var_16 < (type_4)buf.st_size));
  }
  output_file = (type_2 *)pFVar1;
  var_27(var_13);
  output_file = (type_2 *)0x0;
  output_filename = (char *)0x0;
  var_28(abfd->filename,buf.st_mode);
  if (var_29 != 0) {
    buf.st_atim.tv_sec = buf.st_mtim.tv_sec;
    var_30(abfd->filename,&buf);
  }
  var_6(__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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (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)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (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))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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))) (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)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (identifier))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) consequence: (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: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))))

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

void MASKED(undefined4 *param_1)

{
  FILE *pFVar1;
  int iVar2;
  size_t sVar3;
  int *piVar4;
  char *pcVar5;
  undefined1 *puVar6;
  undefined1 *puVar7;
  FILE *__s;
  uint __n;
  bool bVar8;
  longlong lVar9;
  undefined4 auStackY_d0 [9];
  undefined1 auStack_9c [8];
  uint local_94;
  uint local_90;
  uint local_8c;
  uint local_88;
  void *local_84;
  undefined1 *local_80;
  undefined1 local_7c [16];
  __mode_t local_6c;
  uint local_50;
  uint local_4c;
  undefined4 local_3c;
  undefined4 local_34;
  undefined4 auStack_1c [3];
  
  auStack_1c[2] = 0x15e09;
  local_84 = (void *)xmalloc();
  iVar2 = FUN_00018ac0();
  if (iVar2 == 0) {
    dcgettext();
    FUN_00017f20();
    free(local_84);
    return;
  }
  local_80 = local_7c;
  iVar2 = (**(code **)(param_1[1] + 0xfc))();
  if (iVar2 != 0) {
LAB_000160bf:
    dcgettext();
    puVar6 = &stack0xffffff54;
    FUN_00017ef0();
LAB_000160d0:
    *(undefined4 *)(puVar6 + -4) = 0x160d5;
    piVar4 = __errno_location();
    *(int *)(puVar6 + -0x10) = *piVar4;
    *(undefined4 *)(puVar6 + -0x14) = 0x160df;
    pcVar5 = strerror(*(int *)(puVar6 + -0x10));
    *(char **)(puVar6 + -8) = pcVar5;
    *(char **)(puVar6 + -0xc) = DAT_000212b0;
    puVar7 = puVar6 + -0x10;
    *(char **)(puVar6 + -0x10) = "%s: %s";
    *(undefined4 *)(puVar6 + -0x14) = 0x160f5;
    FUN_00017ef0();
LAB_000160f5:
    *(undefined4 *)(puVar7 + -0x10) = **(undefined4 **)(puVar7 + 0xa0);
    *(undefined4 *)(puVar7 + -0x14) = 0x16106;
    perror(*(char **)(puVar7 + -0x10));
    *(undefined4 *)(puVar7 + -0x10) = 1;
                    /* WARNING: Subroutine does not return */
    *(undefined4 *)(puVar7 + -0x14) = 0x16112;
    xexit();
  }
  local_8c = local_50;
  local_88 = local_4c;
  if (DAT_000212a0 != 0) {
    printf("x - %s\n");
  }
  puVar6 = auStack_9c;
  puVar7 = auStack_9c;
  bfd_seek();
  local_94 = 0;
  __s = (FILE *)0x0;
  local_90 = 0;
  if (local_88 == 0 && local_8c == 0) {
    DAT_000212b0 = (char *)*param_1;
    __s = fopen64(DAT_000212b0,"w");
    puVar7 = auStack_9c;
    pFVar1 = __s;
    if (__s == (FILE *)0x0) goto LAB_000160f5;
  }
  else {
    do {
      __n = local_8c - local_94;
      iVar2 = (local_88 - local_90) - (uint)(local_8c < local_94);
      if (iVar2 != 0 || (uint)-iVar2 < (uint)(0x2000 < __n)) {
        __n = 0x2000;
        iVar2 = 0;
      }
      lVar9 = bfd_bread();
      if (lVar9 != CONCAT44(iVar2,__n)) goto LAB_000160bf;
      pFVar1 = DAT_000212ac;
      if (__s == (FILE *)0x0) {
        DAT_000212b0 = (char *)*param_1;
        __s = fopen64(DAT_000212b0,"w");
        pFVar1 = __s;
        if (__s == (FILE *)0x0) goto LAB_000160f5;
      }
      DAT_000212ac = pFVar1;
      sVar3 = fwrite(local_84,1,__n,__s);
      if (iVar2 != 0 || sVar3 != __n) goto LAB_000160d0;
      bVar8 = CARRY4(local_94,__n);
      local_94 = local_94 + __n;
      local_90 = local_90 + iVar2 + (uint)bVar8;
      pFVar1 = DAT_000212ac;
    } while (local_90 < local_88 || local_90 - local_88 < (uint)(local_94 < local_8c));
  }
  DAT_000212ac = pFVar1;
  fclose(__s);
  DAT_000212ac = (FILE *)0x0;
  DAT_000212b0 = (char *)0x0;
  chmod((char *)*param_1,local_6c);
  if (DAT_00021298 != 0) {
    local_3c = local_34;
    FUN_000175c0();
  }
  free(local_84);
  return;
}

