
/* DWARF original prototype: void replacement_file(Plugin_recorder * this, char * name, bool is_lib)
    */

void __thiscall
gold::Plugin_recorder::replacement_file(Plugin_recorder *this,char *name,bool is_lib)

{
  _Alloc_hider __file;
  int iVar1;
  int __fd;
  char *__s;
  size_t sVar2;
  size_t sVar3;
  int *piVar4;
  char *pcVar5;
  char *pcVar6;
  char counter [10];
  string outname;
  
  fprintf((FILE *)this->logfile_,"REPLACEMENT: %s",name);
  if (is_lib) {
    fwrite("(lib)",1,5,(FILE *)this->logfile_);
    goto LAB_0024e02a;
  }
  __s = lbasename(name);
  snprintf(counter,10,"%05d",(ulong)this->file_count_);
  pcVar5 = this->tempdir_;
  outname._M_dataplus._M_p = (pointer)&outname.field_2;
  this->file_count_ = this->file_count_ + 1;
  pcVar6 = (char *)0xffffffffffffffff;
  if (pcVar5 != (char *)0x0) {
    sVar2 = strlen(pcVar5);
    pcVar6 = pcVar5 + sVar2;
  }
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&outname,pcVar5,pcVar6);
  if (outname._M_string_length == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    std::__throw_length_error("basic_string::append");
  }
                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */
  std::string::_M_append((string *)&outname,"/",1);
  sVar2 = strlen(counter);
  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {
                    /* WARNING: Subroutine does not return */
    std::__throw_length_error("basic_string::append");
  }
  std::string::_M_append((string *)&outname,counter,sVar2);
  if (outname._M_string_length == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    std::__throw_length_error("basic_string::append");
  }
  std::string::_M_append((string *)&outname,"-",1);
  sVar2 = strlen(__s);
  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {
                    /* WARNING: Subroutine does not return */
    std::__throw_length_error("basic_string::append");
  }
  std::string::_M_append((string *)&outname,__s,sVar2);
  __file = outname._M_dataplus;
  iVar1 = link(name,outname._M_dataplus._M_p);
  if (iVar1 == 0) {
LAB_0024e1f9:
    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);
  }
  else {
    iVar1 = open64(name,0);
    if (iVar1 < 0) {
      piVar4 = __errno_location();
      pcVar6 = strerror(*piVar4);
      pcVar5 = (char *)gettext("%s: can\'t open (%s)");
      gold_warning(pcVar5,name,pcVar6);
    }
    else {
      __fd = open64(__file._M_p,0x241,0x180);
      if (-1 < __fd) {
        do {
          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);
          if ((long)sVar2 < 1) goto LAB_0024e1e8;
          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);
        } while (sVar2 == sVar3);
        piVar4 = __errno_location();
        pcVar6 = strerror(*piVar4);
        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");
        gold_warning(pcVar5,name,pcVar6);
LAB_0024e1e8:
        close(iVar1);
        close(__fd);
        goto LAB_0024e1f9;
      }
      piVar4 = __errno_location();
      pcVar6 = strerror(*piVar4);
      pcVar5 = (char *)gettext("%s: can\'t create (%s)");
      gold_warning(pcVar5,__file._M_p,pcVar6);
      close(iVar1);
    }
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)outname._M_dataplus._M_p != &outname.field_2) {
    operator_delete(outname._M_dataplus._M_p);
  }
LAB_0024e02a:
  fputc(10,(FILE *)this->logfile_);
  return;
}



void FUN_0024dfe0(uint *param_1,char *param_2,char param_3)

{
  int iVar1;
  int __fd;
  char *__s;
  size_t sVar2;
  size_t sVar3;
  int *piVar4;
  char *pcVar5;
  undefined8 uVar6;
  char *pcVar7;
  char local_62 [10];
  char *local_58;
  long local_50;
  char local_48 [24];
  
  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);
  if (param_3 != '\0') {
    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));
    goto LAB_0024e02a;
  }
  __s = (char *)FUN_002ef830(param_2);
  snprintf(local_62,10,"%05d",(ulong)*param_1);
  pcVar5 = *(char **)(param_1 + 2);
  local_58 = local_48;
  *param_1 = *param_1 + 1;
  pcVar7 = (char *)0xffffffffffffffff;
  if (pcVar5 != (char *)0x0) {
    sVar2 = strlen(pcVar5);
    pcVar7 = pcVar5 + sVar2;
  }
  FUN_00174550(&local_58,pcVar5,pcVar7);
  if (local_50 == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */
  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);
  sVar2 = strlen(local_62);
  if (0x7fffffffffffffffU - local_50 < sVar2) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
  FUN_002fa0e0(&local_58,local_62,sVar2);
  if (local_50 == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);
  sVar2 = strlen(__s);
  if (0x7fffffffffffffffU - local_50 < sVar2) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
  FUN_002fa0e0(&local_58,__s,sVar2);
  pcVar7 = local_58;
  iVar1 = link(param_2,local_58);
  if (iVar1 == 0) {
LAB_0024e1f9:
    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);
  }
  else {
    iVar1 = open64(param_2,0);
    if (iVar1 < 0) {
      piVar4 = __errno_location();
      pcVar7 = strerror(*piVar4);
      uVar6 = gettext("%s: can\'t open (%s)");
      FUN_00187960(uVar6,param_2,pcVar7);
    }
    else {
      __fd = open64(pcVar7,0x241,0x180);
      if (-1 < __fd) {
        do {
          sVar2 = read(iVar1,&DAT_004662a0,0x1000);
          if ((long)sVar2 < 1) goto LAB_0024e1e8;
          sVar3 = write(__fd,&DAT_004662a0,sVar2);
        } while (sVar2 == sVar3);
        piVar4 = __errno_location();
        pcVar7 = strerror(*piVar4);
        uVar6 = gettext("%s: write error while making copy of file (%s)");
        FUN_00187960(uVar6,param_2,pcVar7);
LAB_0024e1e8:
        close(iVar1);
        close(__fd);
        goto LAB_0024e1f9;
      }
      piVar4 = __errno_location();
      pcVar5 = strerror(*piVar4);
      uVar6 = gettext("%s: can\'t create (%s)");
      FUN_00187960(uVar6,pcVar7,pcVar5);
      close(iVar1);
    }
  }
  if (local_58 != local_48) {
    FUN_002f1e60();
  }
LAB_0024e02a:
  fputc(10,*(FILE **)(param_1 + 4));
  return;
}


PUSH R15
XOR EAX,EAX
PUSH R14
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
MOV EBP,EDX
MOV RDX,RSI
LEA RSI,[0x39befc]
PUSH RBX
MOV RBX,RDI
SUB RSP,0x48
MOV RDI,qword ptr [RDI + 0x10]
CALL 0x001499f0
TEST BPL,BPL
JZ 0x0024e050
MOV RCX,qword ptr [RBX + 0x10]
MOV EDX,0x5
MOV ESI,0x1
LEA RDI,[0x39bf0c]
CALL 0x00149990
MOV RSI,qword ptr [RBX + 0x10]
MOV EDI,0xa
CALL 0x00149450
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,R13
LEA R14,[RSP + 0x16]
LEA RBP,[RSP + 0x20]
CALL 0x002ef830
MOV ECX,dword ptr [RBX]
MOV ESI,0xa
MOV RDI,R14
LEA RDX,[0x39bf12]
MOV R15,RAX
XOR EAX,EAX
CALL 0x00149130
MOV R12,qword ptr [RBX + 0x8]
LEA RAX,[RBP + 0x10]
ADD dword ptr [RBX],0x1
MOV qword ptr [RSP + 0x20],RAX
MOV RDX,-0x1
TEST R12,R12
JZ 0x0024e0a5
MOV RDI,R12
CALL 0x00149490
LEA RDX,[R12 + RAX*0x1]
MOV RSI,R12
MOV RDI,RBP
CALL 0x00174550
MOV RAX,0x7fffffffffffffff
CMP qword ptr [RSP + 0x28],RAX
JZ 0x0024e290
MOV EDX,0x1
LEA RSI,[0x38ba14]
MOV RDI,RBP
CALL 0x002fa0e0
MOV RDI,R14
CALL 0x00149490
MOV RCX,0x7fffffffffffffff
SUB RCX,qword ptr [RSP + 0x28]
CMP RAX,RCX
JA 0x0024e2d8
MOV RDX,RAX
MOV RSI,R14
MOV RDI,RBP
CALL 0x002fa0e0
MOV RAX,0x7fffffffffffffff
CMP qword ptr [RSP + 0x28],RAX
JZ 0x0024e2e4
MOV EDX,0x1
LEA RSI,[0x393d1c]
MOV RDI,RBP
CALL 0x002fa0e0
MOV RDI,R15
CALL 0x00149490
MOV RCX,0x7fffffffffffffff
SUB RCX,qword ptr [RSP + 0x28]
CMP RAX,RCX
JA 0x0024e2f0
MOV RDX,RAX
MOV RSI,R15
MOV RDI,RBP
CALL 0x002fa0e0
MOV R12,qword ptr [RSP + 0x20]
MOV RDI,R13
MOV RSI,R12
CALL 0x00149580
TEST EAX,EAX
JZ 0x0024e1f9
XOR ESI,ESI
MOV RDI,R13
XOR EAX,EAX
CALL 0x00149620
MOV R15D,EAX
TEST EAX,EAX
JS 0x0024e230
MOV EDX,0x180
MOV ESI,0x241
MOV RDI,R12
XOR EAX,EAX
CALL 0x00149620
MOV dword ptr [RSP + 0xc],EAX
LEA R14,[0x4662a0]
TEST EAX,EAX
JNS 0x0024e1d0
JMP 0x0024e2a0
MOV EDI,dword ptr [RSP + 0xc]
MOV RDX,RAX
MOV RSI,R14
CALL 0x00149a20
CMP R12,RAX
JNZ 0x0024e260
MOV EDX,0x1000
MOV RSI,R14
MOV EDI,R15D
CALL 0x001492e0
MOV R12,RAX
TEST RAX,RAX
JG 0x0024e1b8
MOV EDI,R15D
CALL 0x00149160
MOV EDI,dword ptr [RSP + 0xc]
CALL 0x00149160
MOV RDI,qword ptr [RBX + 0x10]
MOV RDX,qword ptr [RSP + 0x20]
LEA RSI,[0x39bf17]
XOR EAX,EAX
CALL 0x001499f0
MOV RDI,qword ptr [RSP + 0x20]
ADD RBP,0x10
CMP RDI,RBP
JZ 0x0024e02a
CALL 0x002f1e60
JMP 0x0024e02a
CALL 0x00149760
MOV EDI,dword ptr [RAX]
CALL 0x00149610
LEA RDI,[0x39bf1e]
MOV R12,RAX
CALL 0x00149320
MOV RDX,R12
MOV RSI,R13
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00187960
JMP 0x0024e210
CALL 0x00149760
MOV EDI,dword ptr [RAX]
CALL 0x00149610
LEA RDI,[0x39bf98]
MOV R12,RAX
CALL 0x00149320
MOV RDX,R12
MOV RSI,R13
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00187960
JMP 0x0024e1e8
LEA RDI,[0x38bceb]
CALL 0x00330790
CALL 0x00149760
MOV EDI,dword ptr [RAX]
CALL 0x00149610
LEA RDI,[0x39bf32]
MOV R13,RAX
CALL 0x00149320
MOV RDX,R13
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00187960
MOV EDI,R15D
CALL 0x00149160
JMP 0x0024e210
LEA RDI,[0x38bceb]
CALL 0x00330790
LEA RDI,[0x38bceb]
CALL 0x00330790
LEA RDI,[0x38bceb]
CALL 0x00330790
(translation_unit "void FUN_0024dfe0(uint *param_1,char *param_2,char param_3)\n\n{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */\n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}\n\n" (function_definition "void FUN_0024dfe0(uint *param_1,char *param_2,char param_3)\n\n{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */\n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}" primitive_type (function_declarator "FUN_0024dfe0(uint *param_1,char *param_2,char param_3)" identifier (parameter_list "(uint *param_1,char *param_2,char param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */\n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int __fd;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar2;" 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 "undefined8 uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char local_62 [10];" primitive_type (array_declarator "local_62 [10]" identifier [ number_literal ]) ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "char local_48 [24];" primitive_type (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (expression_statement "fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);" (call_expression "fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2)" identifier (argument_list "(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2)" ( (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (string_literal ""REPLACEMENT: %s"" " string_content ") , identifier ))) ;) (if_statement "if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }" if (parenthesized_expression "(param_3 != '\0')" ( (binary_expression "param_3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }" { (expression_statement "fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));" (call_expression "fwrite("(lib)",1,5,*(FILE **)(param_1 + 4))" identifier (argument_list "("(lib)",1,5,*(FILE **)(param_1 + 4))" ( (string_literal ""(lib)"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0024e02a;" goto statement_identifier ;) })) (expression_statement "__s = (char *)FUN_002ef830(param_2);" (assignment_expression "__s = (char *)FUN_002ef830(param_2)" identifier = (cast_expression "(char *)FUN_002ef830(param_2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ef830(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "snprintf(local_62,10,"%05d",(ulong)*param_1);" (call_expression "snprintf(local_62,10,"%05d",(ulong)*param_1)" identifier (argument_list "(local_62,10,"%05d",(ulong)*param_1)" ( identifier , number_literal , (string_literal ""%05d"" " string_content ") , (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) ))) ;) (expression_statement "pcVar5 = *(char **)(param_1 + 2);" (assignment_expression "pcVar5 = *(char **)(param_1 + 2)" identifier = (pointer_expression "*(char **)(param_1 + 2)" * (cast_expression "(char **)(param_1 + 2)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "*param_1 = *param_1 + 1;" (assignment_expression "*param_1 = *param_1 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "*param_1 + 1" (pointer_expression "*param_1" * identifier) + number_literal)) ;) (expression_statement "pcVar7 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }" { (expression_statement "sVar2 = strlen(pcVar5);" (assignment_expression "sVar2 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar7 = pcVar5 + sVar2;" (assignment_expression "pcVar7 = pcVar5 + sVar2" identifier = (binary_expression "pcVar5 + sVar2" identifier + identifier)) ;) })) (expression_statement "FUN_00174550(&local_58,pcVar5,pcVar7);" (call_expression "FUN_00174550(&local_58,pcVar5,pcVar7)" identifier (argument_list "(&local_58,pcVar5,pcVar7)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(local_50 == 0x7fffffffffffffff)" ( (binary_expression "local_50 == 0x7fffffffffffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" { comment (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) comment (expression_statement "FUN_002fa0e0(&local_58,&DAT_0038ba14,1);" (call_expression "FUN_002fa0e0(&local_58,&DAT_0038ba14,1)" identifier (argument_list "(&local_58,&DAT_0038ba14,1)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&DAT_0038ba14" & identifier) , number_literal ))) ;) (expression_statement "sVar2 = strlen(local_62);" (assignment_expression "sVar2 = strlen(local_62)" identifier = (call_expression "strlen(local_62)" identifier (argument_list "(local_62)" ( identifier )))) ;) (if_statement "if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffffU - local_50 < sVar2)" ( (binary_expression "0x7fffffffffffffffU - local_50 < sVar2" (binary_expression "0x7fffffffffffffffU - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" { comment (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,local_62,sVar2);" (call_expression "FUN_002fa0e0(&local_58,local_62,sVar2)" identifier (argument_list "(&local_58,local_62,sVar2)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_50 == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(local_50 == 0x7fffffffffffffff)" ( (binary_expression "local_50 == 0x7fffffffffffffff" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" { comment (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,&DAT_00393d1c,1);" (call_expression "FUN_002fa0e0(&local_58,&DAT_00393d1c,1)" identifier (argument_list "(&local_58,&DAT_00393d1c,1)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&DAT_00393d1c" & identifier) , number_literal ))) ;) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (if_statement "if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffffU - local_50 < sVar2)" ( (binary_expression "0x7fffffffffffffffU - local_50 < sVar2" (binary_expression "0x7fffffffffffffffU - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00330790("basic_string::append");\n  }" { comment (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,__s,sVar2);" (call_expression "FUN_002fa0e0(&local_58,__s,sVar2)" identifier (argument_list "(&local_58,__s,sVar2)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "pcVar7 = local_58;" (assignment_expression "pcVar7 = local_58" identifier = identifier) ;) (expression_statement "iVar1 = link(param_2,local_58);" (assignment_expression "iVar1 = link(param_2,local_58)" identifier = (call_expression "link(param_2,local_58)" identifier (argument_list "(param_2,local_58)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }" { (labeled_statement "LAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);" statement_identifier : (expression_statement "fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);" (call_expression "fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58)" identifier (argument_list "(*(FILE **)(param_1 + 4)," -> %s",local_58)" ( (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (string_literal "" -> %s"" " string_content ") , identifier ))) ;)) }) (else_clause "else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" else (compound_statement "{\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" { (expression_statement "iVar1 = open64(param_2,0);" (assignment_expression "iVar1 = open64(param_2,0)" identifier = (call_expression "open64(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar7 = strerror(*piVar4);" (assignment_expression "pcVar7 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar6 = gettext("%s: can\'t open (%s)");" (assignment_expression "uVar6 = gettext("%s: can\'t open (%s)")" identifier = (call_expression "gettext("%s: can\'t open (%s)")" identifier (argument_list "("%s: can\'t open (%s)")" ( (string_literal ""%s: can\'t open (%s)"" " string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_00187960(uVar6,param_2,pcVar7);" (call_expression "FUN_00187960(uVar6,param_2,pcVar7)" identifier (argument_list "(uVar6,param_2,pcVar7)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" else (compound_statement "{\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" { (expression_statement "__fd = open64(pcVar7,0x241,0x180);" (assignment_expression "__fd = open64(pcVar7,0x241,0x180)" identifier = (call_expression "open64(pcVar7,0x241,0x180)" identifier (argument_list "(pcVar7,0x241,0x180)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" if (parenthesized_expression "(-1 < __fd)" ( (binary_expression "-1 < __fd" number_literal < identifier) )) (compound_statement "{\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" { (do_statement "do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);" do (compound_statement "{\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        }" { (expression_statement "sVar2 = read(iVar1,&DAT_004662a0,0x1000);" (assignment_expression "sVar2 = read(iVar1,&DAT_004662a0,0x1000)" identifier = (call_expression "read(iVar1,&DAT_004662a0,0x1000)" identifier (argument_list "(iVar1,&DAT_004662a0,0x1000)" ( identifier , (pointer_expression "&DAT_004662a0" & identifier) , number_literal )))) ;) (if_statement "if ((long)sVar2 < 1) goto LAB_0024e1e8;" if (parenthesized_expression "((long)sVar2 < 1)" ( (binary_expression "(long)sVar2 < 1" (cast_expression "(long)sVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_0024e1e8;" goto statement_identifier ;)) (expression_statement "sVar3 = write(__fd,&DAT_004662a0,sVar2);" (assignment_expression "sVar3 = write(__fd,&DAT_004662a0,sVar2)" identifier = (call_expression "write(__fd,&DAT_004662a0,sVar2)" identifier (argument_list "(__fd,&DAT_004662a0,sVar2)" ( identifier , (pointer_expression "&DAT_004662a0" & identifier) , identifier )))) ;) }) while (parenthesized_expression "(sVar2 == sVar3)" ( (binary_expression "sVar2 == sVar3" identifier == identifier) )) ;) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar7 = strerror(*piVar4);" (assignment_expression "pcVar7 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar6 = gettext("%s: write error while making copy of file (%s)");" (assignment_expression "uVar6 = gettext("%s: write error while making copy of file (%s)")" identifier = (call_expression "gettext("%s: write error while making copy of file (%s)")" identifier (argument_list "("%s: write error while making copy of file (%s)")" ( (string_literal ""%s: write error while making copy of file (%s)"" " string_content ") )))) ;) (expression_statement "FUN_00187960(uVar6,param_2,pcVar7);" (call_expression "FUN_00187960(uVar6,param_2,pcVar7)" identifier (argument_list "(uVar6,param_2,pcVar7)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0024e1e8:\n        close(iVar1);" statement_identifier : (expression_statement "close(iVar1);" (call_expression "close(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;)) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (goto_statement "goto LAB_0024e1f9;" goto statement_identifier ;) })) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar6 = gettext("%s: can\'t create (%s)");" (assignment_expression "uVar6 = gettext("%s: can\'t create (%s)")" identifier = (call_expression "gettext("%s: can\'t create (%s)")" identifier (argument_list "("%s: can\'t create (%s)")" ( (string_literal ""%s: can\'t create (%s)"" " string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_00187960(uVar6,pcVar7,pcVar5);" (call_expression "FUN_00187960(uVar6,pcVar7,pcVar5)" identifier (argument_list "(uVar6,pcVar7,pcVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "close(iVar1);" (call_expression "close(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) }))) }))) (if_statement "if (local_58 != local_48) {\n    FUN_002f1e60();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002f1e60();\n  }" { (expression_statement "FUN_002f1e60();" (call_expression "FUN_002f1e60()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));" statement_identifier : (expression_statement "fputc(10,*(FILE **)(param_1 + 4));" (call_expression "fputc(10,*(FILE **)(param_1 + 4))" identifier (argument_list "(10,*(FILE **)(param_1 + 4))" ( number_literal , (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void replacement_file(Plugin_recorder * this, char * name, bool is_lib)\n    */\n\nvoid __thiscall\ngold::Plugin_recorder::replacement_file(Plugin_recorder *this,char *name,bool is_lib)\n\n{\n  _Alloc_hider __file;\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  char *pcVar6;\n  char counter [10];\n  string outname;\n  \n  fprintf((FILE *)this->logfile_,"REPLACEMENT: %s",name);\n  if (is_lib) {\n    fwrite("(lib)",1,5,(FILE *)this->logfile_);\n    goto LAB_0024e02a;\n  }\n  __s = lbasename(name);\n  snprintf(counter,10,"%05d",(ulong)this->file_count_);\n  pcVar5 = this->tempdir_;\n  outname._M_dataplus._M_p = (pointer)&outname.field_2;\n  this->file_count_ = this->file_count_ + 1;\n  pcVar6 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar6 = pcVar5 + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&outname,pcVar5,pcVar6);\n  if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */\n  std::string::_M_append((string *)&outname,"/",1);\n  sVar2 = strlen(counter);\n  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,counter,sVar2);\n  if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,"-",1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,__s,sVar2);\n  __file = outname._M_dataplus;\n  iVar1 = link(name,outname._M_dataplus._M_p);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);\n  }\n  else {\n    iVar1 = open64(name,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2) {\n    operator_delete(outname._M_dataplus._M_p);\n  }\nLAB_0024e02a:\n  fputc(10,(FILE *)this->logfile_);\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Plugin_recorder::replacement_file(Plugin_recorder *this,char *name,bool is_lib)\n\n{\n  _Alloc_hider __file;\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  char *pcVar6;\n  char counter [10];\n  string outname;\n  \n  fprintf((FILE *)this->logfile_,"REPLACEMENT: %s",name);\n  if (is_lib) {\n    fwrite("(lib)",1,5,(FILE *)this->logfile_);\n    goto LAB_0024e02a;\n  }\n  __s = lbasename(name);\n  snprintf(counter,10,"%05d",(ulong)this->file_count_);\n  pcVar5 = this->tempdir_;\n  outname._M_dataplus._M_p = (pointer)&outname.field_2;\n  this->file_count_ = this->file_count_ + 1;\n  pcVar6 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar6 = pcVar5 + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&outname,pcVar5,pcVar6);\n  if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */\n  std::string::_M_append((string *)&outname,"/",1);\n  sVar2 = strlen(counter);\n  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,counter,sVar2);\n  if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,"-",1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,__s,sVar2);\n  __file = outname._M_dataplus;\n  iVar1 = link(name,outname._M_dataplus._M_p);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);\n  }\n  else {\n    iVar1 = open64(name,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2) {\n    operator_delete(outname._M_dataplus._M_p);\n  }\nLAB_0024e02a:\n  fputc(10,(FILE *)this->logfile_);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Plugin_recorder::" identifier : : identifier : :) (function_declarator "replacement_file(Plugin_recorder *this,char *name,bool is_lib)" identifier (parameter_list "(Plugin_recorder *this,char *name,bool is_lib)" ( (parameter_declaration "Plugin_recorder *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "bool is_lib" primitive_type identifier) ))) (compound_statement "{\n  _Alloc_hider __file;\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  char *pcVar6;\n  char counter [10];\n  string outname;\n  \n  fprintf((FILE *)this->logfile_,"REPLACEMENT: %s",name);\n  if (is_lib) {\n    fwrite("(lib)",1,5,(FILE *)this->logfile_);\n    goto LAB_0024e02a;\n  }\n  __s = lbasename(name);\n  snprintf(counter,10,"%05d",(ulong)this->file_count_);\n  pcVar5 = this->tempdir_;\n  outname._M_dataplus._M_p = (pointer)&outname.field_2;\n  this->file_count_ = this->file_count_ + 1;\n  pcVar6 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar6 = pcVar5 + sVar2;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&outname,pcVar5,pcVar6);\n  if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */\n  std::string::_M_append((string *)&outname,"/",1);\n  sVar2 = strlen(counter);\n  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,counter,sVar2);\n  if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,"-",1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }\n  std::string::_M_append((string *)&outname,__s,sVar2);\n  __file = outname._M_dataplus;\n  iVar1 = link(name,outname._M_dataplus._M_p);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);\n  }\n  else {\n    iVar1 = open64(name,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }\n  }\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2) {\n    operator_delete(outname._M_dataplus._M_p);\n  }\nLAB_0024e02a:\n  fputc(10,(FILE *)this->logfile_);\n  return;\n}" { (declaration "_Alloc_hider __file;" type_identifier identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "int __fd;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar2;" 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 "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "char counter [10];" primitive_type (array_declarator "counter [10]" identifier [ number_literal ]) ;) (declaration "string outname;" type_identifier identifier ;) (expression_statement "fprintf((FILE *)this->logfile_,"REPLACEMENT: %s",name);" (call_expression "fprintf((FILE *)this->logfile_,"REPLACEMENT: %s",name)" identifier (argument_list "((FILE *)this->logfile_,"REPLACEMENT: %s",name)" ( (cast_expression "(FILE *)this->logfile_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->logfile_" identifier -> field_identifier)) , (string_literal ""REPLACEMENT: %s"" " string_content ") , identifier ))) ;) (if_statement "if (is_lib) {\n    fwrite("(lib)",1,5,(FILE *)this->logfile_);\n    goto LAB_0024e02a;\n  }" if (parenthesized_expression "(is_lib)" ( identifier )) (compound_statement "{\n    fwrite("(lib)",1,5,(FILE *)this->logfile_);\n    goto LAB_0024e02a;\n  }" { (expression_statement "fwrite("(lib)",1,5,(FILE *)this->logfile_);" (call_expression "fwrite("(lib)",1,5,(FILE *)this->logfile_)" identifier (argument_list "("(lib)",1,5,(FILE *)this->logfile_)" ( (string_literal ""(lib)"" " string_content ") , number_literal , number_literal , (cast_expression "(FILE *)this->logfile_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->logfile_" identifier -> field_identifier)) ))) ;) (goto_statement "goto LAB_0024e02a;" goto statement_identifier ;) })) (expression_statement "__s = lbasename(name);" (assignment_expression "__s = lbasename(name)" identifier = (call_expression "lbasename(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "snprintf(counter,10,"%05d",(ulong)this->file_count_);" (call_expression "snprintf(counter,10,"%05d",(ulong)this->file_count_)" identifier (argument_list "(counter,10,"%05d",(ulong)this->file_count_)" ( identifier , number_literal , (string_literal ""%05d"" " string_content ") , (cast_expression "(ulong)this->file_count_" ( (type_descriptor "ulong" type_identifier) ) (field_expression "this->file_count_" identifier -> field_identifier)) ))) ;) (expression_statement "pcVar5 = this->tempdir_;" (assignment_expression "pcVar5 = this->tempdir_" identifier = (field_expression "this->tempdir_" identifier -> field_identifier)) ;) (expression_statement "outname._M_dataplus._M_p = (pointer)&outname.field_2;" (assignment_expression "outname._M_dataplus._M_p = (pointer)&outname.field_2" (field_expression "outname._M_dataplus._M_p" (field_expression "outname._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&outname.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "outname.field_2" identifier . field_identifier))) ;) (expression_statement "this->file_count_ = this->file_count_ + 1;" (assignment_expression "this->file_count_ = this->file_count_ + 1" (field_expression "this->file_count_" identifier -> field_identifier) = (binary_expression "this->file_count_ + 1" (field_expression "this->file_count_" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pcVar6 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar6 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar6 = pcVar5 + sVar2;\n  }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar5);\n    pcVar6 = pcVar5 + sVar2;\n  }" { (expression_statement "sVar2 = strlen(pcVar5);" (assignment_expression "sVar2 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar6 = pcVar5 + sVar2;" (assignment_expression "pcVar6 = pcVar5 + sVar2" identifier = (binary_expression "pcVar5 + sVar2" identifier + identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&outname,pcVar5,pcVar6);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&outname,pcVar5,pcVar6);" (binary_expression "_M_construct<char_const*>(&outname,pcVar5,pcVar6)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&outname,pcVar5,pcVar6)" ( (comma_expression "&outname,pcVar5,pcVar6" (pointer_expression "&outname" & identifier) , (comma_expression "pcVar5,pcVar6" identifier , identifier)) ))) ;)) (if_statement "if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" if (parenthesized_expression "(outname._M_string_length == 0x7fffffffffffffff)" ( (binary_expression "outname._M_string_length == 0x7fffffffffffffff" (field_expression "outname._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" { comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) comment (labeled_statement "std::string::_M_append((string *)&outname,"/",1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&outname,"/",1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&outname,"/",1);" (call_expression "_M_append((string *)&outname,"/",1)" identifier (argument_list "((string *)&outname,"/",1)" ( (cast_expression "(string *)&outname" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&outname" & identifier)) , (string_literal ""/"" " string_content ") , number_literal ))) ;))) (expression_statement "sVar2 = strlen(counter);" (assignment_expression "sVar2 = strlen(counter)" identifier = (call_expression "strlen(counter)" identifier (argument_list "(counter)" ( identifier )))) ;) (if_statement "if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffff - outname._M_string_length < sVar2)" ( (binary_expression "0x7fffffffffffffff - outname._M_string_length < sVar2" (binary_expression "0x7fffffffffffffff - outname._M_string_length" number_literal - (field_expression "outname._M_string_length" identifier . field_identifier)) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" { comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) (labeled_statement "std::string::_M_append((string *)&outname,counter,sVar2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&outname,counter,sVar2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&outname,counter,sVar2);" (call_expression "_M_append((string *)&outname,counter,sVar2)" identifier (argument_list "((string *)&outname,counter,sVar2)" ( (cast_expression "(string *)&outname" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&outname" & identifier)) , identifier , identifier ))) ;))) (if_statement "if (outname._M_string_length == 0x7fffffffffffffff) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" if (parenthesized_expression "(outname._M_string_length == 0x7fffffffffffffff)" ( (binary_expression "outname._M_string_length == 0x7fffffffffffffff" (field_expression "outname._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" { comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) (labeled_statement "std::string::_M_append((string *)&outname,"-",1);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&outname,"-",1);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&outname,"-",1);" (call_expression "_M_append((string *)&outname,"-",1)" identifier (argument_list "((string *)&outname,"-",1)" ( (cast_expression "(string *)&outname" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&outname" & identifier)) , (string_literal ""-"" " string_content ") , number_literal ))) ;))) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (if_statement "if (0x7fffffffffffffff - outname._M_string_length < sVar2) {\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffff - outname._M_string_length < sVar2)" ( (binary_expression "0x7fffffffffffffff - outname._M_string_length < sVar2" (binary_expression "0x7fffffffffffffff - outname._M_string_length" number_literal - (field_expression "outname._M_string_length" identifier . field_identifier)) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    std::__throw_length_error("basic_string::append");\n  }" { comment (labeled_statement "std::__throw_length_error("basic_string::append");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("basic_string::append");" (call_expression "__throw_length_error("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;)) })) (labeled_statement "std::string::_M_append((string *)&outname,__s,sVar2);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_append((string *)&outname,__s,sVar2);" statement_identifier : (ERROR ":" :) (expression_statement "_M_append((string *)&outname,__s,sVar2);" (call_expression "_M_append((string *)&outname,__s,sVar2)" identifier (argument_list "((string *)&outname,__s,sVar2)" ( (cast_expression "(string *)&outname" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&outname" & identifier)) , identifier , identifier ))) ;))) (expression_statement "__file = outname._M_dataplus;" (assignment_expression "__file = outname._M_dataplus" identifier = (field_expression "outname._M_dataplus" identifier . field_identifier)) ;) (expression_statement "iVar1 = link(name,outname._M_dataplus._M_p);" (assignment_expression "iVar1 = link(name,outname._M_dataplus._M_p)" identifier = (call_expression "link(name,outname._M_dataplus._M_p)" identifier (argument_list "(name,outname._M_dataplus._M_p)" ( identifier , (field_expression "outname._M_dataplus._M_p" (field_expression "outname._M_dataplus" identifier . field_identifier) . field_identifier) )))) ;) (if_statement "if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);\n  }\n  else {\n    iVar1 = open64(name,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0024e1f9:\n    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);\n  }" { (labeled_statement "LAB_0024e1f9:\n    fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);" statement_identifier : (expression_statement "fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p);" (call_expression "fprintf((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p)" identifier (argument_list "((FILE *)this->logfile_," -> %s",outname._M_dataplus._M_p)" ( (cast_expression "(FILE *)this->logfile_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->logfile_" identifier -> field_identifier)) , (string_literal "" -> %s"" " string_content ") , (field_expression "outname._M_dataplus._M_p" (field_expression "outname._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;)) }) (else_clause "else {\n    iVar1 = open64(name,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }\n  }" else (compound_statement "{\n    iVar1 = open64(name,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }\n  }" { (expression_statement "iVar1 = open64(name,0);" (assignment_expression "iVar1 = open64(name,0)" identifier = (call_expression "open64(name,0)" identifier (argument_list "(name,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }\n    else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t open (%s)");\n      gold_warning(pcVar5,name,pcVar6);\n    }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar4);" (assignment_expression "pcVar6 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "pcVar5 = (char *)gettext("%s: can\'t open (%s)");" (assignment_expression "pcVar5 = (char *)gettext("%s: can\'t open (%s)")" identifier = (cast_expression "(char *)gettext("%s: can\'t open (%s)")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: can\'t open (%s)")" identifier (argument_list "("%s: can\'t open (%s)")" ( (string_literal ""%s: can\'t open (%s)"" " string_content escape_sequence string_content ") ))))) ;) (expression_statement "gold_warning(pcVar5,name,pcVar6);" (call_expression "gold_warning(pcVar5,name,pcVar6)" identifier (argument_list "(pcVar5,name,pcVar6)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }" else (compound_statement "{\n      __fd = open64(__file._M_p,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar6 = strerror(*piVar4);\n      pcVar5 = (char *)gettext("%s: can\'t create (%s)");\n      gold_warning(pcVar5,__file._M_p,pcVar6);\n      close(iVar1);\n    }" { (expression_statement "__fd = open64(__file._M_p,0x241,0x180);" (assignment_expression "__fd = open64(__file._M_p,0x241,0x180)" identifier = (call_expression "open64(__file._M_p,0x241,0x180)" identifier (argument_list "(__file._M_p,0x241,0x180)" ( (field_expression "__file._M_p" identifier . field_identifier) , number_literal , number_literal )))) ;) (if_statement "if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" if (parenthesized_expression "(-1 < __fd)" ( (binary_expression "-1 < __fd" number_literal < identifier) )) (compound_statement "{\n        do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar6 = strerror(*piVar4);\n        pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");\n        gold_warning(pcVar5,name,pcVar6);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" { (do_statement "do {\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        } while (sVar2 == sVar3);" do (compound_statement "{\n          sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);\n        }" { (expression_statement "sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000);" (assignment_expression "sVar2 = read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000)" identifier = (call_expression "read(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000)" identifier (argument_list "(iVar1,link_or_copy_file(char_const*,char_const*)::buf,0x1000)" ( identifier , (call_expression "link_or_copy_file(char_const*,char_const*)::buf,0x1000)" identifier (argument_list "(char_const*,char_const*)::buf,0x1000)" ( (binary_expression "char_const*,char_const*)::buf" (binary_expression "char_const*,char_const" identifier * (ERROR "," ,) identifier) * (ERROR ")::" ) : :) identifier) , number_literal ))) )))) ;) (if_statement "if ((long)sVar2 < 1) goto LAB_0024e1e8;" if (parenthesized_expression "((long)sVar2 < 1)" ( (binary_expression "(long)sVar2 < 1" (cast_expression "(long)sVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_0024e1e8;" goto statement_identifier ;)) (expression_statement "sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2);" (assignment_expression "sVar3 = ::write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2)" identifier = (ERROR "::" : :) (call_expression "write(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2)" identifier (argument_list "(__fd,link_or_copy_file(char_const*,char_const*)::buf,sVar2)" ( identifier , (call_expression "link_or_copy_file(char_const*,char_const*)::buf,sVar2)" identifier (argument_list "(char_const*,char_const*)::buf,sVar2)" ( (binary_expression "char_const*,char_const*)::buf" (binary_expression "char_const*,char_const" identifier * (ERROR "," ,) identifier) * (ERROR ")::" ) : :) identifier) , identifier ))) )))) ;) }) while (parenthesized_expression "(sVar2 == sVar3)" ( (binary_expression "sVar2 == sVar3" identifier == identifier) )) ;) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar4);" (assignment_expression "pcVar6 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)");" (assignment_expression "pcVar5 = (char *)gettext("%s: write error while making copy of file (%s)")" identifier = (cast_expression "(char *)gettext("%s: write error while making copy of file (%s)")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: write error while making copy of file (%s)")" identifier (argument_list "("%s: write error while making copy of file (%s)")" ( (string_literal ""%s: write error while making copy of file (%s)"" " string_content ") ))))) ;) (expression_statement "gold_warning(pcVar5,name,pcVar6);" (call_expression "gold_warning(pcVar5,name,pcVar6)" identifier (argument_list "(pcVar5,name,pcVar6)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0024e1e8:\n        close(iVar1);" statement_identifier : (expression_statement "close(iVar1);" (call_expression "close(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;)) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (goto_statement "goto LAB_0024e1f9;" goto statement_identifier ;) })) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar6 = strerror(*piVar4);" (assignment_expression "pcVar6 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "pcVar5 = (char *)gettext("%s: can\'t create (%s)");" (assignment_expression "pcVar5 = (char *)gettext("%s: can\'t create (%s)")" identifier = (cast_expression "(char *)gettext("%s: can\'t create (%s)")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: can\'t create (%s)")" identifier (argument_list "("%s: can\'t create (%s)")" ( (string_literal ""%s: can\'t create (%s)"" " string_content escape_sequence string_content ") ))))) ;) (expression_statement "gold_warning(pcVar5,__file._M_p,pcVar6);" (call_expression "gold_warning(pcVar5,__file._M_p,pcVar6)" identifier (argument_list "(pcVar5,__file._M_p,pcVar6)" ( identifier , (field_expression "__file._M_p" identifier . field_identifier) , identifier ))) ;) (expression_statement "close(iVar1);" (call_expression "close(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) }))) }))) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2) {\n    operator_delete(outname._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)outname._M_dataplus._M_p != &outname.field_2" (binary_expression "allocator<char>_>_9\n       *)outname._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)outname._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "outname._M_dataplus._M_p" (field_expression "outname._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&outname.field_2" & (field_expression "outname.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(outname._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(outname._M_dataplus._M_p);" (call_expression "operator_delete(outname._M_dataplus._M_p)" identifier (argument_list "(outname._M_dataplus._M_p)" ( (field_expression "outname._M_dataplus._M_p" (field_expression "outname._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (labeled_statement "LAB_0024e02a:\n  fputc(10,(FILE *)this->logfile_);" statement_identifier : (expression_statement "fputc(10,(FILE *)this->logfile_);" (call_expression "fputc(10,(FILE *)this->logfile_)" identifier (argument_list "(10,(FILE *)this->logfile_)" ( number_literal , (cast_expression "(FILE *)this->logfile_" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "this->logfile_" identifier -> field_identifier)) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0024dfe0(uint *param_1,char *param_2,char param_3)\n\n{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n                    \n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}\n\n" (function_definition "void FUN_0024dfe0(uint *param_1,char *param_2,char param_3)\n\n{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n                    \n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}" primitive_type (function_declarator "FUN_0024dfe0(uint *param_1,char *param_2,char param_3)" identifier (parameter_list "(uint *param_1,char *param_2,char param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n                    \n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int __fd;" primitive_type identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "size_t sVar2;" 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 "undefined8 uVar6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char local_62 [10];" primitive_type (array_declarator "local_62 [10]" identifier [ number_literal ]) ;) (declaration "char *local_58;" primitive_type (pointer_declarator "*local_58" * identifier) ;) (declaration "long local_50;" (sized_type_specifier "long" long) identifier ;) (declaration "char local_48 [24];" primitive_type (array_declarator "local_48 [24]" identifier [ number_literal ]) ;) (expression_statement "fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);" (call_expression "fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2)" identifier (argument_list "(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2)" ( (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (string_literal ""REPLACEMENT: %s"" " string_content ") , identifier ))) ;) (if_statement "if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }" if (parenthesized_expression "(param_3 != '\0')" ( (binary_expression "param_3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }" { (expression_statement "fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));" (call_expression "fwrite("(lib)",1,5,*(FILE **)(param_1 + 4))" identifier (argument_list "("(lib)",1,5,*(FILE **)(param_1 + 4))" ( (string_literal ""(lib)"" " string_content ") , number_literal , number_literal , (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0024e02a;" goto statement_identifier ;) })) (expression_statement "__s = (char *)FUN_002ef830(param_2);" (assignment_expression "__s = (char *)FUN_002ef830(param_2)" identifier = (cast_expression "(char *)FUN_002ef830(param_2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002ef830(param_2)" identifier (argument_list "(param_2)" ( identifier ))))) ;) (expression_statement "snprintf(local_62,10,"%05d",(ulong)*param_1);" (call_expression "snprintf(local_62,10,"%05d",(ulong)*param_1)" identifier (argument_list "(local_62,10,"%05d",(ulong)*param_1)" ( identifier , number_literal , (string_literal ""%05d"" " string_content ") , (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" ( identifier )) * identifier) ))) ;) (expression_statement "pcVar5 = *(char **)(param_1 + 2);" (assignment_expression "pcVar5 = *(char **)(param_1 + 2)" identifier = (pointer_expression "*(char **)(param_1 + 2)" * (cast_expression "(char **)(param_1 + 2)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) ))))) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "*param_1 = *param_1 + 1;" (assignment_expression "*param_1 = *param_1 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "*param_1 + 1" (pointer_expression "*param_1" * identifier) + number_literal)) ;) (expression_statement "pcVar7 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffffffffffff" identifier = (cast_expression "(char *)0xffffffffffffffff" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }" { (expression_statement "sVar2 = strlen(pcVar5);" (assignment_expression "sVar2 = strlen(pcVar5)" identifier = (call_expression "strlen(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier )))) ;) (expression_statement "pcVar7 = pcVar5 + sVar2;" (assignment_expression "pcVar7 = pcVar5 + sVar2" identifier = (binary_expression "pcVar5 + sVar2" identifier + identifier)) ;) })) (expression_statement "FUN_00174550(&local_58,pcVar5,pcVar7);" (call_expression "FUN_00174550(&local_58,pcVar5,pcVar7)" identifier (argument_list "(&local_58,pcVar5,pcVar7)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(local_50 == 0x7fffffffffffffff)" ( (binary_expression "local_50 == 0x7fffffffffffffff" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" { (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,&DAT_0038ba14,1);" (call_expression "FUN_002fa0e0(&local_58,&DAT_0038ba14,1)" identifier (argument_list "(&local_58,&DAT_0038ba14,1)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&DAT_0038ba14" & identifier) , number_literal ))) ;) (expression_statement "sVar2 = strlen(local_62);" (assignment_expression "sVar2 = strlen(local_62)" identifier = (call_expression "strlen(local_62)" identifier (argument_list "(local_62)" ( identifier )))) ;) (if_statement "if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffffU - local_50 < sVar2)" ( (binary_expression "0x7fffffffffffffffU - local_50 < sVar2" (binary_expression "0x7fffffffffffffffU - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" { (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,local_62,sVar2);" (call_expression "FUN_002fa0e0(&local_58,local_62,sVar2)" identifier (argument_list "(&local_58,local_62,sVar2)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (if_statement "if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(local_50 == 0x7fffffffffffffff)" ( (binary_expression "local_50 == 0x7fffffffffffffff" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" { (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,&DAT_00393d1c,1);" (call_expression "FUN_002fa0e0(&local_58,&DAT_00393d1c,1)" identifier (argument_list "(&local_58,&DAT_00393d1c,1)" ( (pointer_expression "&local_58" & identifier) , (pointer_expression "&DAT_00393d1c" & identifier) , number_literal ))) ;) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (if_statement "if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }" if (parenthesized_expression "(0x7fffffffffffffffU - local_50 < sVar2)" ( (binary_expression "0x7fffffffffffffffU - local_50 < sVar2" (binary_expression "0x7fffffffffffffffU - local_50" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" { (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" identifier (argument_list "("basic_string::append")" ( (string_literal ""basic_string::append"" " string_content ") ))) ;) })) (expression_statement "FUN_002fa0e0(&local_58,__s,sVar2);" (call_expression "FUN_002fa0e0(&local_58,__s,sVar2)" identifier (argument_list "(&local_58,__s,sVar2)" ( (pointer_expression "&local_58" & identifier) , identifier , identifier ))) ;) (expression_statement "pcVar7 = local_58;" (assignment_expression "pcVar7 = local_58" identifier = identifier) ;) (expression_statement "iVar1 = link(param_2,local_58);" (assignment_expression "iVar1 = link(param_2,local_58)" identifier = (call_expression "link(param_2,local_58)" identifier (argument_list "(param_2,local_58)" ( identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }" { (labeled_statement "LAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);" statement_identifier : (expression_statement "fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);" (call_expression "fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58)" identifier (argument_list "(*(FILE **)(param_1 + 4)," -> %s",local_58)" ( (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (string_literal "" -> %s"" " string_content ") , identifier ))) ;)) }) (else_clause "else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" else (compound_statement "{\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" { (expression_statement "iVar1 = open64(param_2,0);" (assignment_expression "iVar1 = open64(param_2,0)" identifier = (call_expression "open64(param_2,0)" identifier (argument_list "(param_2,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" if (parenthesized_expression "(iVar1 < 0)" ( (binary_expression "iVar1 < 0" identifier < number_literal) )) (compound_statement "{\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }" { (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar7 = strerror(*piVar4);" (assignment_expression "pcVar7 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar6 = gettext("%s: can\'t open (%s)");" (assignment_expression "uVar6 = gettext("%s: can\'t open (%s)")" identifier = (call_expression "gettext("%s: can\'t open (%s)")" identifier (argument_list "("%s: can\'t open (%s)")" ( (string_literal ""%s: can\'t open (%s)"" " string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_00187960(uVar6,param_2,pcVar7);" (call_expression "FUN_00187960(uVar6,param_2,pcVar7)" identifier (argument_list "(uVar6,param_2,pcVar7)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" else (compound_statement "{\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" { (expression_statement "__fd = open64(pcVar7,0x241,0x180);" (assignment_expression "__fd = open64(pcVar7,0x241,0x180)" identifier = (call_expression "open64(pcVar7,0x241,0x180)" identifier (argument_list "(pcVar7,0x241,0x180)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" if (parenthesized_expression "(-1 < __fd)" ( (binary_expression "-1 < __fd" number_literal < identifier) )) (compound_statement "{\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" { (do_statement "do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);" do (compound_statement "{\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        }" { (expression_statement "sVar2 = read(iVar1,&DAT_004662a0,0x1000);" (assignment_expression "sVar2 = read(iVar1,&DAT_004662a0,0x1000)" identifier = (call_expression "read(iVar1,&DAT_004662a0,0x1000)" identifier (argument_list "(iVar1,&DAT_004662a0,0x1000)" ( identifier , (pointer_expression "&DAT_004662a0" & identifier) , number_literal )))) ;) (if_statement "if ((long)sVar2 < 1) goto LAB_0024e1e8;" if (parenthesized_expression "((long)sVar2 < 1)" ( (binary_expression "(long)sVar2 < 1" (cast_expression "(long)sVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_0024e1e8;" goto statement_identifier ;)) (expression_statement "sVar3 = write(__fd,&DAT_004662a0,sVar2);" (assignment_expression "sVar3 = write(__fd,&DAT_004662a0,sVar2)" identifier = (call_expression "write(__fd,&DAT_004662a0,sVar2)" identifier (argument_list "(__fd,&DAT_004662a0,sVar2)" ( identifier , (pointer_expression "&DAT_004662a0" & identifier) , identifier )))) ;) }) while (parenthesized_expression "(sVar2 == sVar3)" ( (binary_expression "sVar2 == sVar3" identifier == identifier) )) ;) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar7 = strerror(*piVar4);" (assignment_expression "pcVar7 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar6 = gettext("%s: write error while making copy of file (%s)");" (assignment_expression "uVar6 = gettext("%s: write error while making copy of file (%s)")" identifier = (call_expression "gettext("%s: write error while making copy of file (%s)")" identifier (argument_list "("%s: write error while making copy of file (%s)")" ( (string_literal ""%s: write error while making copy of file (%s)"" " string_content ") )))) ;) (expression_statement "FUN_00187960(uVar6,param_2,pcVar7);" (call_expression "FUN_00187960(uVar6,param_2,pcVar7)" identifier (argument_list "(uVar6,param_2,pcVar7)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0024e1e8:\n        close(iVar1);" statement_identifier : (expression_statement "close(iVar1);" (call_expression "close(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;)) (expression_statement "close(__fd);" (call_expression "close(__fd)" identifier (argument_list "(__fd)" ( identifier ))) ;) (goto_statement "goto LAB_0024e1f9;" goto statement_identifier ;) })) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar6 = gettext("%s: can\'t create (%s)");" (assignment_expression "uVar6 = gettext("%s: can\'t create (%s)")" identifier = (call_expression "gettext("%s: can\'t create (%s)")" identifier (argument_list "("%s: can\'t create (%s)")" ( (string_literal ""%s: can\'t create (%s)"" " string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_00187960(uVar6,pcVar7,pcVar5);" (call_expression "FUN_00187960(uVar6,pcVar7,pcVar5)" identifier (argument_list "(uVar6,pcVar7,pcVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "close(iVar1);" (call_expression "close(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) }))) }))) (if_statement "if (local_58 != local_48) {\n    FUN_002f1e60();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_002f1e60();\n  }" { (expression_statement "FUN_002f1e60();" (call_expression "FUN_002f1e60()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));" statement_identifier : (expression_statement "fputc(10,*(FILE **)(param_1 + 4));" (call_expression "fputc(10,*(FILE **)(param_1 + 4))" identifier (argument_list "(10,*(FILE **)(param_1 + 4))" ( number_literal , (pointer_expression "*(FILE **)(param_1 + 4)" * (cast_expression "(FILE **)(param_1 + 4)" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ 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) )))) , (string_literal " string_content ") , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (string_literal " string_content ") , (binary_expression (parenthesized_expression ( IDENT )) * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (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) )))) , (string_literal " string_content ") , IDENT ))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , IDENT )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;)) (return_statement return ;) })))
(function_definition "void FUN_0024dfe0(uint *param_1,char *param_2,char param_3)\n\n{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n                    \n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0024dfe0(uint *param_1,char *param_2,char param_3)" (identifier "FUN_0024dfe0") (parameter_list "(uint *param_1,char *param_2,char param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char *param_2" (primitive_type "char") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "char param_3" (primitive_type "char") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  int __fd;\n  char *__s;\n  size_t sVar2;\n  size_t sVar3;\n  int *piVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  char *pcVar7;\n  char local_62 [10];\n  char *local_58;\n  long local_50;\n  char local_48 [24];\n  \n  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);\n  if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }\n  __s = (char *)FUN_002ef830(param_2);\n  snprintf(local_62,10,"%05d",(ulong)*param_1);\n  pcVar5 = *(char **)(param_1 + 2);\n  local_58 = local_48;\n  *param_1 = *param_1 + 1;\n  pcVar7 = (char *)0xffffffffffffffff;\n  if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }\n  FUN_00174550(&local_58,pcVar5,pcVar7);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n                    \n  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);\n  sVar2 = strlen(local_62);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,local_62,sVar2);\n  if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);\n  sVar2 = strlen(__s);\n  if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }\n  FUN_002fa0e0(&local_58,__s,sVar2);\n  pcVar7 = local_58;\n  iVar1 = link(param_2,local_58);\n  if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }\n  if (local_58 != local_48) {\n    FUN_002f1e60();\n  }\nLAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int __fd;" (primitive_type "int") (identifier "__fd") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "size_t sVar2;" (primitive_type "size_t") (identifier "sVar2") (; ";")) (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 "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "char local_62 [10];" (primitive_type "char") (array_declarator "local_62 [10]" (identifier "local_62") ([ "[") (number_literal "10") (] "]")) (; ";")) (declaration "char *local_58;" (primitive_type "char") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "long local_50;" (sized_type_specifier "long" (long "long")) (identifier "local_50") (; ";")) (declaration "char local_48 [24];" (primitive_type "char") (array_declarator "local_48 [24]" (identifier "local_48") ([ "[") (number_literal "24") (] "]")) (; ";")) (expression_statement "fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);" (call_expression "fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2)" (identifier "fprintf") (argument_list "(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2)" (( "(") (pointer_expression "*(FILE **)(param_1 + 4)" (* "*") (cast_expression "(FILE **)(param_1 + 4)" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (string_literal ""REPLACEMENT: %s"" (" """) (string_content "REPLACEMENT: %s") (" """)) (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (param_3 != '\0') {\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }" (if "if") (parenthesized_expression "(param_3 != '\0')" (( "(") (binary_expression "param_3 != '\0'" (identifier "param_3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));\n    goto LAB_0024e02a;\n  }" ({ "{") (expression_statement "fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));" (call_expression "fwrite("(lib)",1,5,*(FILE **)(param_1 + 4))" (identifier "fwrite") (argument_list "("(lib)",1,5,*(FILE **)(param_1 + 4))" (( "(") (string_literal ""(lib)"" (" """) (string_content "(lib)") (" """)) (, ",") (number_literal "1") (, ",") (number_literal "5") (, ",") (pointer_expression "*(FILE **)(param_1 + 4)" (* "*") (cast_expression "(FILE **)(param_1 + 4)" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_0024e02a;" (goto "goto") (statement_identifier "LAB_0024e02a") (; ";")) (} "}"))) (expression_statement "__s = (char *)FUN_002ef830(param_2);" (assignment_expression "__s = (char *)FUN_002ef830(param_2)" (identifier "__s") (= "=") (cast_expression "(char *)FUN_002ef830(param_2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002ef830(param_2)" (identifier "FUN_002ef830") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))))) (; ";")) (expression_statement "snprintf(local_62,10,"%05d",(ulong)*param_1);" (call_expression "snprintf(local_62,10,"%05d",(ulong)*param_1)" (identifier "snprintf") (argument_list "(local_62,10,"%05d",(ulong)*param_1)" (( "(") (identifier "local_62") (, ",") (number_literal "10") (, ",") (string_literal ""%05d"" (" """) (string_content "%05d") (" """)) (, ",") (binary_expression "(ulong)*param_1" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (identifier "param_1")) () ")"))) (; ";")) (expression_statement "pcVar5 = *(char **)(param_1 + 2);" (assignment_expression "pcVar5 = *(char **)(param_1 + 2)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(param_1 + 2)" (* "*") (cast_expression "(char **)(param_1 + 2)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (expression_statement "*param_1 = *param_1 + 1;" (assignment_expression "*param_1 = *param_1 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "*param_1 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar7 = (char *)0xffffffffffffffff;" (assignment_expression "pcVar7 = (char *)0xffffffffffffffff" (identifier "pcVar7") (= "=") (cast_expression "(char *)0xffffffffffffffff" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffffffffffff"))) (; ";")) (if_statement "if (pcVar5 != (char *)0x0) {\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }" (if "if") (parenthesized_expression "(pcVar5 != (char *)0x0)" (( "(") (binary_expression "pcVar5 != (char *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    sVar2 = strlen(pcVar5);\n    pcVar7 = pcVar5 + sVar2;\n  }" ({ "{") (expression_statement "sVar2 = strlen(pcVar5);" (assignment_expression "sVar2 = strlen(pcVar5)" (identifier "sVar2") (= "=") (call_expression "strlen(pcVar5)" (identifier "strlen") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")")))) (; ";")) (expression_statement "pcVar7 = pcVar5 + sVar2;" (assignment_expression "pcVar7 = pcVar5 + sVar2" (identifier "pcVar7") (= "=") (binary_expression "pcVar5 + sVar2" (identifier "pcVar5") (+ "+") (identifier "sVar2"))) (; ";")) (} "}"))) (expression_statement "FUN_00174550(&local_58,pcVar5,pcVar7);" (call_expression "FUN_00174550(&local_58,pcVar5,pcVar7)" (identifier "FUN_00174550") (argument_list "(&local_58,pcVar5,pcVar7)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "pcVar5") (, ",") (identifier "pcVar7") () ")"))) (; ";")) (if_statement "if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }" (if "if") (parenthesized_expression "(local_50 == 0x7fffffffffffffff)" (( "(") (binary_expression "local_50 == 0x7fffffffffffffff" (identifier "local_50") (== "==") (number_literal "0x7fffffffffffffff")) () ")")) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" ({ "{") (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" (identifier "FUN_00330790") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002fa0e0(&local_58,&DAT_0038ba14,1);" (call_expression "FUN_002fa0e0(&local_58,&DAT_0038ba14,1)" (identifier "FUN_002fa0e0") (argument_list "(&local_58,&DAT_0038ba14,1)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (pointer_expression "&DAT_0038ba14" (& "&") (identifier "DAT_0038ba14")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "sVar2 = strlen(local_62);" (assignment_expression "sVar2 = strlen(local_62)" (identifier "sVar2") (= "=") (call_expression "strlen(local_62)" (identifier "strlen") (argument_list "(local_62)" (( "(") (identifier "local_62") () ")")))) (; ";")) (if_statement "if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }" (if "if") (parenthesized_expression "(0x7fffffffffffffffU - local_50 < sVar2)" (( "(") (binary_expression "0x7fffffffffffffffU - local_50 < sVar2" (binary_expression "0x7fffffffffffffffU - local_50" (number_literal "0x7fffffffffffffffU") (- "-") (identifier "local_50")) (< "<") (identifier "sVar2")) () ")")) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" ({ "{") (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" (identifier "FUN_00330790") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002fa0e0(&local_58,local_62,sVar2);" (call_expression "FUN_002fa0e0(&local_58,local_62,sVar2)" (identifier "FUN_002fa0e0") (argument_list "(&local_58,local_62,sVar2)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "local_62") (, ",") (identifier "sVar2") () ")"))) (; ";")) (if_statement "if (local_50 == 0x7fffffffffffffff) {\n                    \n    FUN_00330790("basic_string::append");\n  }" (if "if") (parenthesized_expression "(local_50 == 0x7fffffffffffffff)" (( "(") (binary_expression "local_50 == 0x7fffffffffffffff" (identifier "local_50") (== "==") (number_literal "0x7fffffffffffffff")) () ")")) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" ({ "{") (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" (identifier "FUN_00330790") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002fa0e0(&local_58,&DAT_00393d1c,1);" (call_expression "FUN_002fa0e0(&local_58,&DAT_00393d1c,1)" (identifier "FUN_002fa0e0") (argument_list "(&local_58,&DAT_00393d1c,1)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (pointer_expression "&DAT_00393d1c" (& "&") (identifier "DAT_00393d1c")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "sVar2 = strlen(__s);" (assignment_expression "sVar2 = strlen(__s)" (identifier "sVar2") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (if_statement "if (0x7fffffffffffffffU - local_50 < sVar2) {\n                    \n    FUN_00330790("basic_string::append");\n  }" (if "if") (parenthesized_expression "(0x7fffffffffffffffU - local_50 < sVar2)" (( "(") (binary_expression "0x7fffffffffffffffU - local_50 < sVar2" (binary_expression "0x7fffffffffffffffU - local_50" (number_literal "0x7fffffffffffffffU") (- "-") (identifier "local_50")) (< "<") (identifier "sVar2")) () ")")) (compound_statement "{\n                    \n    FUN_00330790("basic_string::append");\n  }" ({ "{") (expression_statement "FUN_00330790("basic_string::append");" (call_expression "FUN_00330790("basic_string::append")" (identifier "FUN_00330790") (argument_list "("basic_string::append")" (( "(") (string_literal ""basic_string::append"" (" """) (string_content "basic_string::append") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_002fa0e0(&local_58,__s,sVar2);" (call_expression "FUN_002fa0e0(&local_58,__s,sVar2)" (identifier "FUN_002fa0e0") (argument_list "(&local_58,__s,sVar2)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (identifier "__s") (, ",") (identifier "sVar2") () ")"))) (; ";")) (expression_statement "pcVar7 = local_58;" (assignment_expression "pcVar7 = local_58" (identifier "pcVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "iVar1 = link(param_2,local_58);" (assignment_expression "iVar1 = link(param_2,local_58)" (identifier "iVar1") (= "=") (call_expression "link(param_2,local_58)" (identifier "link") (argument_list "(param_2,local_58)" (( "(") (identifier "param_2") (, ",") (identifier "local_58") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }\n  else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);\n  }" ({ "{") (labeled_statement "LAB_0024e1f9:\n    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);" (statement_identifier "LAB_0024e1f9") (: ":") (expression_statement "fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);" (call_expression "fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58)" (identifier "fprintf") (argument_list "(*(FILE **)(param_1 + 4)," -> %s",local_58)" (( "(") (pointer_expression "*(FILE **)(param_1 + 4)" (* "*") (cast_expression "(FILE **)(param_1 + 4)" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (string_literal "" -> %s"" (" """) (string_content " -> %s") (" """)) (, ",") (identifier "local_58") () ")"))) (; ";"))) (} "}")) (else_clause "else {\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" (else "else") (compound_statement "{\n    iVar1 = open64(param_2,0);\n    if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }\n  }" ({ "{") (expression_statement "iVar1 = open64(param_2,0);" (assignment_expression "iVar1 = open64(param_2,0)" (identifier "iVar1") (= "=") (call_expression "open64(param_2,0)" (identifier "open64") (argument_list "(param_2,0)" (( "(") (identifier "param_2") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar1 < 0) {\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }\n    else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" (if "if") (parenthesized_expression "(iVar1 < 0)" (( "(") (binary_expression "iVar1 < 0" (identifier "iVar1") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      piVar4 = __errno_location();\n      pcVar7 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t open (%s)");\n      FUN_00187960(uVar6,param_2,pcVar7);\n    }" ({ "{") (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar7 = strerror(*piVar4);" (assignment_expression "pcVar7 = strerror(*piVar4)" (identifier "pcVar7") (= "=") (call_expression "strerror(*piVar4)" (identifier "strerror") (argument_list "(*piVar4)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")")))) (; ";")) (expression_statement "uVar6 = gettext("%s: can\'t open (%s)");" (assignment_expression "uVar6 = gettext("%s: can\'t open (%s)")" (identifier "uVar6") (= "=") (call_expression "gettext("%s: can\'t open (%s)")" (identifier "gettext") (argument_list "("%s: can\'t open (%s)")" (( "(") (string_literal ""%s: can\'t open (%s)"" (" """) (string_content "%s: can") (escape_sequence "\'") (string_content "t open (%s)") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00187960(uVar6,param_2,pcVar7);" (call_expression "FUN_00187960(uVar6,param_2,pcVar7)" (identifier "FUN_00187960") (argument_list "(uVar6,param_2,pcVar7)" (( "(") (identifier "uVar6") (, ",") (identifier "param_2") (, ",") (identifier "pcVar7") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" (else "else") (compound_statement "{\n      __fd = open64(pcVar7,0x241,0x180);\n      if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }\n      piVar4 = __errno_location();\n      pcVar5 = strerror(*piVar4);\n      uVar6 = gettext("%s: can\'t create (%s)");\n      FUN_00187960(uVar6,pcVar7,pcVar5);\n      close(iVar1);\n    }" ({ "{") (expression_statement "__fd = open64(pcVar7,0x241,0x180);" (assignment_expression "__fd = open64(pcVar7,0x241,0x180)" (identifier "__fd") (= "=") (call_expression "open64(pcVar7,0x241,0x180)" (identifier "open64") (argument_list "(pcVar7,0x241,0x180)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0x241") (, ",") (number_literal "0x180") () ")")))) (; ";")) (if_statement "if (-1 < __fd) {\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" (if "if") (parenthesized_expression "(-1 < __fd)" (( "(") (binary_expression "-1 < __fd" (number_literal "-1") (< "<") (identifier "__fd")) () ")")) (compound_statement "{\n        do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);\n        piVar4 = __errno_location();\n        pcVar7 = strerror(*piVar4);\n        uVar6 = gettext("%s: write error while making copy of file (%s)");\n        FUN_00187960(uVar6,param_2,pcVar7);\nLAB_0024e1e8:\n        close(iVar1);\n        close(__fd);\n        goto LAB_0024e1f9;\n      }" ({ "{") (do_statement "do {\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        } while (sVar2 == sVar3);" (do "do") (compound_statement "{\n          sVar2 = read(iVar1,&DAT_004662a0,0x1000);\n          if ((long)sVar2 < 1) goto LAB_0024e1e8;\n          sVar3 = write(__fd,&DAT_004662a0,sVar2);\n        }" ({ "{") (expression_statement "sVar2 = read(iVar1,&DAT_004662a0,0x1000);" (assignment_expression "sVar2 = read(iVar1,&DAT_004662a0,0x1000)" (identifier "sVar2") (= "=") (call_expression "read(iVar1,&DAT_004662a0,0x1000)" (identifier "read") (argument_list "(iVar1,&DAT_004662a0,0x1000)" (( "(") (identifier "iVar1") (, ",") (pointer_expression "&DAT_004662a0" (& "&") (identifier "DAT_004662a0")) (, ",") (number_literal "0x1000") () ")")))) (; ";")) (if_statement "if ((long)sVar2 < 1) goto LAB_0024e1e8;" (if "if") (parenthesized_expression "((long)sVar2 < 1)" (( "(") (binary_expression "(long)sVar2 < 1" (cast_expression "(long)sVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "sVar2")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0024e1e8;" (goto "goto") (statement_identifier "LAB_0024e1e8") (; ";"))) (expression_statement "sVar3 = write(__fd,&DAT_004662a0,sVar2);" (assignment_expression "sVar3 = write(__fd,&DAT_004662a0,sVar2)" (identifier "sVar3") (= "=") (call_expression "write(__fd,&DAT_004662a0,sVar2)" (identifier "write") (argument_list "(__fd,&DAT_004662a0,sVar2)" (( "(") (identifier "__fd") (, ",") (pointer_expression "&DAT_004662a0" (& "&") (identifier "DAT_004662a0")) (, ",") (identifier "sVar2") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(sVar2 == sVar3)" (( "(") (binary_expression "sVar2 == sVar3" (identifier "sVar2") (== "==") (identifier "sVar3")) () ")")) (; ";")) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar7 = strerror(*piVar4);" (assignment_expression "pcVar7 = strerror(*piVar4)" (identifier "pcVar7") (= "=") (call_expression "strerror(*piVar4)" (identifier "strerror") (argument_list "(*piVar4)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")")))) (; ";")) (expression_statement "uVar6 = gettext("%s: write error while making copy of file (%s)");" (assignment_expression "uVar6 = gettext("%s: write error while making copy of file (%s)")" (identifier "uVar6") (= "=") (call_expression "gettext("%s: write error while making copy of file (%s)")" (identifier "gettext") (argument_list "("%s: write error while making copy of file (%s)")" (( "(") (string_literal ""%s: write error while making copy of file (%s)"" (" """) (string_content "%s: write error while making copy of file (%s)") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00187960(uVar6,param_2,pcVar7);" (call_expression "FUN_00187960(uVar6,param_2,pcVar7)" (identifier "FUN_00187960") (argument_list "(uVar6,param_2,pcVar7)" (( "(") (identifier "uVar6") (, ",") (identifier "param_2") (, ",") (identifier "pcVar7") () ")"))) (; ";")) (labeled_statement "LAB_0024e1e8:\n        close(iVar1);" (statement_identifier "LAB_0024e1e8") (: ":") (expression_statement "close(iVar1);" (call_expression "close(iVar1)" (identifier "close") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";"))) (expression_statement "close(__fd);" (call_expression "close(__fd)" (identifier "close") (argument_list "(__fd)" (( "(") (identifier "__fd") () ")"))) (; ";")) (goto_statement "goto LAB_0024e1f9;" (goto "goto") (statement_identifier "LAB_0024e1f9") (; ";")) (} "}"))) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar4)" (identifier "strerror") (argument_list "(*piVar4)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")")))) (; ";")) (expression_statement "uVar6 = gettext("%s: can\'t create (%s)");" (assignment_expression "uVar6 = gettext("%s: can\'t create (%s)")" (identifier "uVar6") (= "=") (call_expression "gettext("%s: can\'t create (%s)")" (identifier "gettext") (argument_list "("%s: can\'t create (%s)")" (( "(") (string_literal ""%s: can\'t create (%s)"" (" """) (string_content "%s: can") (escape_sequence "\'") (string_content "t create (%s)") (" """)) () ")")))) (; ";")) (expression_statement "FUN_00187960(uVar6,pcVar7,pcVar5);" (call_expression "FUN_00187960(uVar6,pcVar7,pcVar5)" (identifier "FUN_00187960") (argument_list "(uVar6,pcVar7,pcVar5)" (( "(") (identifier "uVar6") (, ",") (identifier "pcVar7") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "close(iVar1);" (call_expression "close(iVar1)" (identifier "close") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (local_58 != local_48) {\n    FUN_002f1e60();\n  }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n    FUN_002f1e60();\n  }" ({ "{") (expression_statement "FUN_002f1e60();" (call_expression "FUN_002f1e60()" (identifier "FUN_002f1e60") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0024e02a:\n  fputc(10,*(FILE **)(param_1 + 4));" (statement_identifier "LAB_0024e02a") (: ":") (expression_statement "fputc(10,*(FILE **)(param_1 + 4));" (call_expression "fputc(10,*(FILE **)(param_1 + 4))" (identifier "fputc") (argument_list "(10,*(FILE **)(param_1 + 4))" (( "(") (number_literal "10") (, ",") (pointer_expression "*(FILE **)(param_1 + 4)" (* "*") (cast_expression "(FILE **)(param_1 + 4)" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void replacement_file(Plugin_recorder * this, char * name, bool is_lib)
    */

void __thiscall
gold::type_1::function_1(type_1 *this,char *name,bool is_lib)

{
  type_2 __file;
  int var_13;
  int var_19;
  char *__s;
  size_t var_7;
  size_t var_24;
  int *piVar4;
  char *var_5;
  char *pcVar6;
  char counter [10];
  type_3 outname;
  
  var_1((type_4 *)this->logfile_,"REPLACEMENT: %s",name);
  if (is_lib) {
    var_2("(lib)",1,5,(type_4 *)this->logfile_);
    goto LAB_0024e02a;
  }
  __s = var_3(name);
  var_4(counter,10,"%05d",(type_5)this->file_count_);
  var_5 = this->tempdir_;
  outname._M_dataplus._M_p = (pointer)&outname.field_2;
  this->file_count_ = this->file_count_ + 1;
  pcVar6 = (char *)0xffffffffffffffff;
  if (var_5 != (char *)0x0) {
    var_7 = var_6(var_5);
    pcVar6 = var_5 + var_7;
  }
  std::__cxx11::basic_string<var_27,_std::char_traits<var_27>,_std::var_26<var_27>var_28>::
  var_8<var_9*>(&outname,var_5,pcVar6);
  if (outname._M_string_length == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    std::var_10("basic_string::append");
  }
                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */
  std::string::var_11((type_3 *)&outname,"/",1);
  var_7 = var_6(counter);
  if (0x7fffffffffffffff - outname._M_string_length < var_7) {
                    /* WARNING: Subroutine does not return */
    std::var_10("basic_string::append");
  }
  std::string::var_11((type_3 *)&outname,counter,var_7);
  if (outname._M_string_length == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    std::var_10("basic_string::append");
  }
  std::string::var_11((type_3 *)&outname,"-",1);
  var_7 = var_6(__s);
  if (0x7fffffffffffffff - outname._M_string_length < var_7) {
                    /* WARNING: Subroutine does not return */
    std::var_10("basic_string::append");
  }
  std::string::var_11((type_3 *)&outname,__s,var_7);
  __file = outname._M_dataplus;
  var_13 = var_12(name,outname._M_dataplus._M_p);
  if (var_13 == 0) {
LAB_0024e1f9:
    var_1((type_4 *)this->logfile_," -> %s",outname._M_dataplus._M_p);
  }
  else {
    var_13 = var_14(name,0);
    if (var_13 < 0) {
      piVar4 = var_15();
      pcVar6 = var_16(*piVar4);
      var_5 = (char *)var_17("%s: can\'t open (%s)");
      var_18(var_5,name,pcVar6);
    }
    else {
      var_19 = var_14(__file._M_p,0x241,0x180);
      if (-1 < var_19) {
        do {
          var_7 = var_20(var_13,var_21(var_9*,var_9*)::var_22,0x1000);
          if ((long)var_7 < 1) goto LAB_0024e1e8;
          var_24 = ::var_23(var_19,var_21(var_9*,var_9*)::var_22,var_7);
        } while (var_7 == var_24);
        piVar4 = var_15();
        pcVar6 = var_16(*piVar4);
        var_5 = (char *)var_17("%s: write error while making copy of file (%s)");
        var_18(var_5,name,pcVar6);
LAB_0024e1e8:
        var_25(var_13);
        var_25(var_19);
        goto LAB_0024e1f9;
      }
      piVar4 = var_15();
      pcVar6 = var_16(*piVar4);
      var_5 = (char *)var_17("%s: can\'t create (%s)");
      var_18(var_5,__file._M_p,pcVar6);
      var_25(var_13);
    }
  }
  if ((anon_union_16_2_edb7204a_for_basic_string<var_27,_std::char_traits<var_27>,_std::var_26<var_27>var_28>var_29
       *)outname._M_dataplus._M_p != &outname.field_2) {
    var_30(outname._M_dataplus._M_p);
  }
LAB_0024e02a:
  var_31(10,(type_4 *)this->logfile_);
  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))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (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: (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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (string_literal (string_content)) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (number_literal) (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)))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (string_literal (string_content)) (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (string_literal (string_content)) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence) (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence) (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (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))))))))) (return_statement))))

void MASKED(uint *param_1,char *param_2,char param_3)

{
  int iVar1;
  int __fd;
  char *__s;
  size_t sVar2;
  size_t sVar3;
  int *piVar4;
  char *pcVar5;
  undefined8 uVar6;
  char *pcVar7;
  char local_62 [10];
  char *local_58;
  long local_50;
  char local_48 [24];
  
  fprintf(*(FILE **)(param_1 + 4),"REPLACEMENT: %s",param_2);
  if (param_3 != '\0') {
    fwrite("(lib)",1,5,*(FILE **)(param_1 + 4));
    goto LAB_0024e02a;
  }
  __s = (char *)FUN_002ef830(param_2);
  snprintf(local_62,10,"%05d",(ulong)*param_1);
  pcVar5 = *(char **)(param_1 + 2);
  local_58 = local_48;
  *param_1 = *param_1 + 1;
  pcVar7 = (char *)0xffffffffffffffff;
  if (pcVar5 != (char *)0x0) {
    sVar2 = strlen(pcVar5);
    pcVar7 = pcVar5 + sVar2;
  }
  FUN_00174550(&local_58,pcVar5,pcVar7);
  if (local_50 == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
                    /* try { // try from 0024e0d4 to 0024e2fb has its CatchHandler @ 0024e2fc */
  FUN_002fa0e0(&local_58,&DAT_0038ba14,1);
  sVar2 = strlen(local_62);
  if (0x7fffffffffffffffU - local_50 < sVar2) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
  FUN_002fa0e0(&local_58,local_62,sVar2);
  if (local_50 == 0x7fffffffffffffff) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
  FUN_002fa0e0(&local_58,&DAT_00393d1c,1);
  sVar2 = strlen(__s);
  if (0x7fffffffffffffffU - local_50 < sVar2) {
                    /* WARNING: Subroutine does not return */
    FUN_00330790("basic_string::append");
  }
  FUN_002fa0e0(&local_58,__s,sVar2);
  pcVar7 = local_58;
  iVar1 = link(param_2,local_58);
  if (iVar1 == 0) {
LAB_0024e1f9:
    fprintf(*(FILE **)(param_1 + 4)," -> %s",local_58);
  }
  else {
    iVar1 = open64(param_2,0);
    if (iVar1 < 0) {
      piVar4 = __errno_location();
      pcVar7 = strerror(*piVar4);
      uVar6 = gettext("%s: can\'t open (%s)");
      FUN_00187960(uVar6,param_2,pcVar7);
    }
    else {
      __fd = open64(pcVar7,0x241,0x180);
      if (-1 < __fd) {
        do {
          sVar2 = read(iVar1,&DAT_004662a0,0x1000);
          if ((long)sVar2 < 1) goto LAB_0024e1e8;
          sVar3 = write(__fd,&DAT_004662a0,sVar2);
        } while (sVar2 == sVar3);
        piVar4 = __errno_location();
        pcVar7 = strerror(*piVar4);
        uVar6 = gettext("%s: write error while making copy of file (%s)");
        FUN_00187960(uVar6,param_2,pcVar7);
LAB_0024e1e8:
        close(iVar1);
        close(__fd);
        goto LAB_0024e1f9;
      }
      piVar4 = __errno_location();
      pcVar5 = strerror(*piVar4);
      uVar6 = gettext("%s: can\'t create (%s)");
      FUN_00187960(uVar6,pcVar7,pcVar5);
      close(iVar1);
    }
  }
  if (local_58 != local_48) {
    FUN_002f1e60();
  }
LAB_0024e02a:
  fputc(10,*(FILE **)(param_1 + 4));
  return;
}

