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

char * __regparm3 make_dirname(char *pi_name,char **logtext)

{
  int iVar1;
  uchar uVar2;
  char *pcVar3;
  char *dirname;
  int iVar4;
  ssize_t sVar5;
  size_t len;
  __pid_t _Var6;
  char *pcVar7;
  char *pcVar8;
  int *piVar9;
  char *pcVar10;
  int iVar11;
  uchar *puVar12;
  uchar *puVar13;
  int in_GS_OFFSET;
  char *local_160;
  uchar *local_150;
  SHA256_State sha;
  uchar lenbuf [4];
  uchar digest [32];
  uchar saltbuf [64];
  char retbuf [65];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  pcVar3 = get_username();
  dirname = dupprintf("%s.%s","/tmp/putty-connshare",pcVar3);
  safefree(pcVar3);
  if (*dirname != '/') {
                    /* WARNING: Subroutine does not return */
    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");
  }
  pcVar3 = make_dir_and_check_ours(dirname);
  if (pcVar3 != (char *)0x0) {
    *logtext = pcVar3;
    safefree(dirname);
    local_160 = (char *)0x0;
    goto LAB_00088a86;
  }
  pcVar3 = dupprintf("%s/%s",dirname,&DAT_0009e5ac);
  iVar4 = open64(pcVar3,0);
  if (-1 < iVar4) {
LAB_00088933:
    iVar11 = 0;
    do {
      sVar5 = read(iVar4,saltbuf,0x40);
      if (sVar5 < 1) {
        close(iVar4);
        pcVar8 = "unexpected EOF";
        if (sVar5 != 0) {
          piVar9 = __errno_location();
          pcVar8 = strerror(*piVar9);
        }
        pcVar7 = "%s: read: %s";
        goto LAB_00088c5d;
      }
      if (0x40 - iVar11 < sVar5) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");
      }
      iVar11 = iVar11 + 1 + sVar5;
    } while (iVar11 < 0x40);
    close(iVar4);
    safefree(pcVar3);
    SHA256_Init((SHA256_CTX *)&sha);
    lenbuf[0] = '\0';
    lenbuf[1] = '\0';
    lenbuf[2] = '\0';
    lenbuf[3] = '@';
    SHA256_Bytes(&sha,lenbuf,4);
    SHA256_Bytes(&sha,saltbuf,0x40);
    len = strlen(pi_name);
    lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);
    SHA256_Bytes(&sha,lenbuf,4);
    SHA256_Bytes(&sha,pi_name,len);
    puVar13 = digest;
    SHA256_Final(&sha,puVar13);
    pcVar3 = retbuf;
    do {
      uVar2 = *puVar13;
      puVar13 = puVar13 + 1;
      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);
      pcVar3 = pcVar3 + 2;
    } while (saltbuf != puVar13);
    pcVar3 = dupstr(retbuf);
    smemclr(saltbuf,0x40);
    local_160 = dupprintf("%s/%s",dirname,pcVar3);
    safefree(dirname);
    safefree(pcVar3);
    goto LAB_00088a86;
  }
  piVar9 = __errno_location();
  iVar4 = *piVar9;
  if (iVar4 == 2) {
    _Var6 = getpid();
    iVar4 = 0;
    while( true ) {
      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);
      iVar11 = open64(pcVar8,0xc1,0x100);
      if (-1 < iVar11) break;
      if (*piVar9 != 0x11) {
        pcVar10 = strerror(*piVar9);
        pcVar7 = "%s: open: %s";
        goto LAB_00088d16;
      }
      iVar4 = iVar4 + 1;
      safefree(pcVar8);
    }
    puVar13 = saltbuf;
    do {
      local_150 = saltbuf;
      iVar4 = random_byte();
      puVar12 = puVar13 + 1;
      *puVar13 = (uchar)iVar4;
      puVar13 = puVar12;
    } while (puVar12 != (uchar *)retbuf);
    sVar5 = write(iVar11,local_150,0x40);
    if ((-1 < sVar5) && (sVar5 != 0x40)) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");
    }
    if (sVar5 < 0) {
      close(iVar11);
      pcVar10 = strerror(*piVar9);
      pcVar7 = "%s: write: %s";
    }
    else {
      iVar4 = close(iVar11);
      if (iVar4 < 0) {
        pcVar10 = strerror(*piVar9);
        pcVar7 = "%s: close: %s";
      }
      else {
        iVar4 = link(pcVar8,pcVar3);
        if ((iVar4 < 0) && (*piVar9 != 0x11)) {
          pcVar7 = strerror(*piVar9);
          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);
          *logtext = pcVar7;
          safefree(pcVar8);
          goto LAB_00088c6c;
        }
        iVar4 = unlink(pcVar8);
        if (-1 < iVar4) {
          safefree(pcVar8);
          iVar4 = open64(pcVar3,0);
          if (-1 < iVar4) goto LAB_00088933;
          iVar4 = *piVar9;
          goto LAB_00088c8c;
        }
        pcVar10 = strerror(*piVar9);
        pcVar7 = "%s: unlink: %s";
      }
    }
LAB_00088d16:
    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);
    *logtext = pcVar7;
    safefree(pcVar8);
  }
  else {
LAB_00088c8c:
    pcVar8 = strerror(iVar4);
    pcVar7 = "%s: open: %s";
LAB_00088c5d:
    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);
    *logtext = pcVar8;
  }
LAB_00088c6c:
  safefree(pcVar3);
  safefree(dirname);
  local_160 = (char *)0x0;
LAB_00088a86:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return local_160;
}



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

undefined4 __regparm3 FUN_00088870(char *param_1,int *param_2)

{
  undefined1 uVar1;
  undefined4 uVar2;
  char *pcVar3;
  int iVar4;
  char *__file;
  ssize_t sVar5;
  size_t sVar6;
  __pid_t _Var7;
  char *pcVar8;
  int *piVar9;
  char *pcVar10;
  char *pcVar11;
  int iVar12;
  undefined1 *puVar13;
  undefined1 *puVar14;
  int in_GS_OFFSET;
  undefined4 local_160;
  undefined1 *local_150;
  undefined1 local_134 [108];
  uint local_c8;
  undefined1 local_c1 [32];
  undefined1 local_a1 [64];
  undefined1 local_61 [65];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x88879;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar2 = FUN_00082b90();
  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);
  FUN_0001dd30(uVar2);
  if (*pcVar3 != '/') {
                    /* WARNING: Subroutine does not return */
    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");
  }
  iVar4 = FUN_00083080(pcVar3);
  if (iVar4 != 0) {
    *param_2 = iVar4;
    FUN_0001dd30(pcVar3);
    local_160 = 0;
    goto LAB_00088a86;
  }
  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);
  iVar4 = open64(__file,0);
  if (-1 < iVar4) {
LAB_00088933:
    iVar12 = 0;
    do {
      sVar5 = read(iVar4,local_a1,0x40);
      if (sVar5 < 1) {
        close(iVar4);
        pcVar10 = "unexpected EOF";
        if (sVar5 != 0) {
          piVar9 = __errno_location();
          pcVar10 = strerror(*piVar9);
        }
        pcVar8 = "%s: read: %s";
        goto LAB_00088c5d;
      }
      if (0x40 - iVar12 < sVar5) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");
      }
      iVar12 = iVar12 + 1 + sVar5;
    } while (iVar12 < 0x40);
    close(iVar4);
    FUN_0001dd30(__file);
    FUN_00070eb0(local_134);
    local_c8 = 0x40000000;
    FUN_00070f10(local_134,&local_c8,4);
    FUN_00070f10(local_134,local_a1,0x40);
    sVar6 = strlen(param_1);
    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;
    FUN_00070f10(local_134,&local_c8,4);
    FUN_00070f10(local_134,param_1,sVar6);
    puVar14 = local_c1;
    FUN_00071490(local_134,puVar14);
    puVar13 = local_61;
    do {
      uVar1 = *puVar14;
      puVar14 = puVar14 + 1;
      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);
      puVar13 = puVar13 + 2;
    } while (local_a1 != puVar14);
    uVar2 = FUN_0001cbd0(local_61);
    FUN_0001de10(local_a1,0x40);
    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);
    FUN_0001dd30(pcVar3);
    FUN_0001dd30(uVar2);
    goto LAB_00088a86;
  }
  piVar9 = __errno_location();
  iVar4 = *piVar9;
  if (iVar4 == 2) {
    _Var7 = getpid();
    iVar4 = 0;
    while( true ) {
      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);
      iVar12 = open64(pcVar10,0xc1,0x100);
      if (-1 < iVar12) break;
      if (*piVar9 != 0x11) {
        pcVar11 = strerror(*piVar9);
        pcVar8 = "%s: open: %s";
        goto LAB_00088d16;
      }
      iVar4 = iVar4 + 1;
      FUN_0001dd30(pcVar10);
    }
    puVar14 = local_a1;
    do {
      local_150 = local_a1;
      uVar1 = FUN_0006dc60();
      puVar13 = puVar14 + 1;
      *puVar14 = uVar1;
      puVar14 = puVar13;
    } while (puVar13 != local_61);
    sVar5 = write(iVar12,local_150,0x40);
    if ((-1 < sVar5) && (sVar5 != 0x40)) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");
    }
    if (sVar5 < 0) {
      close(iVar12);
      pcVar11 = strerror(*piVar9);
      pcVar8 = "%s: write: %s";
    }
    else {
      iVar4 = close(iVar12);
      if (iVar4 < 0) {
        pcVar11 = strerror(*piVar9);
        pcVar8 = "%s: close: %s";
      }
      else {
        iVar4 = link(pcVar10,__file);
        if ((iVar4 < 0) && (*piVar9 != 0x11)) {
          pcVar8 = strerror(*piVar9);
          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);
          *param_2 = iVar4;
          FUN_0001dd30(pcVar10);
          goto LAB_00088c6c;
        }
        iVar4 = unlink(pcVar10);
        if (-1 < iVar4) {
          FUN_0001dd30(pcVar10);
          iVar4 = open64(__file,0);
          if (-1 < iVar4) goto LAB_00088933;
          iVar4 = *piVar9;
          goto LAB_00088c8c;
        }
        pcVar11 = strerror(*piVar9);
        pcVar8 = "%s: unlink: %s";
      }
    }
LAB_00088d16:
    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);
    *param_2 = iVar4;
    FUN_0001dd30(pcVar10);
  }
  else {
LAB_00088c8c:
    pcVar10 = strerror(iVar4);
    pcVar8 = "%s: open: %s";
LAB_00088c5d:
    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);
    *param_2 = iVar4;
  }
LAB_00088c6c:
  FUN_0001dd30(__file);
  FUN_0001dd30(pcVar3);
  local_160 = 0;
LAB_00088a86:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0008d800();
  }
  return local_160;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000149a0
ADD EBX,0x444f7
SUB ESP,0x15c
MOV dword ptr [ESP + 0x28],EAX
MOV dword ptr [ESP + 0x20],EDX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x14c],EAX
XOR EAX,EAX
CALL 0x00082b90
SUB ESP,0x4
PUSH EAX
MOV ESI,EAX
LEA EAX,[EBX + 0xfffd1803]
PUSH EAX
LEA EAX,[EBX + 0xfffd1818]
PUSH EAX
CALL 0x0001cea0
MOV dword ptr [ESP],ESI
MOV EDI,EAX
MOV dword ptr [ESP + 0x20],EAX
CALL 0x0001dd30
ADD ESP,0x10
CMP byte ptr [EDI],0x2f
JNZ 0x00088db3
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x00083080
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00088c00
SUB ESP,0x4
LEA EAX,[EBX + 0xfffd183c]
MOV dword ptr [ESP + 0x18],EAX
PUSH EAX
LEA EAX,[EBX + 0xfffc5f53]
PUSH dword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x38],EAX
PUSH EAX
CALL 0x0001cea0
MOV dword ptr [ESP + 0x34],EAX
POP EDX
POP ECX
PUSH 0x0
PUSH EAX
CALL 0x00014490
ADD ESP,0x10
MOV EDI,EAX
LEA ESI,[ESP + 0xcb]
TEST EAX,EAX
JS 0x00088ab0
XOR EBP,EBP
LEA ESI,[ESI]
SUB ESP,0x4
PUSH 0x40
PUSH ESI
PUSH EDI
CALL 0x000140c0
ADD ESP,0x10
TEST EAX,EAX
JLE 0x00088c30
MOV EDX,0x40
SUB EDX,EBP
CMP EDX,EAX
JL 0x00088d8f
LEA EBP,[EBP + EAX*0x1 + 0x1]
CMP EBP,0x3f
JLE 0x00088938
SUB ESP,0xc
PUSH EDI
CALL 0x00014820
POP ECX
PUSH dword ptr [ESP + 0x30]
CALL 0x0001dd30
POP EDI
LEA EDI,[ESP + 0x44]
PUSH EDI
CALL 0x00070eb0
MOV dword ptr [ESP + 0xb4],0x40000000
ADD ESP,0xc
PUSH 0x4
LEA EBP,[ESP + 0xac]
PUSH EBP
PUSH EDI
CALL 0x00070f10
ADD ESP,0xc
PUSH 0x40
PUSH ESI
PUSH EDI
CALL 0x00070f10
POP EAX
PUSH dword ptr [ESP + 0x34]
CALL 0x00014460
ADD ESP,0xc
MOV EDX,EAX
MOV dword ptr [ESP + 0x10],EAX
BSWAP EDX
MOV dword ptr [ESP + 0xa8],EDX
PUSH 0x4
PUSH EBP
PUSH EDI
CALL 0x00070f10
ADD ESP,0xc
MOV EAX,dword ptr [ESP + 0x10]
PUSH EAX
PUSH dword ptr [ESP + 0x30]
PUSH EDI
CALL 0x00070f10
POP EAX
POP EDX
LEA EBP,[ESP + 0xb3]
PUSH EBP
PUSH EDI
MOV EDI,EBP
CALL 0x00071490
LEA EAX,[ESP + 0x11b]
MOV dword ptr [ESP + 0x24],EAX
MOV EBP,EAX
ADD ESP,0x10
LEA EAX,[EBX + 0xfffcefbb]
MOV dword ptr [ESP + 0xc],ESI
MOV ESI,EBP
MOV EBP,EAX
LEA ESI,[ESI]
LEA ESI,[ESI]
MOVZX EAX,byte ptr [EDI]
SUB ESP,0xc
ADD EDI,0x1
PUSH EAX
PUSH EBP
PUSH -0x1
PUSH 0x1
PUSH ESI
ADD ESI,0x2
CALL 0x000148b0
ADD ESP,0x20
CMP dword ptr [ESP + 0xc],EDI
JNZ 0x00088a20
MOV ESI,dword ptr [ESP + 0xc]
SUB ESP,0xc
PUSH dword ptr [ESP + 0x20]
CALL 0x0001cbd0
MOV EDI,EAX
POP EAX
POP EDX
PUSH 0x40
PUSH ESI
CALL 0x0001de10
ADD ESP,0xc
PUSH EDI
MOV ESI,dword ptr [ESP + 0x18]
PUSH ESI
PUSH dword ptr [ESP + 0x38]
CALL 0x0001cea0
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x1c],EAX
CALL 0x0001dd30
MOV dword ptr [ESP],EDI
CALL 0x0001dd30
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x14c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0xc]
JNZ 0x00088dae
ADD ESP,0x15c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x00014550
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [EAX]
CMP EAX,0x2
JNZ 0x00088c88
CALL 0x00014310
LEA EDI,[EBX + 0xfffd184e]
XOR ESI,ESI
MOV dword ptr [ESP + 0x1c],EAX
MOV EBP,EDI
JMP 0x00088afe
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
CMP EAX,0x11
JNZ 0x00088d00
SUB ESP,0xc
ADD ESI,0x1
PUSH EDI
CALL 0x0001dd30
ADD ESP,0x10
SUB ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x28]
PUSH EBP
CALL 0x0001cea0
ADD ESP,0x1c
PUSH 0x100
MOV EDI,EAX
PUSH 0xc1
PUSH EAX
CALL 0x00014490
ADD ESP,0x10
TEST EAX,EAX
JS 0x00088ae0
LEA ESI,[ESP + 0xcb]
MOV dword ptr [ESP + 0x14],EAX
MOV EBP,EDI
LEA EAX,[ESP + 0x10b]
MOV dword ptr [ESP + 0x1c],ESI
MOV EDI,EAX
LEA ESI,[ESI]
CALL 0x0006dc60
ADD ESI,0x1
MOV byte ptr [ESI + -0x1],AL
CMP ESI,EDI
JNZ 0x00088b50
MOV ESI,dword ptr [ESP + 0x1c]
SUB ESP,0x4
PUSH 0x40
PUSH ESI
PUSH dword ptr [ESP + 0x20]
CALL 0x00014480
ADD ESP,0x10
TEST EAX,EAX
JS 0x00088b82
CMP EAX,0x40
JNZ 0x00088dcf
TEST EAX,EAX
JS 0x00088d34
SUB ESP,0xc
PUSH dword ptr [ESP + 0x20]
CALL 0x00014820
ADD ESP,0x10
TEST EAX,EAX
JS 0x00088d59
SUB ESP,0x8
PUSH dword ptr [ESP + 0x2c]
PUSH EBP
CALL 0x00014570
ADD ESP,0x10
TEST EAX,EAX
JNS 0x00088cb6
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX]
CMP EAX,0x11
JZ 0x00088cb6
SUB ESP,0xc
PUSH EAX
CALL 0x00014380
ADD ESP,0xc
PUSH EAX
MOV EDI,dword ptr [ESP + 0x2c]
LEA EAX,[EBX + 0xfffd1896]
PUSH EDI
PUSH EAX
CALL 0x0001cea0
MOV ECX,dword ptr [ESP + 0x30]
MOV dword ptr [ECX],EAX
MOV dword ptr [ESP],EBP
CALL 0x0001dd30
JMP 0x00088c69
MOV EAX,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV dword ptr [EAX],ECX
PUSH dword ptr [ESP + 0x1c]
CALL 0x0001dd30
ADD ESP,0x10
MOV dword ptr [ESP + 0xc],0x0
JMP 0x00088a86
MOV dword ptr [ESP + 0x14],EAX
SUB ESP,0xc
PUSH EDI
CALL 0x00014820
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xfffd17f4]
TEST EDX,EDX
JNZ 0x00088ca2
SUB ESP,0x4
PUSH EAX
MOV EDI,dword ptr [ESP + 0x2c]
LEA EAX,[EBX + 0xfffd18b2]
PUSH EDI
PUSH EAX
CALL 0x0001cea0
MOV ECX,dword ptr [ESP + 0x30]
MOV dword ptr [ECX],EAX
MOV dword ptr [ESP],EDI
CALL 0x0001dd30
POP ECX
PUSH dword ptr [ESP + 0x1c]
CALL 0x0001dd30
ADD ESP,0x10
JMP 0x00088a86
SUB ESP,0xc
PUSH EAX
CALL 0x00014380
ADD ESP,0xc
PUSH EAX
MOV EDI,dword ptr [ESP + 0x2c]
LEA EAX,[EBX + 0xfffd1841]
PUSH EDI
JMP 0x00088c5d
CALL 0x00014550
SUB ESP,0xc
PUSH dword ptr [EAX]
CALL 0x00014380
ADD ESP,0x10
JMP 0x00088c4e
SUB ESP,0xc
PUSH EBP
CALL 0x00014240
ADD ESP,0x10
TEST EAX,EAX
JS 0x00088d74
SUB ESP,0xc
PUSH EBP
CALL 0x0001dd30
POP EDI
POP EBP
PUSH 0x0
PUSH dword ptr [ESP + 0x30]
CALL 0x00014490
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JNS 0x00088933
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x24]
PUSH dword ptr [EAX]
JMP 0x00088c8c
SUB ESP,0xc
MOV EBP,EDI
PUSH EAX
CALL 0x00014380
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffd1841]
PUSH EDI
PUSH EAX
CALL 0x0001cea0
MOV ECX,dword ptr [ESP + 0x30]
MOV dword ptr [ECX],EAX
MOV dword ptr [ESP],EBP
CALL 0x0001dd30
POP EAX
PUSH dword ptr [ESP + 0x30]
JMP 0x00088c6c
SUB ESP,0xc
PUSH dword ptr [ESP + 0x20]
CALL 0x00014820
POP EAX
MOV EAX,dword ptr [ESP + 0x24]
PUSH dword ptr [EAX]
CALL 0x00014380
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffd187a]
PUSH EBP
JMP 0x00088d16
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x24]
PUSH dword ptr [EAX]
CALL 0x00014380
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffd1888]
PUSH EBP
JMP 0x00088d16
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x24]
PUSH dword ptr [EAX]
CALL 0x00014380
ADD ESP,0xc
PUSH EAX
LEA EAX,[EBX + 0xfffd18a3]
PUSH EBP
JMP 0x00088d16
LEA EAX,[EBX + 0xfffd193c]
PUSH EAX
LEA EAX,[EBX + 0xfffd181e]
PUSH 0xd4
PUSH EAX
LEA EAX,[EBX + 0xfffd18e8]
PUSH EAX
CALL 0x00014880
CALL 0x0008d800
LEA EAX,[EBX + 0xfffd1928]
PUSH EAX
LEA EAX,[EBX + 0xfffd181e]
PUSH 0x2b
PUSH EAX
LEA EAX,[EBX + 0xfffd182d]
PUSH EAX
CALL 0x00014880
LEA EAX,[EBX + 0xfffd193c]
PUSH EAX
LEA EAX,[EBX + 0xfffd181e]
PUSH 0x89
PUSH EAX
LEA EAX,[EBX + 0xfffd185e]
PUSH EAX
CALL 0x00014880
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_00088870(char *param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }\n  return local_160;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_00088870(char *param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }\n  return local_160;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00088870(char *param_1,int *param_2)" identifier (parameter_list "(char *param_1,int *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }\n  return local_160;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__file;" primitive_type (pointer_declarator "*__file" * identifier) ;) (declaration "ssize_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "__pid_t _Var7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 local_160;" type_identifier identifier ;) (declaration "undefined1 *local_150;" type_identifier (pointer_declarator "*local_150" * identifier) ;) (declaration "undefined1 local_134 [108];" type_identifier (array_declarator "local_134 [108]" identifier [ number_literal ]) ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "undefined1 local_c1 [32];" type_identifier (array_declarator "local_c1 [32]" identifier [ number_literal ]) ;) (declaration "undefined1 local_a1 [64];" type_identifier (array_declarator "local_a1 [64]" identifier [ number_literal ]) ;) (declaration "undefined1 local_61 [65];" type_identifier (array_declarator "local_61 [65]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x88879;" (assignment_expression "uStack_14 = 0x88879" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = FUN_00082b90();" (assignment_expression "uVar2 = FUN_00082b90()" identifier = (call_expression "FUN_00082b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);" (assignment_expression "pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" identifier = (cast_expression "(char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" identifier (argument_list "("%s.%s","/tmp/putty-connshare",uVar2)" ( (string_literal ""%s.%s"" " string_content ") , (string_literal ""/tmp/putty-connshare"" " string_content ") , identifier ))))) ;) (expression_statement "FUN_0001dd30(uVar2);" (call_expression "FUN_0001dd30(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (if_statement "if (*pcVar3 != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" if (parenthesized_expression "(*pcVar3 != '/')" ( (binary_expression "*pcVar3 != '/'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" { comment (expression_statement "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");" (call_expression "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" identifier (argument_list "("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" ( (string_literal ""*parent == \'/\'"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_parentdir_name"" " string_content ") ))) ;) })) (expression_statement "iVar4 = FUN_00083080(pcVar3);" (assignment_expression "iVar4 = FUN_00083080(pcVar3)" identifier = (call_expression "FUN_00083080(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }" { (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00088a86;" goto statement_identifier ;) })) (expression_statement "__file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);" (assignment_expression "__file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" identifier = (cast_expression "(char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" identifier (argument_list "("%s/%s",pcVar3,&DAT_0009e5ac)" ( (string_literal ""%s/%s"" " string_content ") , identifier , (pointer_expression "&DAT_0009e5ac" & identifier) ))))) ;) (expression_statement "iVar4 = open64(__file,0);" (assignment_expression "iVar4 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (if_statement "if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }" { (labeled_statement "LAB_00088933:\n    iVar12 = 0;" statement_identifier : (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;)) (do_statement "do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);" do (compound_statement "{\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    }" { (expression_statement "sVar5 = read(iVar4,local_a1,0x40);" (assignment_expression "sVar5 = read(iVar4,local_a1,0x40)" identifier = (call_expression "read(iVar4,local_a1,0x40)" identifier (argument_list "(iVar4,local_a1,0x40)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" if (parenthesized_expression "(sVar5 < 1)" ( (binary_expression "sVar5 < 1" identifier < number_literal) )) (compound_statement "{\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" { (expression_statement "close(iVar4);" (call_expression "close(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "pcVar10 = "unexpected EOF";" (assignment_expression "pcVar10 = "unexpected EOF"" identifier = (string_literal ""unexpected EOF"" " string_content ")) ;) (if_statement "if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }" if (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }" { (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) })) (expression_statement "pcVar8 = "%s: read: %s";" (assignment_expression "pcVar8 = "%s: read: %s"" identifier = (string_literal ""%s: read: %s"" " string_content ")) ;) (goto_statement "goto LAB_00088c5d;" goto statement_identifier ;) })) (if_statement "if (0x40 - iVar12 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" if (parenthesized_expression "(0x40 - iVar12 < sVar5)" ( (binary_expression "0x40 - iVar12 < sVar5" (binary_expression "0x40 - iVar12" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" { comment (expression_statement "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");" (call_expression "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" identifier (argument_list "("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" ( (string_literal ""0 < ret && ret <= SALT_SIZE - i"" " string_content ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_dirname"" " string_content ") ))) ;) })) (expression_statement "iVar12 = iVar12 + 1 + sVar5;" (assignment_expression "iVar12 = iVar12 + 1 + sVar5" identifier = (binary_expression "iVar12 + 1 + sVar5" (binary_expression "iVar12 + 1" identifier + number_literal) + identifier)) ;) }) while (parenthesized_expression "(iVar12 < 0x40)" ( (binary_expression "iVar12 < 0x40" identifier < number_literal) )) ;) (expression_statement "close(iVar4);" (call_expression "close(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "FUN_00070eb0(local_134);" (call_expression "FUN_00070eb0(local_134)" identifier (argument_list "(local_134)" ( identifier ))) ;) (expression_statement "local_c8 = 0x40000000;" (assignment_expression "local_c8 = 0x40000000" identifier = number_literal) ;) (expression_statement "FUN_00070f10(local_134,&local_c8,4);" (call_expression "FUN_00070f10(local_134,&local_c8,4)" identifier (argument_list "(local_134,&local_c8,4)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal ))) ;) (expression_statement "FUN_00070f10(local_134,local_a1,0x40);" (call_expression "FUN_00070f10(local_134,local_a1,0x40)" identifier (argument_list "(local_134,local_a1,0x40)" ( identifier , identifier , number_literal ))) ;) (expression_statement "sVar6 = strlen(param_1);" (assignment_expression "sVar6 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;" (assignment_expression "local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18" identifier = (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18" (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8" (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8" (binary_expression "sVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(sVar6 & 0xff0000) >> 8" (parenthesized_expression "(sVar6 & 0xff0000)" ( (binary_expression "sVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(sVar6 & 0xff00) << 8" (parenthesized_expression "(sVar6 & 0xff00)" ( (binary_expression "sVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "sVar6 << 0x18" identifier << number_literal))) ;) (expression_statement "FUN_00070f10(local_134,&local_c8,4);" (call_expression "FUN_00070f10(local_134,&local_c8,4)" identifier (argument_list "(local_134,&local_c8,4)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal ))) ;) (expression_statement "FUN_00070f10(local_134,param_1,sVar6);" (call_expression "FUN_00070f10(local_134,param_1,sVar6)" identifier (argument_list "(local_134,param_1,sVar6)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar14 = local_c1;" (assignment_expression "puVar14 = local_c1" identifier = identifier) ;) (expression_statement "FUN_00071490(local_134,puVar14);" (call_expression "FUN_00071490(local_134,puVar14)" identifier (argument_list "(local_134,puVar14)" ( identifier , identifier ))) ;) (expression_statement "puVar13 = local_61;" (assignment_expression "puVar13 = local_61" identifier = identifier) ;) (do_statement "do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);" do (compound_statement "{\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    }" { (expression_statement "uVar1 = *puVar14;" (assignment_expression "uVar1 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "__sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);" (call_expression "__sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1)" identifier (argument_list "(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0009bd2b" & identifier) , identifier ))) ;) (expression_statement "puVar13 = puVar13 + 2;" (assignment_expression "puVar13 = puVar13 + 2" identifier = (binary_expression "puVar13 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_a1 != puVar14)" ( (binary_expression "local_a1 != puVar14" identifier != identifier) )) ;) (expression_statement "uVar2 = FUN_0001cbd0(local_61);" (assignment_expression "uVar2 = FUN_0001cbd0(local_61)" identifier = (call_expression "FUN_0001cbd0(local_61)" identifier (argument_list "(local_61)" ( identifier )))) ;) (expression_statement "FUN_0001de10(local_a1,0x40);" (call_expression "FUN_0001de10(local_a1,0x40)" identifier (argument_list "(local_a1,0x40)" ( identifier , number_literal ))) ;) (expression_statement "local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);" (assignment_expression "local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2)" identifier = (call_expression "FUN_0001cea0("%s/%s",pcVar3,uVar2)" identifier (argument_list "("%s/%s",pcVar3,uVar2)" ( (string_literal ""%s/%s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "FUN_0001dd30(uVar2);" (call_expression "FUN_0001dd30(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (goto_statement "goto LAB_00088a86;" goto statement_identifier ;) })) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" if (parenthesized_expression "(iVar4 == 2)" ( (binary_expression "iVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }" { (expression_statement "_Var7 = getpid();" (assignment_expression "_Var7 = getpid()" identifier = (call_expression "getpid()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }" { (expression_statement "pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);" (assignment_expression "pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" identifier = (cast_expression "(char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" identifier (argument_list "("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" ( (string_literal ""%s/%s.tmp.%d.%d"" " string_content ") , identifier , (pointer_expression "&DAT_0009e5ac" & identifier) , identifier , identifier ))))) ;) (expression_statement "iVar12 = open64(pcVar10,0xc1,0x100);" (assignment_expression "iVar12 = open64(pcVar10,0xc1,0x100)" identifier = (call_expression "open64(pcVar10,0xc1,0x100)" identifier (argument_list "(pcVar10,0xc1,0x100)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (-1 < iVar12) break;" if (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) (break_statement "break;" break ;)) (if_statement "if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" if (parenthesized_expression "(*piVar9 != 0x11)" ( (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" { (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: open: %s";" (assignment_expression "pcVar8 = "%s: open: %s"" identifier = (string_literal ""%s: open: %s"" " string_content ")) ;) (goto_statement "goto LAB_00088d16;" goto statement_identifier ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (expression_statement "puVar14 = local_a1;" (assignment_expression "puVar14 = local_a1" identifier = identifier) ;) (do_statement "do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);" do (compound_statement "{\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    }" { (expression_statement "local_150 = local_a1;" (assignment_expression "local_150 = local_a1" identifier = identifier) ;) (expression_statement "uVar1 = FUN_0006dc60();" (assignment_expression "uVar1 = FUN_0006dc60()" identifier = (call_expression "FUN_0006dc60()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar13 = puVar14 + 1;" (assignment_expression "puVar13 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = uVar1;" (assignment_expression "*puVar14 = uVar1" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "puVar14 = puVar13;" (assignment_expression "puVar14 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != local_61)" ( (binary_expression "puVar13 != local_61" identifier != identifier) )) ;) (expression_statement "sVar5 = write(iVar12,local_150,0x40);" (assignment_expression "sVar5 = write(iVar12,local_150,0x40)" identifier = (call_expression "write(iVar12,local_150,0x40)" identifier (argument_list "(iVar12,local_150,0x40)" ( identifier , identifier , number_literal )))) ;) (if_statement "if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" if (parenthesized_expression "((-1 < sVar5) && (sVar5 != 0x40))" ( (binary_expression "(-1 < sVar5) && (sVar5 != 0x40)" (parenthesized_expression "(-1 < sVar5)" ( (binary_expression "-1 < sVar5" number_literal < identifier) )) && (parenthesized_expression "(sVar5 != 0x40)" ( (binary_expression "sVar5 != 0x40" identifier != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" { comment (expression_statement "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");" (call_expression "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" identifier (argument_list "("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" ( (string_literal ""ret < 0 || ret == SALT_SIZE"" " string_content ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_dirname"" " string_content ") ))) ;) })) (if_statement "if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" if (parenthesized_expression "(sVar5 < 0)" ( (binary_expression "sVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }" { (expression_statement "close(iVar12);" (call_expression "close(iVar12)" identifier (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: write: %s";" (assignment_expression "pcVar8 = "%s: write: %s"" identifier = (string_literal ""%s: write: %s"" " string_content ")) ;) }) (else_clause "else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" else (compound_statement "{\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" { (expression_statement "iVar4 = close(iVar12);" (assignment_expression "iVar4 = close(iVar12)" identifier = (call_expression "close(iVar12)" identifier (argument_list "(iVar12)" ( identifier )))) ;) (if_statement "if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }" { (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: close: %s";" (assignment_expression "pcVar8 = "%s: close: %s"" identifier = (string_literal ""%s: close: %s"" " string_content ")) ;) }) (else_clause "else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" else (compound_statement "{\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" { (expression_statement "iVar4 = link(pcVar10,__file);" (assignment_expression "iVar4 = link(pcVar10,__file)" identifier = (call_expression "link(pcVar10,__file)" identifier (argument_list "(pcVar10,__file)" ( identifier , identifier )))) ;) (if_statement "if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }" if (parenthesized_expression "((iVar4 < 0) && (*piVar9 != 0x11))" ( (binary_expression "(iVar4 < 0) && (*piVar9 != 0x11)" (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) && (parenthesized_expression "(*piVar9 != 0x11)" ( (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" * identifier) != number_literal) ))) )) (compound_statement "{\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }" { (expression_statement "pcVar8 = strerror(*piVar9);" (assignment_expression "pcVar8 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);" (assignment_expression "iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8)" identifier = (call_expression "FUN_0001cea0("%s: link: %s",__file,pcVar8)" identifier (argument_list "("%s: link: %s",__file,pcVar8)" ( (string_literal ""%s: link: %s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (goto_statement "goto LAB_00088c6c;" goto statement_identifier ;) })) (expression_statement "iVar4 = unlink(pcVar10);" (assignment_expression "iVar4 = unlink(pcVar10)" identifier = (call_expression "unlink(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier )))) ;) (if_statement "if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" { (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "iVar4 = open64(__file,0);" (assignment_expression "iVar4 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (if_statement "if (-1 < iVar4) goto LAB_00088933;" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (goto_statement "goto LAB_00088933;" goto statement_identifier ;)) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto LAB_00088c8c;" goto statement_identifier ;) })) (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: unlink: %s";" (assignment_expression "pcVar8 = "%s: unlink: %s"" identifier = (string_literal ""%s: unlink: %s"" " string_content ")) ;) }))) }))) (labeled_statement "LAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);" statement_identifier : (expression_statement "iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);" (assignment_expression "iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11)" identifier = (call_expression "FUN_0001cea0(pcVar8,pcVar10,pcVar11)" identifier (argument_list "(pcVar8,pcVar10,pcVar11)" ( identifier , identifier , identifier )))) ;)) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) }) (else_clause "else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" else (compound_statement "{\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" { (labeled_statement "LAB_00088c8c:\n    pcVar10 = strerror(iVar4);" statement_identifier : (expression_statement "pcVar10 = strerror(iVar4);" (assignment_expression "pcVar10 = strerror(iVar4)" identifier = (call_expression "strerror(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;)) (expression_statement "pcVar8 = "%s: open: %s";" (assignment_expression "pcVar8 = "%s: open: %s"" identifier = (string_literal ""%s: open: %s"" " string_content ")) ;) (labeled_statement "LAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);" statement_identifier : (expression_statement "iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);" (assignment_expression "iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10)" identifier = (call_expression "FUN_0001cea0(pcVar8,__file,pcVar10)" identifier (argument_list "(pcVar8,__file,pcVar10)" ( identifier , identifier , identifier )))) ;)) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) }))) (labeled_statement "LAB_00088c6c:\n  FUN_0001dd30(__file);" statement_identifier : (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;)) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0008d800();\n  }" { comment (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_160;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nchar * __regparm3 make_dirname(char *pi_name,char **logtext)\n\n{\n  int iVar1;\n  uchar uVar2;\n  char *pcVar3;\n  char *dirname;\n  int iVar4;\n  ssize_t sVar5;\n  size_t len;\n  __pid_t _Var6;\n  char *pcVar7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  int iVar11;\n  uchar *puVar12;\n  uchar *puVar13;\n  int in_GS_OFFSET;\n  char *local_160;\n  uchar *local_150;\n  SHA256_State sha;\n  uchar lenbuf [4];\n  uchar digest [32];\n  uchar saltbuf [64];\n  char retbuf [65];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pcVar3 = get_username();\n  dirname = dupprintf("%s.%s","/tmp/putty-connshare",pcVar3);\n  safefree(pcVar3);\n  if (*dirname != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  pcVar3 = make_dir_and_check_ours(dirname);\n  if (pcVar3 != (char *)0x0) {\n    *logtext = pcVar3;\n    safefree(dirname);\n    local_160 = (char *)0x0;\n    goto LAB_00088a86;\n  }\n  pcVar3 = dupprintf("%s/%s",dirname,&DAT_0009e5ac);\n  iVar4 = open64(pcVar3,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar11 = 0;\n    do {\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    } while (iVar11 < 0x40);\n    close(iVar4);\n    safefree(pcVar3);\n    SHA256_Init((SHA256_CTX *)&sha);\n    lenbuf[0] = '\0';\n    lenbuf[1] = '\0';\n    lenbuf[2] = '\0';\n    lenbuf[3] = '@';\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,saltbuf,0x40);\n    len = strlen(pi_name);\n    lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,pi_name,len);\n    puVar13 = digest;\n    SHA256_Final(&sha,puVar13);\n    pcVar3 = retbuf;\n    do {\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    } while (saltbuf != puVar13);\n    pcVar3 = dupstr(retbuf);\n    smemclr(saltbuf,0x40);\n    local_160 = dupprintf("%s/%s",dirname,pcVar3);\n    safefree(dirname);\n    safefree(pcVar3);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var6 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }\n    puVar13 = saltbuf;\n    do {\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    } while (puVar12 != (uchar *)retbuf);\n    sVar5 = write(iVar11,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);\n    *logtext = pcVar7;\n    safefree(pcVar8);\n  }\n  else {\nLAB_00088c8c:\n    pcVar8 = strerror(iVar4);\n    pcVar7 = "%s: open: %s";\nLAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);\n    *logtext = pcVar8;\n  }\nLAB_00088c6c:\n  safefree(pcVar3);\n  safefree(dirname);\n  local_160 = (char *)0x0;\nLAB_00088a86:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_160;\n}\n\n" comment (function_definition "char * __regparm3 make_dirname(char *pi_name,char **logtext)\n\n{\n  int iVar1;\n  uchar uVar2;\n  char *pcVar3;\n  char *dirname;\n  int iVar4;\n  ssize_t sVar5;\n  size_t len;\n  __pid_t _Var6;\n  char *pcVar7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  int iVar11;\n  uchar *puVar12;\n  uchar *puVar13;\n  int in_GS_OFFSET;\n  char *local_160;\n  uchar *local_150;\n  SHA256_State sha;\n  uchar lenbuf [4];\n  uchar digest [32];\n  uchar saltbuf [64];\n  char retbuf [65];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pcVar3 = get_username();\n  dirname = dupprintf("%s.%s","/tmp/putty-connshare",pcVar3);\n  safefree(pcVar3);\n  if (*dirname != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  pcVar3 = make_dir_and_check_ours(dirname);\n  if (pcVar3 != (char *)0x0) {\n    *logtext = pcVar3;\n    safefree(dirname);\n    local_160 = (char *)0x0;\n    goto LAB_00088a86;\n  }\n  pcVar3 = dupprintf("%s/%s",dirname,&DAT_0009e5ac);\n  iVar4 = open64(pcVar3,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar11 = 0;\n    do {\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    } while (iVar11 < 0x40);\n    close(iVar4);\n    safefree(pcVar3);\n    SHA256_Init((SHA256_CTX *)&sha);\n    lenbuf[0] = '\0';\n    lenbuf[1] = '\0';\n    lenbuf[2] = '\0';\n    lenbuf[3] = '@';\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,saltbuf,0x40);\n    len = strlen(pi_name);\n    lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,pi_name,len);\n    puVar13 = digest;\n    SHA256_Final(&sha,puVar13);\n    pcVar3 = retbuf;\n    do {\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    } while (saltbuf != puVar13);\n    pcVar3 = dupstr(retbuf);\n    smemclr(saltbuf,0x40);\n    local_160 = dupprintf("%s/%s",dirname,pcVar3);\n    safefree(dirname);\n    safefree(pcVar3);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var6 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }\n    puVar13 = saltbuf;\n    do {\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    } while (puVar12 != (uchar *)retbuf);\n    sVar5 = write(iVar11,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);\n    *logtext = pcVar7;\n    safefree(pcVar8);\n  }\n  else {\nLAB_00088c8c:\n    pcVar8 = strerror(iVar4);\n    pcVar7 = "%s: open: %s";\nLAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);\n    *logtext = pcVar8;\n  }\nLAB_00088c6c:\n  safefree(pcVar3);\n  safefree(dirname);\n  local_160 = (char *)0x0;\nLAB_00088a86:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_160;\n}" primitive_type (pointer_declarator "* __regparm3 make_dirname(char *pi_name,char **logtext)" * (ERROR "__regparm3" identifier) (function_declarator "make_dirname(char *pi_name,char **logtext)" identifier (parameter_list "(char *pi_name,char **logtext)" ( (parameter_declaration "char *pi_name" primitive_type (pointer_declarator "*pi_name" * identifier)) , (parameter_declaration "char **logtext" primitive_type (pointer_declarator "**logtext" * (pointer_declarator "*logtext" * identifier))) )))) (compound_statement "{\n  int iVar1;\n  uchar uVar2;\n  char *pcVar3;\n  char *dirname;\n  int iVar4;\n  ssize_t sVar5;\n  size_t len;\n  __pid_t _Var6;\n  char *pcVar7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  int iVar11;\n  uchar *puVar12;\n  uchar *puVar13;\n  int in_GS_OFFSET;\n  char *local_160;\n  uchar *local_150;\n  SHA256_State sha;\n  uchar lenbuf [4];\n  uchar digest [32];\n  uchar saltbuf [64];\n  char retbuf [65];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pcVar3 = get_username();\n  dirname = dupprintf("%s.%s","/tmp/putty-connshare",pcVar3);\n  safefree(pcVar3);\n  if (*dirname != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  pcVar3 = make_dir_and_check_ours(dirname);\n  if (pcVar3 != (char *)0x0) {\n    *logtext = pcVar3;\n    safefree(dirname);\n    local_160 = (char *)0x0;\n    goto LAB_00088a86;\n  }\n  pcVar3 = dupprintf("%s/%s",dirname,&DAT_0009e5ac);\n  iVar4 = open64(pcVar3,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar11 = 0;\n    do {\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    } while (iVar11 < 0x40);\n    close(iVar4);\n    safefree(pcVar3);\n    SHA256_Init((SHA256_CTX *)&sha);\n    lenbuf[0] = '\0';\n    lenbuf[1] = '\0';\n    lenbuf[2] = '\0';\n    lenbuf[3] = '@';\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,saltbuf,0x40);\n    len = strlen(pi_name);\n    lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,pi_name,len);\n    puVar13 = digest;\n    SHA256_Final(&sha,puVar13);\n    pcVar3 = retbuf;\n    do {\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    } while (saltbuf != puVar13);\n    pcVar3 = dupstr(retbuf);\n    smemclr(saltbuf,0x40);\n    local_160 = dupprintf("%s/%s",dirname,pcVar3);\n    safefree(dirname);\n    safefree(pcVar3);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var6 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }\n    puVar13 = saltbuf;\n    do {\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    } while (puVar12 != (uchar *)retbuf);\n    sVar5 = write(iVar11,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);\n    *logtext = pcVar7;\n    safefree(pcVar8);\n  }\n  else {\nLAB_00088c8c:\n    pcVar8 = strerror(iVar4);\n    pcVar7 = "%s: open: %s";\nLAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);\n    *logtext = pcVar8;\n  }\nLAB_00088c6c:\n  safefree(pcVar3);\n  safefree(dirname);\n  local_160 = (char *)0x0;\nLAB_00088a86:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_160;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uchar uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *dirname;" primitive_type (pointer_declarator "*dirname" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ssize_t sVar5;" primitive_type identifier ;) (declaration "size_t len;" primitive_type identifier ;) (declaration "__pid_t _Var6;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uchar *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "uchar *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "char *local_160;" primitive_type (pointer_declarator "*local_160" * identifier) ;) (declaration "uchar *local_150;" type_identifier (pointer_declarator "*local_150" * identifier) ;) (declaration "SHA256_State sha;" type_identifier identifier ;) (declaration "uchar lenbuf [4];" type_identifier (array_declarator "lenbuf [4]" identifier [ number_literal ]) ;) (declaration "uchar digest [32];" type_identifier (array_declarator "digest [32]" identifier [ number_literal ]) ;) (declaration "uchar saltbuf [64];" type_identifier (array_declarator "saltbuf [64]" identifier [ number_literal ]) ;) (declaration "char retbuf [65];" primitive_type (array_declarator "retbuf [65]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = get_username();" (assignment_expression "pcVar3 = get_username()" identifier = (call_expression "get_username()" identifier (argument_list "()" ( )))) ;) (expression_statement "dirname = dupprintf("%s.%s","/tmp/putty-connshare",pcVar3);" (assignment_expression "dirname = dupprintf("%s.%s","/tmp/putty-connshare",pcVar3)" identifier = (call_expression "dupprintf("%s.%s","/tmp/putty-connshare",pcVar3)" identifier (argument_list "("%s.%s","/tmp/putty-connshare",pcVar3)" ( (string_literal ""%s.%s"" " string_content ") , (string_literal ""/tmp/putty-connshare"" " string_content ") , identifier )))) ;) (expression_statement "safefree(pcVar3);" (call_expression "safefree(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (if_statement "if (*dirname != '/') {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" if (parenthesized_expression "(*dirname != '/')" ( (binary_expression "*dirname != '/'" (pointer_expression "*dirname" * identifier) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" { comment (expression_statement "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");" (call_expression "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" identifier (argument_list "("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" ( (string_literal ""*parent == \'/\'"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_parentdir_name"" " string_content ") ))) ;) })) (expression_statement "pcVar3 = make_dir_and_check_ours(dirname);" (assignment_expression "pcVar3 = make_dir_and_check_ours(dirname)" identifier = (call_expression "make_dir_and_check_ours(dirname)" identifier (argument_list "(dirname)" ( identifier )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n    *logtext = pcVar3;\n    safefree(dirname);\n    local_160 = (char *)0x0;\n    goto LAB_00088a86;\n  }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *logtext = pcVar3;\n    safefree(dirname);\n    local_160 = (char *)0x0;\n    goto LAB_00088a86;\n  }" { (expression_statement "*logtext = pcVar3;" (assignment_expression "*logtext = pcVar3" (pointer_expression "*logtext" * identifier) = identifier) ;) (expression_statement "safefree(dirname);" (call_expression "safefree(dirname)" identifier (argument_list "(dirname)" ( identifier ))) ;) (expression_statement "local_160 = (char *)0x0;" (assignment_expression "local_160 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00088a86;" goto statement_identifier ;) })) (expression_statement "pcVar3 = dupprintf("%s/%s",dirname,&DAT_0009e5ac);" (assignment_expression "pcVar3 = dupprintf("%s/%s",dirname,&DAT_0009e5ac)" identifier = (call_expression "dupprintf("%s/%s",dirname,&DAT_0009e5ac)" identifier (argument_list "("%s/%s",dirname,&DAT_0009e5ac)" ( (string_literal ""%s/%s"" " string_content ") , identifier , (pointer_expression "&DAT_0009e5ac" & identifier) )))) ;) (expression_statement "iVar4 = open64(pcVar3,0);" (assignment_expression "iVar4 = open64(pcVar3,0)" identifier = (call_expression "open64(pcVar3,0)" identifier (argument_list "(pcVar3,0)" ( identifier , number_literal )))) ;) (if_statement "if (-1 < iVar4) {\nLAB_00088933:\n    iVar11 = 0;\n    do {\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    } while (iVar11 < 0x40);\n    close(iVar4);\n    safefree(pcVar3);\n    SHA256_Init((SHA256_CTX *)&sha);\n    lenbuf[0] = '\0';\n    lenbuf[1] = '\0';\n    lenbuf[2] = '\0';\n    lenbuf[3] = '@';\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,saltbuf,0x40);\n    len = strlen(pi_name);\n    lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,pi_name,len);\n    puVar13 = digest;\n    SHA256_Final(&sha,puVar13);\n    pcVar3 = retbuf;\n    do {\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    } while (saltbuf != puVar13);\n    pcVar3 = dupstr(retbuf);\n    smemclr(saltbuf,0x40);\n    local_160 = dupprintf("%s/%s",dirname,pcVar3);\n    safefree(dirname);\n    safefree(pcVar3);\n    goto LAB_00088a86;\n  }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\nLAB_00088933:\n    iVar11 = 0;\n    do {\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    } while (iVar11 < 0x40);\n    close(iVar4);\n    safefree(pcVar3);\n    SHA256_Init((SHA256_CTX *)&sha);\n    lenbuf[0] = '\0';\n    lenbuf[1] = '\0';\n    lenbuf[2] = '\0';\n    lenbuf[3] = '@';\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,saltbuf,0x40);\n    len = strlen(pi_name);\n    lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);\n    SHA256_Bytes(&sha,lenbuf,4);\n    SHA256_Bytes(&sha,pi_name,len);\n    puVar13 = digest;\n    SHA256_Final(&sha,puVar13);\n    pcVar3 = retbuf;\n    do {\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    } while (saltbuf != puVar13);\n    pcVar3 = dupstr(retbuf);\n    smemclr(saltbuf,0x40);\n    local_160 = dupprintf("%s/%s",dirname,pcVar3);\n    safefree(dirname);\n    safefree(pcVar3);\n    goto LAB_00088a86;\n  }" { (labeled_statement "LAB_00088933:\n    iVar11 = 0;" statement_identifier : (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;)) (do_statement "do {\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    } while (iVar11 < 0x40);" do (compound_statement "{\n      sVar5 = read(iVar4,saltbuf,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar11 = iVar11 + 1 + sVar5;\n    }" { (expression_statement "sVar5 = read(iVar4,saltbuf,0x40);" (assignment_expression "sVar5 = read(iVar4,saltbuf,0x40)" identifier = (call_expression "read(iVar4,saltbuf,0x40)" identifier (argument_list "(iVar4,saltbuf,0x40)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (sVar5 < 1) {\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" if (parenthesized_expression "(sVar5 < 1)" ( (binary_expression "sVar5 < 1" identifier < number_literal) )) (compound_statement "{\n        close(iVar4);\n        pcVar8 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }\n        pcVar7 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" { (expression_statement "close(iVar4);" (call_expression "close(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "pcVar8 = "unexpected EOF";" (assignment_expression "pcVar8 = "unexpected EOF"" identifier = (string_literal ""unexpected EOF"" " string_content ")) ;) (if_statement "if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }" if (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar9 = __errno_location();\n          pcVar8 = strerror(*piVar9);\n        }" { (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar8 = strerror(*piVar9);" (assignment_expression "pcVar8 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) })) (expression_statement "pcVar7 = "%s: read: %s";" (assignment_expression "pcVar7 = "%s: read: %s"" identifier = (string_literal ""%s: read: %s"" " string_content ")) ;) (goto_statement "goto LAB_00088c5d;" goto statement_identifier ;) })) (if_statement "if (0x40 - iVar11 < sVar5) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" if (parenthesized_expression "(0x40 - iVar11 < sVar5)" ( (binary_expression "0x40 - iVar11 < sVar5" (binary_expression "0x40 - iVar11" number_literal - identifier) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" { comment (expression_statement "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");" (call_expression "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" identifier (argument_list "("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" ( (string_literal ""0 < ret && ret <= SALT_SIZE - i"" " string_content ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_dirname"" " string_content ") ))) ;) })) (expression_statement "iVar11 = iVar11 + 1 + sVar5;" (assignment_expression "iVar11 = iVar11 + 1 + sVar5" identifier = (binary_expression "iVar11 + 1 + sVar5" (binary_expression "iVar11 + 1" identifier + number_literal) + identifier)) ;) }) while (parenthesized_expression "(iVar11 < 0x40)" ( (binary_expression "iVar11 < 0x40" identifier < number_literal) )) ;) (expression_statement "close(iVar4);" (call_expression "close(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "safefree(pcVar3);" (call_expression "safefree(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "SHA256_Init((SHA256_CTX *)&sha);" (call_expression "SHA256_Init((SHA256_CTX *)&sha)" identifier (argument_list "((SHA256_CTX *)&sha)" ( (cast_expression "(SHA256_CTX *)&sha" ( (type_descriptor "SHA256_CTX *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sha" & identifier)) ))) ;) (expression_statement "lenbuf[0] = '\0';" (assignment_expression "lenbuf[0] = '\0'" (subscript_expression "lenbuf[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "lenbuf[1] = '\0';" (assignment_expression "lenbuf[1] = '\0'" (subscript_expression "lenbuf[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "lenbuf[2] = '\0';" (assignment_expression "lenbuf[2] = '\0'" (subscript_expression "lenbuf[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "lenbuf[3] = '@';" (assignment_expression "lenbuf[3] = '@'" (subscript_expression "lenbuf[3]" identifier [ number_literal ]) = (char_literal "'@'" ' character ')) ;) (expression_statement "SHA256_Bytes(&sha,lenbuf,4);" (call_expression "SHA256_Bytes(&sha,lenbuf,4)" identifier (argument_list "(&sha,lenbuf,4)" ( (pointer_expression "&sha" & identifier) , identifier , number_literal ))) ;) (expression_statement "SHA256_Bytes(&sha,saltbuf,0x40);" (call_expression "SHA256_Bytes(&sha,saltbuf,0x40)" identifier (argument_list "(&sha,saltbuf,0x40)" ( (pointer_expression "&sha" & identifier) , identifier , number_literal ))) ;) (expression_statement "len = strlen(pi_name);" (assignment_expression "len = strlen(pi_name)" identifier = (call_expression "strlen(pi_name)" identifier (argument_list "(pi_name)" ( identifier )))) ;) (expression_statement "lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18);" (assignment_expression "lenbuf = (uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18)" identifier = (call_expression "(uchar  [4])(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18)" (parenthesized_expression "(uchar  [4])" ( (subscript_expression "uchar  [4]" identifier [ number_literal ]) )) (argument_list "(len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18)" ( (binary_expression "len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8 | len << 0x18" (binary_expression "len >> 0x18 | (len & 0xff0000) >> 8 | (len & 0xff00) << 8" (binary_expression "len >> 0x18 | (len & 0xff0000) >> 8" (binary_expression "len >> 0x18" identifier >> number_literal) | (binary_expression "(len & 0xff0000) >> 8" (parenthesized_expression "(len & 0xff0000)" ( (binary_expression "len & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(len & 0xff00) << 8" (parenthesized_expression "(len & 0xff00)" ( (binary_expression "len & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "len << 0x18" identifier << number_literal)) )))) ;) (expression_statement "SHA256_Bytes(&sha,lenbuf,4);" (call_expression "SHA256_Bytes(&sha,lenbuf,4)" identifier (argument_list "(&sha,lenbuf,4)" ( (pointer_expression "&sha" & identifier) , identifier , number_literal ))) ;) (expression_statement "SHA256_Bytes(&sha,pi_name,len);" (call_expression "SHA256_Bytes(&sha,pi_name,len)" identifier (argument_list "(&sha,pi_name,len)" ( (pointer_expression "&sha" & identifier) , identifier , identifier ))) ;) (expression_statement "puVar13 = digest;" (assignment_expression "puVar13 = digest" identifier = identifier) ;) (expression_statement "SHA256_Final(&sha,puVar13);" (call_expression "SHA256_Final(&sha,puVar13)" identifier (argument_list "(&sha,puVar13)" ( (pointer_expression "&sha" & identifier) , identifier ))) ;) (expression_statement "pcVar3 = retbuf;" (assignment_expression "pcVar3 = retbuf" identifier = identifier) ;) (do_statement "do {\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    } while (saltbuf != puVar13);" do (compound_statement "{\n      uVar2 = *puVar13;\n      puVar13 = puVar13 + 1;\n      __sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);\n      pcVar3 = pcVar3 + 2;\n    }" { (expression_statement "uVar2 = *puVar13;" (assignment_expression "uVar2 = *puVar13" identifier = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "__sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2);" (call_expression "__sprintf_chk(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2)" identifier (argument_list "(pcVar3,1,0xffffffff,&DAT_0009bd2b,uVar2)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0009bd2b" & identifier) , identifier ))) ;) (expression_statement "pcVar3 = pcVar3 + 2;" (assignment_expression "pcVar3 = pcVar3 + 2" identifier = (binary_expression "pcVar3 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(saltbuf != puVar13)" ( (binary_expression "saltbuf != puVar13" identifier != identifier) )) ;) (expression_statement "pcVar3 = dupstr(retbuf);" (assignment_expression "pcVar3 = dupstr(retbuf)" identifier = (call_expression "dupstr(retbuf)" identifier (argument_list "(retbuf)" ( identifier )))) ;) (expression_statement "smemclr(saltbuf,0x40);" (call_expression "smemclr(saltbuf,0x40)" identifier (argument_list "(saltbuf,0x40)" ( identifier , number_literal ))) ;) (expression_statement "local_160 = dupprintf("%s/%s",dirname,pcVar3);" (assignment_expression "local_160 = dupprintf("%s/%s",dirname,pcVar3)" identifier = (call_expression "dupprintf("%s/%s",dirname,pcVar3)" identifier (argument_list "("%s/%s",dirname,pcVar3)" ( (string_literal ""%s/%s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "safefree(dirname);" (call_expression "safefree(dirname)" identifier (argument_list "(dirname)" ( identifier ))) ;) (expression_statement "safefree(pcVar3);" (call_expression "safefree(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (goto_statement "goto LAB_00088a86;" goto statement_identifier ;) })) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar4 == 2) {\n    _Var6 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }\n    puVar13 = saltbuf;\n    do {\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    } while (puVar12 != (uchar *)retbuf);\n    sVar5 = write(iVar11,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);\n    *logtext = pcVar7;\n    safefree(pcVar8);\n  }\n  else {\nLAB_00088c8c:\n    pcVar8 = strerror(iVar4);\n    pcVar7 = "%s: open: %s";\nLAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);\n    *logtext = pcVar8;\n  }" if (parenthesized_expression "(iVar4 == 2)" ( (binary_expression "iVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    _Var6 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }\n    puVar13 = saltbuf;\n    do {\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    } while (puVar12 != (uchar *)retbuf);\n    sVar5 = write(iVar11,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);\n    *logtext = pcVar7;\n    safefree(pcVar8);\n  }" { (expression_statement "_Var6 = getpid();" (assignment_expression "_Var6 = getpid()" identifier = (call_expression "getpid()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);\n      iVar11 = open64(pcVar8,0xc1,0x100);\n      if (-1 < iVar11) break;\n      if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      safefree(pcVar8);\n    }" { (expression_statement "pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4);" (assignment_expression "pcVar8 = dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4)" identifier = (call_expression "dupprintf("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4)" identifier (argument_list "("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,iVar4)" ( (string_literal ""%s/%s.tmp.%d.%d"" " string_content ") , identifier , (pointer_expression "&DAT_0009e5ac" & identifier) , identifier , identifier )))) ;) (expression_statement "iVar11 = open64(pcVar8,0xc1,0x100);" (assignment_expression "iVar11 = open64(pcVar8,0xc1,0x100)" identifier = (call_expression "open64(pcVar8,0xc1,0x100)" identifier (argument_list "(pcVar8,0xc1,0x100)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (-1 < iVar11) break;" if (parenthesized_expression "(-1 < iVar11)" ( (binary_expression "-1 < iVar11" number_literal < identifier) )) (break_statement "break;" break ;)) (if_statement "if (*piVar9 != 0x11) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" if (parenthesized_expression "(*piVar9 != 0x11)" ( (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" { (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar7 = "%s: open: %s";" (assignment_expression "pcVar7 = "%s: open: %s"" identifier = (string_literal ""%s: open: %s"" " string_content ")) ;) (goto_statement "goto LAB_00088d16;" goto statement_identifier ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "safefree(pcVar8);" (call_expression "safefree(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) })) (expression_statement "puVar13 = saltbuf;" (assignment_expression "puVar13 = saltbuf" identifier = identifier) ;) (do_statement "do {\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    } while (puVar12 != (uchar *)retbuf);" do (compound_statement "{\n      local_150 = saltbuf;\n      iVar4 = random_byte();\n      puVar12 = puVar13 + 1;\n      *puVar13 = (uchar)iVar4;\n      puVar13 = puVar12;\n    }" { (expression_statement "local_150 = saltbuf;" (assignment_expression "local_150 = saltbuf" identifier = identifier) ;) (expression_statement "iVar4 = random_byte();" (assignment_expression "iVar4 = random_byte()" identifier = (call_expression "random_byte()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar12 = puVar13 + 1;" (assignment_expression "puVar12 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "*puVar13 = (uchar)iVar4;" (assignment_expression "*puVar13 = (uchar)iVar4" (pointer_expression "*puVar13" * identifier) = (cast_expression "(uchar)iVar4" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "puVar13 = puVar12;" (assignment_expression "puVar13 = puVar12" identifier = identifier) ;) }) while (parenthesized_expression "(puVar12 != (uchar *)retbuf)" ( (binary_expression "puVar12 != (uchar *)retbuf" identifier != (cast_expression "(uchar *)retbuf" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) ;) (expression_statement "sVar5 = write(iVar11,local_150,0x40);" (assignment_expression "sVar5 = write(iVar11,local_150,0x40)" identifier = (call_expression "write(iVar11,local_150,0x40)" identifier (argument_list "(iVar11,local_150,0x40)" ( identifier , identifier , number_literal )))) ;) (if_statement "if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" if (parenthesized_expression "((-1 < sVar5) && (sVar5 != 0x40))" ( (binary_expression "(-1 < sVar5) && (sVar5 != 0x40)" (parenthesized_expression "(-1 < sVar5)" ( (binary_expression "-1 < sVar5" number_literal < identifier) )) && (parenthesized_expression "(sVar5 != 0x40)" ( (binary_expression "sVar5 != 0x40" identifier != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" { comment (expression_statement "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");" (call_expression "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" identifier (argument_list "("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" ( (string_literal ""ret < 0 || ret == SALT_SIZE"" " string_content ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_dirname"" " string_content ") ))) ;) })) (if_statement "if (sVar5 < 0) {\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }" if (parenthesized_expression "(sVar5 < 0)" ( (binary_expression "sVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      close(iVar11);\n      pcVar10 = strerror(*piVar9);\n      pcVar7 = "%s: write: %s";\n    }" { (expression_statement "close(iVar11);" (call_expression "close(iVar11)" identifier (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar7 = "%s: write: %s";" (assignment_expression "pcVar7 = "%s: write: %s"" identifier = (string_literal ""%s: write: %s"" " string_content ")) ;) }) (else_clause "else {\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }" else (compound_statement "{\n      iVar4 = close(iVar11);\n      if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }\n    }" { (expression_statement "iVar4 = close(iVar11);" (assignment_expression "iVar4 = close(iVar11)" identifier = (call_expression "close(iVar11)" identifier (argument_list "(iVar11)" ( identifier )))) ;) (if_statement "if (iVar4 < 0) {\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: close: %s";\n      }" { (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar7 = "%s: close: %s";" (assignment_expression "pcVar7 = "%s: close: %s"" identifier = (string_literal ""%s: close: %s"" " string_content ")) ;) }) (else_clause "else {\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }" else (compound_statement "{\n        iVar4 = link(pcVar8,pcVar3);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar8);\n        if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar10 = strerror(*piVar9);\n        pcVar7 = "%s: unlink: %s";\n      }" { (expression_statement "iVar4 = link(pcVar8,pcVar3);" (assignment_expression "iVar4 = link(pcVar8,pcVar3)" identifier = (call_expression "link(pcVar8,pcVar3)" identifier (argument_list "(pcVar8,pcVar3)" ( identifier , identifier )))) ;) (if_statement "if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }" if (parenthesized_expression "((iVar4 < 0) && (*piVar9 != 0x11))" ( (binary_expression "(iVar4 < 0) && (*piVar9 != 0x11)" (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) && (parenthesized_expression "(*piVar9 != 0x11)" ( (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" * identifier) != number_literal) ))) )) (compound_statement "{\n          pcVar7 = strerror(*piVar9);\n          pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);\n          *logtext = pcVar7;\n          safefree(pcVar8);\n          goto LAB_00088c6c;\n        }" { (expression_statement "pcVar7 = strerror(*piVar9);" (assignment_expression "pcVar7 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7);" (assignment_expression "pcVar7 = dupprintf("%s: link: %s",pcVar3,pcVar7)" identifier = (call_expression "dupprintf("%s: link: %s",pcVar3,pcVar7)" identifier (argument_list "("%s: link: %s",pcVar3,pcVar7)" ( (string_literal ""%s: link: %s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "*logtext = pcVar7;" (assignment_expression "*logtext = pcVar7" (pointer_expression "*logtext" * identifier) = identifier) ;) (expression_statement "safefree(pcVar8);" (call_expression "safefree(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (goto_statement "goto LAB_00088c6c;" goto statement_identifier ;) })) (expression_statement "iVar4 = unlink(pcVar8);" (assignment_expression "iVar4 = unlink(pcVar8)" identifier = (call_expression "unlink(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier )))) ;) (if_statement "if (-1 < iVar4) {\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n          safefree(pcVar8);\n          iVar4 = open64(pcVar3,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" { (expression_statement "safefree(pcVar8);" (call_expression "safefree(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (expression_statement "iVar4 = open64(pcVar3,0);" (assignment_expression "iVar4 = open64(pcVar3,0)" identifier = (call_expression "open64(pcVar3,0)" identifier (argument_list "(pcVar3,0)" ( identifier , number_literal )))) ;) (if_statement "if (-1 < iVar4) goto LAB_00088933;" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (goto_statement "goto LAB_00088933;" goto statement_identifier ;)) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto LAB_00088c8c;" goto statement_identifier ;) })) (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar7 = "%s: unlink: %s";" (assignment_expression "pcVar7 = "%s: unlink: %s"" identifier = (string_literal ""%s: unlink: %s"" " string_content ")) ;) }))) }))) (labeled_statement "LAB_00088d16:\n    pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);" statement_identifier : (expression_statement "pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10);" (assignment_expression "pcVar7 = dupprintf(pcVar7,pcVar8,pcVar10)" identifier = (call_expression "dupprintf(pcVar7,pcVar8,pcVar10)" identifier (argument_list "(pcVar7,pcVar8,pcVar10)" ( identifier , identifier , identifier )))) ;)) (expression_statement "*logtext = pcVar7;" (assignment_expression "*logtext = pcVar7" (pointer_expression "*logtext" * identifier) = identifier) ;) (expression_statement "safefree(pcVar8);" (call_expression "safefree(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) }) (else_clause "else {\nLAB_00088c8c:\n    pcVar8 = strerror(iVar4);\n    pcVar7 = "%s: open: %s";\nLAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);\n    *logtext = pcVar8;\n  }" else (compound_statement "{\nLAB_00088c8c:\n    pcVar8 = strerror(iVar4);\n    pcVar7 = "%s: open: %s";\nLAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);\n    *logtext = pcVar8;\n  }" { (labeled_statement "LAB_00088c8c:\n    pcVar8 = strerror(iVar4);" statement_identifier : (expression_statement "pcVar8 = strerror(iVar4);" (assignment_expression "pcVar8 = strerror(iVar4)" identifier = (call_expression "strerror(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;)) (expression_statement "pcVar7 = "%s: open: %s";" (assignment_expression "pcVar7 = "%s: open: %s"" identifier = (string_literal ""%s: open: %s"" " string_content ")) ;) (labeled_statement "LAB_00088c5d:\n    pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);" statement_identifier : (expression_statement "pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8);" (assignment_expression "pcVar8 = dupprintf(pcVar7,pcVar3,pcVar8)" identifier = (call_expression "dupprintf(pcVar7,pcVar3,pcVar8)" identifier (argument_list "(pcVar7,pcVar3,pcVar8)" ( identifier , identifier , identifier )))) ;)) (expression_statement "*logtext = pcVar8;" (assignment_expression "*logtext = pcVar8" (pointer_expression "*logtext" * identifier) = identifier) ;) }))) (labeled_statement "LAB_00088c6c:\n  safefree(pcVar3);" statement_identifier : (expression_statement "safefree(pcVar3);" (call_expression "safefree(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;)) (expression_statement "safefree(dirname);" (call_expression "safefree(dirname)" identifier (argument_list "(dirname)" ( identifier ))) ;) (expression_statement "local_160 = (char *)0x0;" (assignment_expression "local_160 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00088a86:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_160;" return identifier ;) })))
(translation_unit "undefined4 __regparm3 FUN_00088870(char *param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return local_160;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_00088870(char *param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return local_160;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00088870(char *param_1,int *param_2)" identifier (parameter_list "(char *param_1,int *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return local_160;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__file;" primitive_type (pointer_declarator "*__file" * identifier) ;) (declaration "ssize_t sVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "__pid_t _Var7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 local_160;" type_identifier identifier ;) (declaration "undefined1 *local_150;" type_identifier (pointer_declarator "*local_150" * identifier) ;) (declaration "undefined1 local_134 [108];" type_identifier (array_declarator "local_134 [108]" identifier [ number_literal ]) ;) (declaration "uint local_c8;" type_identifier identifier ;) (declaration "undefined1 local_c1 [32];" type_identifier (array_declarator "local_c1 [32]" identifier [ number_literal ]) ;) (declaration "undefined1 local_a1 [64];" type_identifier (array_declarator "local_a1 [64]" identifier [ number_literal ]) ;) (declaration "undefined1 local_61 [65];" type_identifier (array_declarator "local_61 [65]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x88879;" (assignment_expression "uStack_14 = 0x88879" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = FUN_00082b90();" (assignment_expression "uVar2 = FUN_00082b90()" identifier = (call_expression "FUN_00082b90()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);" (assignment_expression "pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" identifier = (cast_expression "(char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" identifier (argument_list "("%s.%s","/tmp/putty-connshare",uVar2)" ( (string_literal ""%s.%s"" " string_content ") , (string_literal ""/tmp/putty-connshare"" " string_content ") , identifier ))))) ;) (expression_statement "FUN_0001dd30(uVar2);" (call_expression "FUN_0001dd30(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (if_statement "if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" if (parenthesized_expression "(*pcVar3 != '/')" ( (binary_expression "*pcVar3 != '/'" (pointer_expression "*pcVar3" * identifier) != (char_literal "'/'" ' character ')) )) (compound_statement "{\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" { (expression_statement "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");" (call_expression "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" identifier (argument_list "("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" ( (string_literal ""*parent == \'/\'"" " string_content escape_sequence string_content escape_sequence ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_parentdir_name"" " string_content ") ))) ;) })) (expression_statement "iVar4 = FUN_00083080(pcVar3);" (assignment_expression "iVar4 = FUN_00083080(pcVar3)" identifier = (call_expression "FUN_00083080(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier )))) ;) (if_statement "if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }" { (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00088a86;" goto statement_identifier ;) })) (expression_statement "__file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);" (assignment_expression "__file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" identifier = (cast_expression "(char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" identifier (argument_list "("%s/%s",pcVar3,&DAT_0009e5ac)" ( (string_literal ""%s/%s"" " string_content ") , identifier , (pointer_expression "&DAT_0009e5ac" & identifier) ))))) ;) (expression_statement "iVar4 = open64(__file,0);" (assignment_expression "iVar4 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (if_statement "if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }" { (labeled_statement "LAB_00088933:\n    iVar12 = 0;" statement_identifier : (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;)) (do_statement "do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);" do (compound_statement "{\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    }" { (expression_statement "sVar5 = read(iVar4,local_a1,0x40);" (assignment_expression "sVar5 = read(iVar4,local_a1,0x40)" identifier = (call_expression "read(iVar4,local_a1,0x40)" identifier (argument_list "(iVar4,local_a1,0x40)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" if (parenthesized_expression "(sVar5 < 1)" ( (binary_expression "sVar5 < 1" identifier < number_literal) )) (compound_statement "{\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" { (expression_statement "close(iVar4);" (call_expression "close(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "pcVar10 = "unexpected EOF";" (assignment_expression "pcVar10 = "unexpected EOF"" identifier = (string_literal ""unexpected EOF"" " string_content ")) ;) (if_statement "if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }" if (parenthesized_expression "(sVar5 != 0)" ( (binary_expression "sVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }" { (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) })) (expression_statement "pcVar8 = "%s: read: %s";" (assignment_expression "pcVar8 = "%s: read: %s"" identifier = (string_literal ""%s: read: %s"" " string_content ")) ;) (goto_statement "goto LAB_00088c5d;" goto statement_identifier ;) })) (if_statement "if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" if (parenthesized_expression "(0x40 - iVar12 < sVar5)" ( (binary_expression "0x40 - iVar12 < sVar5" (binary_expression "0x40 - iVar12" number_literal - identifier) < identifier) )) (compound_statement "{\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" { (expression_statement "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");" (call_expression "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" identifier (argument_list "("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" ( (string_literal ""0 < ret && ret <= SALT_SIZE - i"" " string_content ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_dirname"" " string_content ") ))) ;) })) (expression_statement "iVar12 = iVar12 + 1 + sVar5;" (assignment_expression "iVar12 = iVar12 + 1 + sVar5" identifier = (binary_expression "iVar12 + 1 + sVar5" (binary_expression "iVar12 + 1" identifier + number_literal) + identifier)) ;) }) while (parenthesized_expression "(iVar12 < 0x40)" ( (binary_expression "iVar12 < 0x40" identifier < number_literal) )) ;) (expression_statement "close(iVar4);" (call_expression "close(iVar4)" identifier (argument_list "(iVar4)" ( identifier ))) ;) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;) (expression_statement "FUN_00070eb0(local_134);" (call_expression "FUN_00070eb0(local_134)" identifier (argument_list "(local_134)" ( identifier ))) ;) (expression_statement "local_c8 = 0x40000000;" (assignment_expression "local_c8 = 0x40000000" identifier = number_literal) ;) (expression_statement "FUN_00070f10(local_134,&local_c8,4);" (call_expression "FUN_00070f10(local_134,&local_c8,4)" identifier (argument_list "(local_134,&local_c8,4)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal ))) ;) (expression_statement "FUN_00070f10(local_134,local_a1,0x40);" (call_expression "FUN_00070f10(local_134,local_a1,0x40)" identifier (argument_list "(local_134,local_a1,0x40)" ( identifier , identifier , number_literal ))) ;) (expression_statement "sVar6 = strlen(param_1);" (assignment_expression "sVar6 = strlen(param_1)" identifier = (call_expression "strlen(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;" (assignment_expression "local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18" identifier = (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18" (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8" (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8" (binary_expression "sVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(sVar6 & 0xff0000) >> 8" (parenthesized_expression "(sVar6 & 0xff0000)" ( (binary_expression "sVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(sVar6 & 0xff00) << 8" (parenthesized_expression "(sVar6 & 0xff00)" ( (binary_expression "sVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "sVar6 << 0x18" identifier << number_literal))) ;) (expression_statement "FUN_00070f10(local_134,&local_c8,4);" (call_expression "FUN_00070f10(local_134,&local_c8,4)" identifier (argument_list "(local_134,&local_c8,4)" ( identifier , (pointer_expression "&local_c8" & identifier) , number_literal ))) ;) (expression_statement "FUN_00070f10(local_134,param_1,sVar6);" (call_expression "FUN_00070f10(local_134,param_1,sVar6)" identifier (argument_list "(local_134,param_1,sVar6)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar14 = local_c1;" (assignment_expression "puVar14 = local_c1" identifier = identifier) ;) (expression_statement "FUN_00071490(local_134,puVar14);" (call_expression "FUN_00071490(local_134,puVar14)" identifier (argument_list "(local_134,puVar14)" ( identifier , identifier ))) ;) (expression_statement "puVar13 = local_61;" (assignment_expression "puVar13 = local_61" identifier = identifier) ;) (do_statement "do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);" do (compound_statement "{\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    }" { (expression_statement "uVar1 = *puVar14;" (assignment_expression "uVar1 = *puVar14" identifier = (pointer_expression "*puVar14" * identifier)) ;) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "__sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);" (call_expression "__sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1)" identifier (argument_list "(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1)" ( identifier , number_literal , number_literal , (pointer_expression "&DAT_0009bd2b" & identifier) , identifier ))) ;) (expression_statement "puVar13 = puVar13 + 2;" (assignment_expression "puVar13 = puVar13 + 2" identifier = (binary_expression "puVar13 + 2" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_a1 != puVar14)" ( (binary_expression "local_a1 != puVar14" identifier != identifier) )) ;) (expression_statement "uVar2 = FUN_0001cbd0(local_61);" (assignment_expression "uVar2 = FUN_0001cbd0(local_61)" identifier = (call_expression "FUN_0001cbd0(local_61)" identifier (argument_list "(local_61)" ( identifier )))) ;) (expression_statement "FUN_0001de10(local_a1,0x40);" (call_expression "FUN_0001de10(local_a1,0x40)" identifier (argument_list "(local_a1,0x40)" ( identifier , number_literal ))) ;) (expression_statement "local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);" (assignment_expression "local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2)" identifier = (call_expression "FUN_0001cea0("%s/%s",pcVar3,uVar2)" identifier (argument_list "("%s/%s",pcVar3,uVar2)" ( (string_literal ""%s/%s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "FUN_0001dd30(uVar2);" (call_expression "FUN_0001dd30(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (goto_statement "goto LAB_00088a86;" goto statement_identifier ;) })) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (if_statement "if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" if (parenthesized_expression "(iVar4 == 2)" ( (binary_expression "iVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }" { (expression_statement "_Var7 = getpid();" (assignment_expression "_Var7 = getpid()" identifier = (call_expression "getpid()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }" { (expression_statement "pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);" (assignment_expression "pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" identifier = (cast_expression "(char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" identifier (argument_list "("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" ( (string_literal ""%s/%s.tmp.%d.%d"" " string_content ") , identifier , (pointer_expression "&DAT_0009e5ac" & identifier) , identifier , identifier ))))) ;) (expression_statement "iVar12 = open64(pcVar10,0xc1,0x100);" (assignment_expression "iVar12 = open64(pcVar10,0xc1,0x100)" identifier = (call_expression "open64(pcVar10,0xc1,0x100)" identifier (argument_list "(pcVar10,0xc1,0x100)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (-1 < iVar12) break;" if (parenthesized_expression "(-1 < iVar12)" ( (binary_expression "-1 < iVar12" number_literal < identifier) )) (break_statement "break;" break ;)) (if_statement "if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" if (parenthesized_expression "(*piVar9 != 0x11)" ( (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" * identifier) != number_literal) )) (compound_statement "{\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" { (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: open: %s";" (assignment_expression "pcVar8 = "%s: open: %s"" identifier = (string_literal ""%s: open: %s"" " string_content ")) ;) (goto_statement "goto LAB_00088d16;" goto statement_identifier ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (expression_statement "puVar14 = local_a1;" (assignment_expression "puVar14 = local_a1" identifier = identifier) ;) (do_statement "do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);" do (compound_statement "{\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    }" { (expression_statement "local_150 = local_a1;" (assignment_expression "local_150 = local_a1" identifier = identifier) ;) (expression_statement "uVar1 = FUN_0006dc60();" (assignment_expression "uVar1 = FUN_0006dc60()" identifier = (call_expression "FUN_0006dc60()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar13 = puVar14 + 1;" (assignment_expression "puVar13 = puVar14 + 1" identifier = (binary_expression "puVar14 + 1" identifier + number_literal)) ;) (expression_statement "*puVar14 = uVar1;" (assignment_expression "*puVar14 = uVar1" (pointer_expression "*puVar14" * identifier) = identifier) ;) (expression_statement "puVar14 = puVar13;" (assignment_expression "puVar14 = puVar13" identifier = identifier) ;) }) while (parenthesized_expression "(puVar13 != local_61)" ( (binary_expression "puVar13 != local_61" identifier != identifier) )) ;) (expression_statement "sVar5 = write(iVar12,local_150,0x40);" (assignment_expression "sVar5 = write(iVar12,local_150,0x40)" identifier = (call_expression "write(iVar12,local_150,0x40)" identifier (argument_list "(iVar12,local_150,0x40)" ( identifier , identifier , number_literal )))) ;) (if_statement "if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" if (parenthesized_expression "((-1 < sVar5) && (sVar5 != 0x40))" ( (binary_expression "(-1 < sVar5) && (sVar5 != 0x40)" (parenthesized_expression "(-1 < sVar5)" ( (binary_expression "-1 < sVar5" number_literal < identifier) )) && (parenthesized_expression "(sVar5 != 0x40)" ( (binary_expression "sVar5 != 0x40" identifier != number_literal) ))) )) (compound_statement "{\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" { (expression_statement "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");" (call_expression "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" identifier (argument_list "("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" ( (string_literal ""ret < 0 || ret == SALT_SIZE"" " string_content ") , (string_literal ""unix/uxshare.c"" " string_content ") , number_literal , (string_literal ""make_dirname"" " string_content ") ))) ;) })) (if_statement "if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" if (parenthesized_expression "(sVar5 < 0)" ( (binary_expression "sVar5 < 0" identifier < number_literal) )) (compound_statement "{\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }" { (expression_statement "close(iVar12);" (call_expression "close(iVar12)" identifier (argument_list "(iVar12)" ( identifier ))) ;) (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: write: %s";" (assignment_expression "pcVar8 = "%s: write: %s"" identifier = (string_literal ""%s: write: %s"" " string_content ")) ;) }) (else_clause "else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" else (compound_statement "{\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" { (expression_statement "iVar4 = close(iVar12);" (assignment_expression "iVar4 = close(iVar12)" identifier = (call_expression "close(iVar12)" identifier (argument_list "(iVar12)" ( identifier )))) ;) (if_statement "if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" if (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) (compound_statement "{\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }" { (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: close: %s";" (assignment_expression "pcVar8 = "%s: close: %s"" identifier = (string_literal ""%s: close: %s"" " string_content ")) ;) }) (else_clause "else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" else (compound_statement "{\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" { (expression_statement "iVar4 = link(pcVar10,__file);" (assignment_expression "iVar4 = link(pcVar10,__file)" identifier = (call_expression "link(pcVar10,__file)" identifier (argument_list "(pcVar10,__file)" ( identifier , identifier )))) ;) (if_statement "if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }" if (parenthesized_expression "((iVar4 < 0) && (*piVar9 != 0x11))" ( (binary_expression "(iVar4 < 0) && (*piVar9 != 0x11)" (parenthesized_expression "(iVar4 < 0)" ( (binary_expression "iVar4 < 0" identifier < number_literal) )) && (parenthesized_expression "(*piVar9 != 0x11)" ( (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" * identifier) != number_literal) ))) )) (compound_statement "{\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }" { (expression_statement "pcVar8 = strerror(*piVar9);" (assignment_expression "pcVar8 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);" (assignment_expression "iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8)" identifier = (call_expression "FUN_0001cea0("%s: link: %s",__file,pcVar8)" identifier (argument_list "("%s: link: %s",__file,pcVar8)" ( (string_literal ""%s: link: %s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (goto_statement "goto LAB_00088c6c;" goto statement_identifier ;) })) (expression_statement "iVar4 = unlink(pcVar10);" (assignment_expression "iVar4 = unlink(pcVar10)" identifier = (call_expression "unlink(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier )))) ;) (if_statement "if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" { (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "iVar4 = open64(__file,0);" (assignment_expression "iVar4 = open64(__file,0)" identifier = (call_expression "open64(__file,0)" identifier (argument_list "(__file,0)" ( identifier , number_literal )))) ;) (if_statement "if (-1 < iVar4) goto LAB_00088933;" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (goto_statement "goto LAB_00088933;" goto statement_identifier ;)) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto LAB_00088c8c;" goto statement_identifier ;) })) (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" identifier = (call_expression "strerror(*piVar9)" identifier (argument_list "(*piVar9)" ( (pointer_expression "*piVar9" * identifier) )))) ;) (expression_statement "pcVar8 = "%s: unlink: %s";" (assignment_expression "pcVar8 = "%s: unlink: %s"" identifier = (string_literal ""%s: unlink: %s"" " string_content ")) ;) }))) }))) (labeled_statement "LAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);" statement_identifier : (expression_statement "iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);" (assignment_expression "iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11)" identifier = (call_expression "FUN_0001cea0(pcVar8,pcVar10,pcVar11)" identifier (argument_list "(pcVar8,pcVar10,pcVar11)" ( identifier , identifier , identifier )))) ;)) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) }) (else_clause "else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" else (compound_statement "{\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" { (labeled_statement "LAB_00088c8c:\n    pcVar10 = strerror(iVar4);" statement_identifier : (expression_statement "pcVar10 = strerror(iVar4);" (assignment_expression "pcVar10 = strerror(iVar4)" identifier = (call_expression "strerror(iVar4)" identifier (argument_list "(iVar4)" ( identifier )))) ;)) (expression_statement "pcVar8 = "%s: open: %s";" (assignment_expression "pcVar8 = "%s: open: %s"" identifier = (string_literal ""%s: open: %s"" " string_content ")) ;) (labeled_statement "LAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);" statement_identifier : (expression_statement "iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);" (assignment_expression "iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10)" identifier = (call_expression "FUN_0001cea0(pcVar8,__file,pcVar10)" identifier (argument_list "(pcVar8,__file,pcVar10)" ( identifier , identifier , identifier )))) ;)) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" * identifier) = identifier) ;) }))) (labeled_statement "LAB_00088c6c:\n  FUN_0001dd30(__file);" statement_identifier : (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" identifier (argument_list "(__file)" ( identifier ))) ;)) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0008d800();\n  }" { (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_160;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_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 ( (string_literal " string_content ") , IDENT , (pointer_expression & IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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 = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (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 ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , (pointer_expression & IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , IDENT )))) ;) (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 = (pointer_expression * IDENT)) ;) (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 = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , IDENT , (pointer_expression & IDENT) , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (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 ") , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 __regparm3 FUN_00088870(char *param_1,int *param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return local_160;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00088870(char *param_1,int *param_2)" (identifier "FUN_00088870") (parameter_list "(char *param_1,int *param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  char *pcVar3;\n  int iVar4;\n  char *__file;\n  ssize_t sVar5;\n  size_t sVar6;\n  __pid_t _Var7;\n  char *pcVar8;\n  int *piVar9;\n  char *pcVar10;\n  char *pcVar11;\n  int iVar12;\n  undefined1 *puVar13;\n  undefined1 *puVar14;\n  int in_GS_OFFSET;\n  undefined4 local_160;\n  undefined1 *local_150;\n  undefined1 local_134 [108];\n  uint local_c8;\n  undefined1 local_c1 [32];\n  undefined1 local_a1 [64];\n  undefined1 local_61 [65];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x88879;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = FUN_00082b90();\n  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);\n  FUN_0001dd30(uVar2);\n  if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }\n  iVar4 = FUN_00083080(pcVar3);\n  if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }\n  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);\n  iVar4 = open64(__file,0);\n  if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }\n  piVar9 = __errno_location();\n  iVar4 = *piVar9;\n  if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }\nLAB_00088c6c:\n  FUN_0001dd30(__file);\n  FUN_0001dd30(pcVar3);\n  local_160 = 0;\nLAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }\n  return local_160;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *__file;" (primitive_type "char") (pointer_declarator "*__file" (* "*") (identifier "__file")) (; ";")) (declaration "ssize_t sVar5;" (primitive_type "ssize_t") (identifier "sVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "__pid_t _Var7;" (type_identifier "__pid_t") (identifier "_Var7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "char *pcVar11;" (primitive_type "char") (pointer_declarator "*pcVar11" (* "*") (identifier "pcVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "undefined1 *puVar14;" (type_identifier "undefined1") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined4 local_160;" (type_identifier "undefined4") (identifier "local_160") (; ";")) (declaration "undefined1 *local_150;" (type_identifier "undefined1") (pointer_declarator "*local_150" (* "*") (identifier "local_150")) (; ";")) (declaration "undefined1 local_134 [108];" (type_identifier "undefined1") (array_declarator "local_134 [108]" (identifier "local_134") ([ "[") (number_literal "108") (] "]")) (; ";")) (declaration "uint local_c8;" (type_identifier "uint") (identifier "local_c8") (; ";")) (declaration "undefined1 local_c1 [32];" (type_identifier "undefined1") (array_declarator "local_c1 [32]" (identifier "local_c1") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "undefined1 local_a1 [64];" (type_identifier "undefined1") (array_declarator "local_a1 [64]" (identifier "local_a1") ([ "[") (number_literal "64") (] "]")) (; ";")) (declaration "undefined1 local_61 [65];" (type_identifier "undefined1") (array_declarator "local_61 [65]" (identifier "local_61") ([ "[") (number_literal "65") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x88879;" (assignment_expression "uStack_14 = 0x88879" (identifier "uStack_14") (= "=") (number_literal "0x88879")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar2 = FUN_00082b90();" (assignment_expression "uVar2 = FUN_00082b90()" (identifier "uVar2") (= "=") (call_expression "FUN_00082b90()" (identifier "FUN_00082b90") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);" (assignment_expression "pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2)" (identifier "FUN_0001cea0") (argument_list "("%s.%s","/tmp/putty-connshare",uVar2)" (( "(") (string_literal ""%s.%s"" (" """) (string_content "%s.%s") (" """)) (, ",") (string_literal ""/tmp/putty-connshare"" (" """) (string_content "/tmp/putty-connshare") (" """)) (, ",") (identifier "uVar2") () ")"))))) (; ";")) (expression_statement "FUN_0001dd30(uVar2);" (call_expression "FUN_0001dd30(uVar2)" (identifier "FUN_0001dd30") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (if_statement "if (*pcVar3 != '/') {\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" (if "if") (parenthesized_expression "(*pcVar3 != '/')" (( "(") (binary_expression "*pcVar3 != '/'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (!= "!=") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n                    \n    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");\n  }" ({ "{") (expression_statement "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");" (call_expression "__assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" (identifier "__assert_fail") (argument_list "("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name")" (( "(") (string_literal ""*parent == \'/\'"" (" """) (string_content "*parent == ") (escape_sequence "\'") (string_content "/") (escape_sequence "\'") (" """)) (, ",") (string_literal ""unix/uxshare.c"" (" """) (string_content "unix/uxshare.c") (" """)) (, ",") (number_literal "0x2b") (, ",") (string_literal ""make_parentdir_name"" (" """) (string_content "make_parentdir_name") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_00083080(pcVar3);" (assignment_expression "iVar4 = FUN_00083080(pcVar3)" (identifier "iVar4") (= "=") (call_expression "FUN_00083080(pcVar3)" (identifier "FUN_00083080") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar3);\n    local_160 = 0;\n    goto LAB_00088a86;\n  }" ({ "{") (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" (identifier "FUN_0001dd30") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" (identifier "local_160") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00088a86;" (goto "goto") (statement_identifier "LAB_00088a86") (; ";")) (} "}"))) (expression_statement "__file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);" (assignment_expression "__file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" (identifier "__file") (= "=") (cast_expression "(char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac)" (identifier "FUN_0001cea0") (argument_list "("%s/%s",pcVar3,&DAT_0009e5ac)" (( "(") (string_literal ""%s/%s"" (" """) (string_content "%s/%s") (" """)) (, ",") (identifier "pcVar3") (, ",") (pointer_expression "&DAT_0009e5ac" (& "&") (identifier "DAT_0009e5ac")) () ")"))))) (; ";")) (expression_statement "iVar4 = open64(__file,0);" (assignment_expression "iVar4 = open64(__file,0)" (identifier "iVar4") (= "=") (call_expression "open64(__file,0)" (identifier "open64") (argument_list "(__file,0)" (( "(") (identifier "__file") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (-1 < iVar4) {\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\nLAB_00088933:\n    iVar12 = 0;\n    do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);\n    close(iVar4);\n    FUN_0001dd30(__file);\n    FUN_00070eb0(local_134);\n    local_c8 = 0x40000000;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,local_a1,0x40);\n    sVar6 = strlen(param_1);\n    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;\n    FUN_00070f10(local_134,&local_c8,4);\n    FUN_00070f10(local_134,param_1,sVar6);\n    puVar14 = local_c1;\n    FUN_00071490(local_134,puVar14);\n    puVar13 = local_61;\n    do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);\n    uVar2 = FUN_0001cbd0(local_61);\n    FUN_0001de10(local_a1,0x40);\n    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);\n    FUN_0001dd30(pcVar3);\n    FUN_0001dd30(uVar2);\n    goto LAB_00088a86;\n  }" ({ "{") (labeled_statement "LAB_00088933:\n    iVar12 = 0;" (statement_identifier "LAB_00088933") (: ":") (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";"))) (do_statement "do {\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    } while (iVar12 < 0x40);" (do "do") (compound_statement "{\n      sVar5 = read(iVar4,local_a1,0x40);\n      if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }\n      if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }\n      iVar12 = iVar12 + 1 + sVar5;\n    }" ({ "{") (expression_statement "sVar5 = read(iVar4,local_a1,0x40);" (assignment_expression "sVar5 = read(iVar4,local_a1,0x40)" (identifier "sVar5") (= "=") (call_expression "read(iVar4,local_a1,0x40)" (identifier "read") (argument_list "(iVar4,local_a1,0x40)" (( "(") (identifier "iVar4") (, ",") (identifier "local_a1") (, ",") (number_literal "0x40") () ")")))) (; ";")) (if_statement "if (sVar5 < 1) {\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" (if "if") (parenthesized_expression "(sVar5 < 1)" (( "(") (binary_expression "sVar5 < 1" (identifier "sVar5") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        close(iVar4);\n        pcVar10 = "unexpected EOF";\n        if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }\n        pcVar8 = "%s: read: %s";\n        goto LAB_00088c5d;\n      }" ({ "{") (expression_statement "close(iVar4);" (call_expression "close(iVar4)" (identifier "close") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "pcVar10 = "unexpected EOF";" (assignment_expression "pcVar10 = "unexpected EOF"" (identifier "pcVar10") (= "=") (string_literal ""unexpected EOF"" (" """) (string_content "unexpected EOF") (" """))) (; ";")) (if_statement "if (sVar5 != 0) {\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }" (if "if") (parenthesized_expression "(sVar5 != 0)" (( "(") (binary_expression "sVar5 != 0" (identifier "sVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          piVar9 = __errno_location();\n          pcVar10 = strerror(*piVar9);\n        }" ({ "{") (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar10 = strerror(*piVar9);" (assignment_expression "pcVar10 = strerror(*piVar9)" (identifier "pcVar10") (= "=") (call_expression "strerror(*piVar9)" (identifier "strerror") (argument_list "(*piVar9)" (( "(") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) () ")")))) (; ";")) (} "}"))) (expression_statement "pcVar8 = "%s: read: %s";" (assignment_expression "pcVar8 = "%s: read: %s"" (identifier "pcVar8") (= "=") (string_literal ""%s: read: %s"" (" """) (string_content "%s: read: %s") (" """))) (; ";")) (goto_statement "goto LAB_00088c5d;" (goto "goto") (statement_identifier "LAB_00088c5d") (; ";")) (} "}"))) (if_statement "if (0x40 - iVar12 < sVar5) {\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" (if "if") (parenthesized_expression "(0x40 - iVar12 < sVar5)" (( "(") (binary_expression "0x40 - iVar12 < sVar5" (binary_expression "0x40 - iVar12" (number_literal "0x40") (- "-") (identifier "iVar12")) (< "<") (identifier "sVar5")) () ")")) (compound_statement "{\n                    \n        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");\n      }" ({ "{") (expression_statement "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");" (call_expression "__assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" (identifier "__assert_fail") (argument_list "("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname")" (( "(") (string_literal ""0 < ret && ret <= SALT_SIZE - i"" (" """) (string_content "0 < ret && ret <= SALT_SIZE - i") (" """)) (, ",") (string_literal ""unix/uxshare.c"" (" """) (string_content "unix/uxshare.c") (" """)) (, ",") (number_literal "0xd4") (, ",") (string_literal ""make_dirname"" (" """) (string_content "make_dirname") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar12 = iVar12 + 1 + sVar5;" (assignment_expression "iVar12 = iVar12 + 1 + sVar5" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1 + sVar5" (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1")) (+ "+") (identifier "sVar5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar12 < 0x40)" (( "(") (binary_expression "iVar12 < 0x40" (identifier "iVar12") (< "<") (number_literal "0x40")) () ")")) (; ";")) (expression_statement "close(iVar4);" (call_expression "close(iVar4)" (identifier "close") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" (identifier "FUN_0001dd30") (argument_list "(__file)" (( "(") (identifier "__file") () ")"))) (; ";")) (expression_statement "FUN_00070eb0(local_134);" (call_expression "FUN_00070eb0(local_134)" (identifier "FUN_00070eb0") (argument_list "(local_134)" (( "(") (identifier "local_134") () ")"))) (; ";")) (expression_statement "local_c8 = 0x40000000;" (assignment_expression "local_c8 = 0x40000000" (identifier "local_c8") (= "=") (number_literal "0x40000000")) (; ";")) (expression_statement "FUN_00070f10(local_134,&local_c8,4);" (call_expression "FUN_00070f10(local_134,&local_c8,4)" (identifier "FUN_00070f10") (argument_list "(local_134,&local_c8,4)" (( "(") (identifier "local_134") (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "FUN_00070f10(local_134,local_a1,0x40);" (call_expression "FUN_00070f10(local_134,local_a1,0x40)" (identifier "FUN_00070f10") (argument_list "(local_134,local_a1,0x40)" (( "(") (identifier "local_134") (, ",") (identifier "local_a1") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "sVar6 = strlen(param_1);" (assignment_expression "sVar6 = strlen(param_1)" (identifier "sVar6") (= "=") (call_expression "strlen(param_1)" (identifier "strlen") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;" (assignment_expression "local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18" (identifier "local_c8") (= "=") (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18" (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8" (binary_expression "sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8" (binary_expression "sVar6 >> 0x18" (identifier "sVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(sVar6 & 0xff0000) >> 8" (parenthesized_expression "(sVar6 & 0xff0000)" (( "(") (binary_expression "sVar6 & 0xff0000" (identifier "sVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(sVar6 & 0xff00) << 8" (parenthesized_expression "(sVar6 & 0xff00)" (( "(") (binary_expression "sVar6 & 0xff00" (identifier "sVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "sVar6 << 0x18" (identifier "sVar6") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "FUN_00070f10(local_134,&local_c8,4);" (call_expression "FUN_00070f10(local_134,&local_c8,4)" (identifier "FUN_00070f10") (argument_list "(local_134,&local_c8,4)" (( "(") (identifier "local_134") (, ",") (pointer_expression "&local_c8" (& "&") (identifier "local_c8")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "FUN_00070f10(local_134,param_1,sVar6);" (call_expression "FUN_00070f10(local_134,param_1,sVar6)" (identifier "FUN_00070f10") (argument_list "(local_134,param_1,sVar6)" (( "(") (identifier "local_134") (, ",") (identifier "param_1") (, ",") (identifier "sVar6") () ")"))) (; ";")) (expression_statement "puVar14 = local_c1;" (assignment_expression "puVar14 = local_c1" (identifier "puVar14") (= "=") (identifier "local_c1")) (; ";")) (expression_statement "FUN_00071490(local_134,puVar14);" (call_expression "FUN_00071490(local_134,puVar14)" (identifier "FUN_00071490") (argument_list "(local_134,puVar14)" (( "(") (identifier "local_134") (, ",") (identifier "puVar14") () ")"))) (; ";")) (expression_statement "puVar13 = local_61;" (assignment_expression "puVar13 = local_61" (identifier "puVar13") (= "=") (identifier "local_61")) (; ";")) (do_statement "do {\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    } while (local_a1 != puVar14);" (do "do") (compound_statement "{\n      uVar1 = *puVar14;\n      puVar14 = puVar14 + 1;\n      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);\n      puVar13 = puVar13 + 2;\n    }" ({ "{") (expression_statement "uVar1 = *puVar14;" (assignment_expression "uVar1 = *puVar14" (identifier "uVar1") (= "=") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (; ";")) (expression_statement "puVar14 = puVar14 + 1;" (assignment_expression "puVar14 = puVar14 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "__sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);" (call_expression "__sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1)" (identifier "__sprintf_chk") (argument_list "(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1)" (( "(") (identifier "puVar13") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (pointer_expression "&DAT_0009bd2b" (& "&") (identifier "DAT_0009bd2b")) (, ",") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "puVar13 = puVar13 + 2;" (assignment_expression "puVar13 = puVar13 + 2" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 2" (identifier "puVar13") (+ "+") (number_literal "2"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_a1 != puVar14)" (( "(") (binary_expression "local_a1 != puVar14" (identifier "local_a1") (!= "!=") (identifier "puVar14")) () ")")) (; ";")) (expression_statement "uVar2 = FUN_0001cbd0(local_61);" (assignment_expression "uVar2 = FUN_0001cbd0(local_61)" (identifier "uVar2") (= "=") (call_expression "FUN_0001cbd0(local_61)" (identifier "FUN_0001cbd0") (argument_list "(local_61)" (( "(") (identifier "local_61") () ")")))) (; ";")) (expression_statement "FUN_0001de10(local_a1,0x40);" (call_expression "FUN_0001de10(local_a1,0x40)" (identifier "FUN_0001de10") (argument_list "(local_a1,0x40)" (( "(") (identifier "local_a1") (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);" (assignment_expression "local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2)" (identifier "local_160") (= "=") (call_expression "FUN_0001cea0("%s/%s",pcVar3,uVar2)" (identifier "FUN_0001cea0") (argument_list "("%s/%s",pcVar3,uVar2)" (( "(") (string_literal ""%s/%s"" (" """) (string_content "%s/%s") (" """)) (, ",") (identifier "pcVar3") (, ",") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" (identifier "FUN_0001dd30") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "FUN_0001dd30(uVar2);" (call_expression "FUN_0001dd30(uVar2)" (identifier "FUN_0001dd30") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (goto_statement "goto LAB_00088a86;" (goto "goto") (statement_identifier "LAB_00088a86") (; ";")) (} "}"))) (expression_statement "piVar9 = __errno_location();" (assignment_expression "piVar9 = __errno_location()" (identifier "piVar9") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" (identifier "iVar4") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (if_statement "if (iVar4 == 2) {\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }\n  else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" (if "if") (parenthesized_expression "(iVar4 == 2)" (( "(") (binary_expression "iVar4 == 2" (identifier "iVar4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    _Var7 = getpid();\n    iVar4 = 0;\n    while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }\n    puVar14 = local_a1;\n    do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);\n    sVar5 = write(iVar12,local_150,0x40);\n    if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }\n    if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }\nLAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);\n    *param_2 = iVar4;\n    FUN_0001dd30(pcVar10);\n  }" ({ "{") (expression_statement "_Var7 = getpid();" (assignment_expression "_Var7 = getpid()" (identifier "_Var7") (= "=") (call_expression "getpid()" (identifier "getpid") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);\n      iVar12 = open64(pcVar10,0xc1,0x100);\n      if (-1 < iVar12) break;\n      if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }\n      iVar4 = iVar4 + 1;\n      FUN_0001dd30(pcVar10);\n    }" ({ "{") (expression_statement "pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);" (assignment_expression "pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" (identifier "pcVar10") (= "=") (cast_expression "(char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" (identifier "FUN_0001cea0") (argument_list "("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4)" (( "(") (string_literal ""%s/%s.tmp.%d.%d"" (" """) (string_content "%s/%s.tmp.%d.%d") (" """)) (, ",") (identifier "pcVar3") (, ",") (pointer_expression "&DAT_0009e5ac" (& "&") (identifier "DAT_0009e5ac")) (, ",") (identifier "_Var7") (, ",") (identifier "iVar4") () ")"))))) (; ";")) (expression_statement "iVar12 = open64(pcVar10,0xc1,0x100);" (assignment_expression "iVar12 = open64(pcVar10,0xc1,0x100)" (identifier "iVar12") (= "=") (call_expression "open64(pcVar10,0xc1,0x100)" (identifier "open64") (argument_list "(pcVar10,0xc1,0x100)" (( "(") (identifier "pcVar10") (, ",") (number_literal "0xc1") (, ",") (number_literal "0x100") () ")")))) (; ";")) (if_statement "if (-1 < iVar12) break;" (if "if") (parenthesized_expression "(-1 < iVar12)" (( "(") (binary_expression "-1 < iVar12" (number_literal "-1") (< "<") (identifier "iVar12")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*piVar9 != 0x11) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" (if "if") (parenthesized_expression "(*piVar9 != 0x11)" (( "(") (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0x11")) () ")")) (compound_statement "{\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: open: %s";\n        goto LAB_00088d16;\n      }" ({ "{") (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" (identifier "pcVar11") (= "=") (call_expression "strerror(*piVar9)" (identifier "strerror") (argument_list "(*piVar9)" (( "(") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) () ")")))) (; ";")) (expression_statement "pcVar8 = "%s: open: %s";" (assignment_expression "pcVar8 = "%s: open: %s"" (identifier "pcVar8") (= "=") (string_literal ""%s: open: %s"" (" """) (string_content "%s: open: %s") (" """))) (; ";")) (goto_statement "goto LAB_00088d16;" (goto "goto") (statement_identifier "LAB_00088d16") (; ";")) (} "}"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" (identifier "FUN_0001dd30") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar14 = local_a1;" (assignment_expression "puVar14 = local_a1" (identifier "puVar14") (= "=") (identifier "local_a1")) (; ";")) (do_statement "do {\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    } while (puVar13 != local_61);" (do "do") (compound_statement "{\n      local_150 = local_a1;\n      uVar1 = FUN_0006dc60();\n      puVar13 = puVar14 + 1;\n      *puVar14 = uVar1;\n      puVar14 = puVar13;\n    }" ({ "{") (expression_statement "local_150 = local_a1;" (assignment_expression "local_150 = local_a1" (identifier "local_150") (= "=") (identifier "local_a1")) (; ";")) (expression_statement "uVar1 = FUN_0006dc60();" (assignment_expression "uVar1 = FUN_0006dc60()" (identifier "uVar1") (= "=") (call_expression "FUN_0006dc60()" (identifier "FUN_0006dc60") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar13 = puVar14 + 1;" (assignment_expression "puVar13 = puVar14 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar14 + 1" (identifier "puVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar14 = uVar1;" (assignment_expression "*puVar14 = uVar1" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "puVar14 = puVar13;" (assignment_expression "puVar14 = puVar13" (identifier "puVar14") (= "=") (identifier "puVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar13 != local_61)" (( "(") (binary_expression "puVar13 != local_61" (identifier "puVar13") (!= "!=") (identifier "local_61")) () ")")) (; ";")) (expression_statement "sVar5 = write(iVar12,local_150,0x40);" (assignment_expression "sVar5 = write(iVar12,local_150,0x40)" (identifier "sVar5") (= "=") (call_expression "write(iVar12,local_150,0x40)" (identifier "write") (argument_list "(iVar12,local_150,0x40)" (( "(") (identifier "iVar12") (, ",") (identifier "local_150") (, ",") (number_literal "0x40") () ")")))) (; ";")) (if_statement "if ((-1 < sVar5) && (sVar5 != 0x40)) {\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" (if "if") (parenthesized_expression "((-1 < sVar5) && (sVar5 != 0x40))" (( "(") (binary_expression "(-1 < sVar5) && (sVar5 != 0x40)" (parenthesized_expression "(-1 < sVar5)" (( "(") (binary_expression "-1 < sVar5" (number_literal "-1") (< "<") (identifier "sVar5")) () ")")) (&& "&&") (parenthesized_expression "(sVar5 != 0x40)" (( "(") (binary_expression "sVar5 != 0x40" (identifier "sVar5") (!= "!=") (number_literal "0x40")) () ")"))) () ")")) (compound_statement "{\n                    \n      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");\n    }" ({ "{") (expression_statement "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");" (call_expression "__assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" (identifier "__assert_fail") (argument_list "("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname")" (( "(") (string_literal ""ret < 0 || ret == SALT_SIZE"" (" """) (string_content "ret < 0 || ret == SALT_SIZE") (" """)) (, ",") (string_literal ""unix/uxshare.c"" (" """) (string_content "unix/uxshare.c") (" """)) (, ",") (number_literal "0x89") (, ",") (string_literal ""make_dirname"" (" """) (string_content "make_dirname") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (sVar5 < 0) {\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }\n    else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" (if "if") (parenthesized_expression "(sVar5 < 0)" (( "(") (binary_expression "sVar5 < 0" (identifier "sVar5") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      close(iVar12);\n      pcVar11 = strerror(*piVar9);\n      pcVar8 = "%s: write: %s";\n    }" ({ "{") (expression_statement "close(iVar12);" (call_expression "close(iVar12)" (identifier "close") (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" (identifier "pcVar11") (= "=") (call_expression "strerror(*piVar9)" (identifier "strerror") (argument_list "(*piVar9)" (( "(") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) () ")")))) (; ";")) (expression_statement "pcVar8 = "%s: write: %s";" (assignment_expression "pcVar8 = "%s: write: %s"" (identifier "pcVar8") (= "=") (string_literal ""%s: write: %s"" (" """) (string_content "%s: write: %s") (" """))) (; ";")) (} "}")) (else_clause "else {\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" (else "else") (compound_statement "{\n      iVar4 = close(iVar12);\n      if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }\n    }" ({ "{") (expression_statement "iVar4 = close(iVar12);" (assignment_expression "iVar4 = close(iVar12)" (identifier "iVar4") (= "=") (call_expression "close(iVar12)" (identifier "close") (argument_list "(iVar12)" (( "(") (identifier "iVar12") () ")")))) (; ";")) (if_statement "if (iVar4 < 0) {\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }\n      else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" (if "if") (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: close: %s";\n      }" ({ "{") (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" (identifier "pcVar11") (= "=") (call_expression "strerror(*piVar9)" (identifier "strerror") (argument_list "(*piVar9)" (( "(") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) () ")")))) (; ";")) (expression_statement "pcVar8 = "%s: close: %s";" (assignment_expression "pcVar8 = "%s: close: %s"" (identifier "pcVar8") (= "=") (string_literal ""%s: close: %s"" (" """) (string_content "%s: close: %s") (" """))) (; ";")) (} "}")) (else_clause "else {\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" (else "else") (compound_statement "{\n        iVar4 = link(pcVar10,__file);\n        if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }\n        iVar4 = unlink(pcVar10);\n        if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }\n        pcVar11 = strerror(*piVar9);\n        pcVar8 = "%s: unlink: %s";\n      }" ({ "{") (expression_statement "iVar4 = link(pcVar10,__file);" (assignment_expression "iVar4 = link(pcVar10,__file)" (identifier "iVar4") (= "=") (call_expression "link(pcVar10,__file)" (identifier "link") (argument_list "(pcVar10,__file)" (( "(") (identifier "pcVar10") (, ",") (identifier "__file") () ")")))) (; ";")) (if_statement "if ((iVar4 < 0) && (*piVar9 != 0x11)) {\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }" (if "if") (parenthesized_expression "((iVar4 < 0) && (*piVar9 != 0x11))" (( "(") (binary_expression "(iVar4 < 0) && (*piVar9 != 0x11)" (parenthesized_expression "(iVar4 < 0)" (( "(") (binary_expression "iVar4 < 0" (identifier "iVar4") (< "<") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*piVar9 != 0x11)" (( "(") (binary_expression "*piVar9 != 0x11" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0x11")) () ")"))) () ")")) (compound_statement "{\n          pcVar8 = strerror(*piVar9);\n          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);\n          *param_2 = iVar4;\n          FUN_0001dd30(pcVar10);\n          goto LAB_00088c6c;\n        }" ({ "{") (expression_statement "pcVar8 = strerror(*piVar9);" (assignment_expression "pcVar8 = strerror(*piVar9)" (identifier "pcVar8") (= "=") (call_expression "strerror(*piVar9)" (identifier "strerror") (argument_list "(*piVar9)" (( "(") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) () ")")))) (; ";")) (expression_statement "iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);" (assignment_expression "iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8)" (identifier "iVar4") (= "=") (call_expression "FUN_0001cea0("%s: link: %s",__file,pcVar8)" (identifier "FUN_0001cea0") (argument_list "("%s: link: %s",__file,pcVar8)" (( "(") (string_literal ""%s: link: %s"" (" """) (string_content "%s: link: %s") (" """)) (, ",") (identifier "__file") (, ",") (identifier "pcVar8") () ")")))) (; ";")) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" (identifier "FUN_0001dd30") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (goto_statement "goto LAB_00088c6c;" (goto "goto") (statement_identifier "LAB_00088c6c") (; ";")) (} "}"))) (expression_statement "iVar4 = unlink(pcVar10);" (assignment_expression "iVar4 = unlink(pcVar10)" (identifier "iVar4") (= "=") (call_expression "unlink(pcVar10)" (identifier "unlink") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")")))) (; ";")) (if_statement "if (-1 < iVar4) {\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n          FUN_0001dd30(pcVar10);\n          iVar4 = open64(__file,0);\n          if (-1 < iVar4) goto LAB_00088933;\n          iVar4 = *piVar9;\n          goto LAB_00088c8c;\n        }" ({ "{") (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" (identifier "FUN_0001dd30") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (expression_statement "iVar4 = open64(__file,0);" (assignment_expression "iVar4 = open64(__file,0)" (identifier "iVar4") (= "=") (call_expression "open64(__file,0)" (identifier "open64") (argument_list "(__file,0)" (( "(") (identifier "__file") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (-1 < iVar4) goto LAB_00088933;" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (goto_statement "goto LAB_00088933;" (goto "goto") (statement_identifier "LAB_00088933") (; ";"))) (expression_statement "iVar4 = *piVar9;" (assignment_expression "iVar4 = *piVar9" (identifier "iVar4") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (goto_statement "goto LAB_00088c8c;" (goto "goto") (statement_identifier "LAB_00088c8c") (; ";")) (} "}"))) (expression_statement "pcVar11 = strerror(*piVar9);" (assignment_expression "pcVar11 = strerror(*piVar9)" (identifier "pcVar11") (= "=") (call_expression "strerror(*piVar9)" (identifier "strerror") (argument_list "(*piVar9)" (( "(") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) () ")")))) (; ";")) (expression_statement "pcVar8 = "%s: unlink: %s";" (assignment_expression "pcVar8 = "%s: unlink: %s"" (identifier "pcVar8") (= "=") (string_literal ""%s: unlink: %s"" (" """) (string_content "%s: unlink: %s") (" """))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_00088d16:\n    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);" (statement_identifier "LAB_00088d16") (: ":") (expression_statement "iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);" (assignment_expression "iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11)" (identifier "iVar4") (= "=") (call_expression "FUN_0001cea0(pcVar8,pcVar10,pcVar11)" (identifier "FUN_0001cea0") (argument_list "(pcVar8,pcVar10,pcVar11)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar10") (, ",") (identifier "pcVar11") () ")")))) (; ";"))) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "FUN_0001dd30(pcVar10);" (call_expression "FUN_0001dd30(pcVar10)" (identifier "FUN_0001dd30") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" (else "else") (compound_statement "{\nLAB_00088c8c:\n    pcVar10 = strerror(iVar4);\n    pcVar8 = "%s: open: %s";\nLAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);\n    *param_2 = iVar4;\n  }" ({ "{") (labeled_statement "LAB_00088c8c:\n    pcVar10 = strerror(iVar4);" (statement_identifier "LAB_00088c8c") (: ":") (expression_statement "pcVar10 = strerror(iVar4);" (assignment_expression "pcVar10 = strerror(iVar4)" (identifier "pcVar10") (= "=") (call_expression "strerror(iVar4)" (identifier "strerror") (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")")))) (; ";"))) (expression_statement "pcVar8 = "%s: open: %s";" (assignment_expression "pcVar8 = "%s: open: %s"" (identifier "pcVar8") (= "=") (string_literal ""%s: open: %s"" (" """) (string_content "%s: open: %s") (" """))) (; ";")) (labeled_statement "LAB_00088c5d:\n    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);" (statement_identifier "LAB_00088c5d") (: ":") (expression_statement "iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);" (assignment_expression "iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10)" (identifier "iVar4") (= "=") (call_expression "FUN_0001cea0(pcVar8,__file,pcVar10)" (identifier "FUN_0001cea0") (argument_list "(pcVar8,__file,pcVar10)" (( "(") (identifier "pcVar8") (, ",") (identifier "__file") (, ",") (identifier "pcVar10") () ")")))) (; ";"))) (expression_statement "*param_2 = iVar4;" (assignment_expression "*param_2 = iVar4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "iVar4")) (; ";")) (} "}")))) (labeled_statement "LAB_00088c6c:\n  FUN_0001dd30(__file);" (statement_identifier "LAB_00088c6c") (: ":") (expression_statement "FUN_0001dd30(__file);" (call_expression "FUN_0001dd30(__file)" (identifier "FUN_0001dd30") (argument_list "(__file)" (( "(") (identifier "__file") () ")"))) (; ";"))) (expression_statement "FUN_0001dd30(pcVar3);" (call_expression "FUN_0001dd30(pcVar3)" (identifier "FUN_0001dd30") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "local_160 = 0;" (assignment_expression "local_160 = 0" (identifier "local_160") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00088a86:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" (statement_identifier "LAB_00088a86") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0008d800();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0008d800();\n  }" ({ "{") (expression_statement "FUN_0008d800();" (call_expression "FUN_0008d800()" (identifier "FUN_0008d800") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return local_160;" (return "return") (identifier "local_160") (; ";")) (} "}")))

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

char * __regparm3 function_1(char *pi_name,char **logtext)

{
  int var_32;
  type_1 uVar2;
  char *var_7;
  char *dirname;
  int var_9;
  ssize_t var_11;
  size_t var_19;
  type_2 _Var6;
  char *pcVar7;
  char *pcVar8;
  int *piVar9;
  char *pcVar10;
  int var_15;
  type_1 *var_28;
  type_1 *var_21;
  int var_1;
  char *local_160;
  type_1 *local_150;
  type_3 sha;
  type_1 lenbuf [4];
  type_1 digest [32];
  type_1 var_23 [64];
  char retbuf [65];
  
  var_32 = *(int *)(var_1 + 0x14);
  var_7 = var_2();
  dirname = var_3("%s.%s","/tmp/putty-connshare",var_7);
  var_4(var_7);
  if (*dirname != '/') {
                    /* WARNING: Subroutine does not return */
    var_5("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");
  }
  var_7 = var_6(dirname);
  if (var_7 != (char *)0x0) {
    *logtext = var_7;
    var_4(dirname);
    local_160 = (char *)0x0;
    goto LAB_00088a86;
  }
  var_7 = var_3("%s/%s",dirname,&DAT_0009e5ac);
  var_9 = var_8(var_7,0);
  if (-1 < var_9) {
LAB_00088933:
    var_15 = 0;
    do {
      var_11 = var_10(var_9,var_23,0x40);
      if (var_11 < 1) {
        var_12(var_9);
        pcVar8 = "unexpected EOF";
        if (var_11 != 0) {
          piVar9 = var_13();
          pcVar8 = var_14(*piVar9);
        }
        pcVar7 = "%s: read: %s";
        goto LAB_00088c5d;
      }
      if (0x40 - var_15 < var_11) {
                    /* WARNING: Subroutine does not return */
        var_5("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");
      }
      var_15 = var_15 + 1 + var_11;
    } while (var_15 < 0x40);
    var_12(var_9);
    var_4(var_7);
    var_16((type_4 *)&sha);
    lenbuf[0] = '\0';
    lenbuf[1] = '\0';
    lenbuf[2] = '\0';
    lenbuf[3] = '@';
    var_17(&sha,lenbuf,4);
    var_17(&sha,var_23,0x40);
    var_19 = var_18(pi_name);
    lenbuf = (type_1  [4])(var_19 >> 0x18 | (var_19 & 0xff0000) >> 8 | (var_19 & 0xff00) << 8 | var_19 << 0x18);
    var_17(&sha,lenbuf,4);
    var_17(&sha,pi_name,var_19);
    var_21 = digest;
    var_20(&sha,var_21);
    var_7 = retbuf;
    do {
      uVar2 = *var_21;
      var_21 = var_21 + 1;
      var_22(var_7,1,0xffffffff,&DAT_0009bd2b,uVar2);
      var_7 = var_7 + 2;
    } while (var_23 != var_21);
    var_7 = var_24(retbuf);
    var_25(var_23,0x40);
    local_160 = var_3("%s/%s",dirname,var_7);
    var_4(dirname);
    var_4(var_7);
    goto LAB_00088a86;
  }
  piVar9 = var_13();
  var_9 = *piVar9;
  if (var_9 == 2) {
    _Var6 = var_26();
    var_9 = 0;
    while( true ) {
      pcVar8 = var_3("%s/%s.tmp.%d.%d",dirname,&DAT_0009e5ac,_Var6,var_9);
      var_15 = var_8(pcVar8,0xc1,0x100);
      if (-1 < var_15) break;
      if (*piVar9 != 0x11) {
        pcVar10 = var_14(*piVar9);
        pcVar7 = "%s: open: %s";
        goto LAB_00088d16;
      }
      var_9 = var_9 + 1;
      var_4(pcVar8);
    }
    var_21 = var_23;
    do {
      local_150 = var_23;
      var_9 = var_27();
      var_28 = var_21 + 1;
      *var_21 = (type_1)var_9;
      var_21 = var_28;
    } while (var_28 != (type_1 *)retbuf);
    var_11 = var_29(var_15,local_150,0x40);
    if ((-1 < var_11) && (var_11 != 0x40)) {
                    /* WARNING: Subroutine does not return */
      var_5("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");
    }
    if (var_11 < 0) {
      var_12(var_15);
      pcVar10 = var_14(*piVar9);
      pcVar7 = "%s: write: %s";
    }
    else {
      var_9 = var_12(var_15);
      if (var_9 < 0) {
        pcVar10 = var_14(*piVar9);
        pcVar7 = "%s: close: %s";
      }
      else {
        var_9 = var_30(pcVar8,var_7);
        if ((var_9 < 0) && (*piVar9 != 0x11)) {
          pcVar7 = var_14(*piVar9);
          pcVar7 = var_3("%s: link: %s",var_7,pcVar7);
          *logtext = pcVar7;
          var_4(pcVar8);
          goto LAB_00088c6c;
        }
        var_9 = var_31(pcVar8);
        if (-1 < var_9) {
          var_4(pcVar8);
          var_9 = var_8(var_7,0);
          if (-1 < var_9) goto LAB_00088933;
          var_9 = *piVar9;
          goto LAB_00088c8c;
        }
        pcVar10 = var_14(*piVar9);
        pcVar7 = "%s: unlink: %s";
      }
    }
LAB_00088d16:
    pcVar7 = var_3(pcVar7,pcVar8,pcVar10);
    *logtext = pcVar7;
    var_4(pcVar8);
  }
  else {
LAB_00088c8c:
    pcVar8 = var_14(var_9);
    pcVar7 = "%s: open: %s";
LAB_00088c5d:
    pcVar8 = var_3(pcVar7,var_7,pcVar8);
    *logtext = pcVar8;
  }
LAB_00088c6c:
  var_4(var_7);
  var_4(dirname);
  local_160 = (char *)0x0;
LAB_00088a86:
  if (var_32 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_33();
  }
  return local_160;
}


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

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

undefined4 __regparm3 MASKED(char *param_1,int *param_2)

{
  undefined1 uVar1;
  undefined4 uVar2;
  char *pcVar3;
  int iVar4;
  char *__file;
  ssize_t sVar5;
  size_t sVar6;
  __pid_t _Var7;
  char *pcVar8;
  int *piVar9;
  char *pcVar10;
  char *pcVar11;
  int iVar12;
  undefined1 *puVar13;
  undefined1 *puVar14;
  int in_GS_OFFSET;
  undefined4 local_160;
  undefined1 *local_150;
  undefined1 local_134 [108];
  uint local_c8;
  undefined1 local_c1 [32];
  undefined1 local_a1 [64];
  undefined1 local_61 [65];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x88879;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar2 = FUN_00082b90();
  pcVar3 = (char *)FUN_0001cea0("%s.%s","/tmp/putty-connshare",uVar2);
  FUN_0001dd30(uVar2);
  if (*pcVar3 != '/') {
                    /* WARNING: Subroutine does not return */
    __assert_fail("*parent == \'/\'","unix/uxshare.c",0x2b,"make_parentdir_name");
  }
  iVar4 = FUN_00083080(pcVar3);
  if (iVar4 != 0) {
    *param_2 = iVar4;
    FUN_0001dd30(pcVar3);
    local_160 = 0;
    goto LAB_00088a86;
  }
  __file = (char *)FUN_0001cea0("%s/%s",pcVar3,&DAT_0009e5ac);
  iVar4 = open64(__file,0);
  if (-1 < iVar4) {
LAB_00088933:
    iVar12 = 0;
    do {
      sVar5 = read(iVar4,local_a1,0x40);
      if (sVar5 < 1) {
        close(iVar4);
        pcVar10 = "unexpected EOF";
        if (sVar5 != 0) {
          piVar9 = __errno_location();
          pcVar10 = strerror(*piVar9);
        }
        pcVar8 = "%s: read: %s";
        goto LAB_00088c5d;
      }
      if (0x40 - iVar12 < sVar5) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("0 < ret && ret <= SALT_SIZE - i","unix/uxshare.c",0xd4,"make_dirname");
      }
      iVar12 = iVar12 + 1 + sVar5;
    } while (iVar12 < 0x40);
    close(iVar4);
    FUN_0001dd30(__file);
    FUN_00070eb0(local_134);
    local_c8 = 0x40000000;
    FUN_00070f10(local_134,&local_c8,4);
    FUN_00070f10(local_134,local_a1,0x40);
    sVar6 = strlen(param_1);
    local_c8 = sVar6 >> 0x18 | (sVar6 & 0xff0000) >> 8 | (sVar6 & 0xff00) << 8 | sVar6 << 0x18;
    FUN_00070f10(local_134,&local_c8,4);
    FUN_00070f10(local_134,param_1,sVar6);
    puVar14 = local_c1;
    FUN_00071490(local_134,puVar14);
    puVar13 = local_61;
    do {
      uVar1 = *puVar14;
      puVar14 = puVar14 + 1;
      __sprintf_chk(puVar13,1,0xffffffff,&DAT_0009bd2b,uVar1);
      puVar13 = puVar13 + 2;
    } while (local_a1 != puVar14);
    uVar2 = FUN_0001cbd0(local_61);
    FUN_0001de10(local_a1,0x40);
    local_160 = FUN_0001cea0("%s/%s",pcVar3,uVar2);
    FUN_0001dd30(pcVar3);
    FUN_0001dd30(uVar2);
    goto LAB_00088a86;
  }
  piVar9 = __errno_location();
  iVar4 = *piVar9;
  if (iVar4 == 2) {
    _Var7 = getpid();
    iVar4 = 0;
    while( true ) {
      pcVar10 = (char *)FUN_0001cea0("%s/%s.tmp.%d.%d",pcVar3,&DAT_0009e5ac,_Var7,iVar4);
      iVar12 = open64(pcVar10,0xc1,0x100);
      if (-1 < iVar12) break;
      if (*piVar9 != 0x11) {
        pcVar11 = strerror(*piVar9);
        pcVar8 = "%s: open: %s";
        goto LAB_00088d16;
      }
      iVar4 = iVar4 + 1;
      FUN_0001dd30(pcVar10);
    }
    puVar14 = local_a1;
    do {
      local_150 = local_a1;
      uVar1 = FUN_0006dc60();
      puVar13 = puVar14 + 1;
      *puVar14 = uVar1;
      puVar14 = puVar13;
    } while (puVar13 != local_61);
    sVar5 = write(iVar12,local_150,0x40);
    if ((-1 < sVar5) && (sVar5 != 0x40)) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("ret < 0 || ret == SALT_SIZE","unix/uxshare.c",0x89,"make_dirname");
    }
    if (sVar5 < 0) {
      close(iVar12);
      pcVar11 = strerror(*piVar9);
      pcVar8 = "%s: write: %s";
    }
    else {
      iVar4 = close(iVar12);
      if (iVar4 < 0) {
        pcVar11 = strerror(*piVar9);
        pcVar8 = "%s: close: %s";
      }
      else {
        iVar4 = link(pcVar10,__file);
        if ((iVar4 < 0) && (*piVar9 != 0x11)) {
          pcVar8 = strerror(*piVar9);
          iVar4 = FUN_0001cea0("%s: link: %s",__file,pcVar8);
          *param_2 = iVar4;
          FUN_0001dd30(pcVar10);
          goto LAB_00088c6c;
        }
        iVar4 = unlink(pcVar10);
        if (-1 < iVar4) {
          FUN_0001dd30(pcVar10);
          iVar4 = open64(__file,0);
          if (-1 < iVar4) goto LAB_00088933;
          iVar4 = *piVar9;
          goto LAB_00088c8c;
        }
        pcVar11 = strerror(*piVar9);
        pcVar8 = "%s: unlink: %s";
      }
    }
LAB_00088d16:
    iVar4 = FUN_0001cea0(pcVar8,pcVar10,pcVar11);
    *param_2 = iVar4;
    FUN_0001dd30(pcVar10);
  }
  else {
LAB_00088c8c:
    pcVar10 = strerror(iVar4);
    pcVar8 = "%s: open: %s";
LAB_00088c5d:
    iVar4 = FUN_0001cea0(pcVar8,__file,pcVar10);
    *param_2 = iVar4;
  }
LAB_00088c6c:
  FUN_0001dd30(__file);
  FUN_0001dd30(pcVar3);
  local_160 = 0;
LAB_00088a86:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0008d800();
  }
  return local_160;
}

