
/* WARNING: Unknown calling convention */

char * choose_tmpdir(void)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  char *pcVar4;
  size_t sVar5;
  char *__dest;
  uint *puVar6;
  uint *puVar7;
  ulong uVar8;
  bool bVar9;
  
  if (memoized_tmpdir != (char *)0x0) {
    return memoized_tmpdir;
  }
  pcVar4 = getenv("TMPDIR");
  if (pcVar4 == (char *)0x0) {
    pcVar4 = getenv("TMP");
LAB_00104c38:
    if (pcVar4 != (char *)0x0) {
      iVar1 = access(pcVar4,7);
      if (iVar1 == 0) goto LAB_00104be9;
    }
    pcVar4 = getenv("TEMP");
    if (pcVar4 != (char *)0x0) {
      iVar1 = access(pcVar4,7);
      if (iVar1 == 0) goto LAB_00104bf5;
    }
    iVar1 = access("/tmp",7);
    if (iVar1 == 0) {
      sVar5 = 4;
      uVar8 = 5;
      iVar1 = 6;
      pcVar4 = "/tmp";
    }
    else {
      iVar1 = access("/var/tmp",7);
      if (iVar1 == 0) {
        puVar7 = (uint *)"/var/tmp";
        do {
          puVar6 = puVar7;
          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;
          uVar3 = uVar2 & 0x80808080;
          puVar7 = puVar6 + 1;
        } while (uVar3 == 0);
        pcVar4 = "/var/tmp";
        bVar9 = (uVar2 & 0x8080) == 0;
        if (bVar9) {
          uVar3 = uVar3 >> 0x10;
        }
        if (bVar9) {
          puVar7 = (uint *)((long)puVar6 + 6);
        }
        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));
        iVar1 = (int)sVar5 + 2;
        uVar8 = (ulong)((int)sVar5 + 1);
      }
      else {
        iVar1 = access("/usr/tmp",7);
        if (iVar1 == 0) {
          puVar7 = (uint *)"/usr/tmp";
          do {
            puVar6 = puVar7;
            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;
            uVar3 = uVar2 & 0x80808080;
            puVar7 = puVar6 + 1;
          } while (uVar3 == 0);
          pcVar4 = "/usr/tmp";
          bVar9 = (uVar2 & 0x8080) == 0;
          if (bVar9) {
            uVar3 = uVar3 >> 0x10;
          }
          if (bVar9) {
            puVar7 = (uint *)((long)puVar6 + 6);
          }
          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));
          iVar1 = (int)sVar5 + 2;
          uVar8 = (ulong)((int)sVar5 + 1);
        }
        else {
          iVar1 = access("/tmp",7);
          if (iVar1 == 0) {
            pcVar4 = "/tmp";
            sVar5 = strlen("/tmp");
            iVar1 = (int)sVar5 + 2;
            uVar8 = (ulong)((int)sVar5 + 1);
          }
          else {
            sVar5 = 1;
            uVar8 = 2;
            iVar1 = 3;
            pcVar4 = ".";
          }
        }
      }
    }
  }
  else {
    iVar1 = access(pcVar4,7);
    if (iVar1 != 0) {
      pcVar4 = getenv("TMP");
      goto LAB_00104c38;
    }
    getenv("TMP");
LAB_00104be9:
    getenv("TEMP");
LAB_00104bf5:
    sVar5 = strlen(pcVar4);
    iVar1 = (int)sVar5 + 2;
    uVar8 = (ulong)((int)sVar5 + 1);
    sVar5 = sVar5 & 0xffffffff;
  }
  __dest = (char *)xmalloc(iVar1);
  pcVar4 = strcpy(__dest,pcVar4);
  pcVar4[sVar5] = '/';
  memoized_tmpdir = pcVar4;
  pcVar4[uVar8] = '\0';
  return pcVar4;
}



char * FUN_00104ba0(void)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  char *pcVar4;
  size_t sVar5;
  char *__dest;
  uint *puVar6;
  uint *puVar7;
  ulong uVar8;
  bool bVar9;
  
  if (DAT_00108470 != (char *)0x0) {
    return DAT_00108470;
  }
  pcVar4 = getenv("TMPDIR");
  if (pcVar4 == (char *)0x0) {
    pcVar4 = getenv("TMP");
LAB_00104c38:
    if (pcVar4 != (char *)0x0) {
      iVar1 = access(pcVar4,7);
      if (iVar1 == 0) goto LAB_00104be9;
    }
    pcVar4 = getenv("TEMP");
    if (pcVar4 != (char *)0x0) {
      iVar1 = access(pcVar4,7);
      if (iVar1 == 0) goto LAB_00104bf5;
    }
    iVar1 = access("/tmp",7);
    if (iVar1 == 0) {
      sVar5 = 4;
      uVar8 = 5;
      iVar1 = 6;
      pcVar4 = "/tmp";
    }
    else {
      iVar1 = access("/var/tmp",7);
      if (iVar1 == 0) {
        puVar7 = &DAT_00105b80;
        do {
          puVar6 = puVar7;
          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;
          uVar3 = uVar2 & 0x80808080;
          puVar7 = puVar6 + 1;
        } while (uVar3 == 0);
        pcVar4 = "/var/tmp";
        bVar9 = (uVar2 & 0x8080) == 0;
        if (bVar9) {
          uVar3 = uVar3 >> 0x10;
        }
        if (bVar9) {
          puVar7 = (uint *)((long)puVar6 + 6);
        }
        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));
        iVar1 = (int)sVar5 + 2;
        uVar8 = (ulong)((int)sVar5 + 1);
      }
      else {
        iVar1 = access("/usr/tmp",7);
        if (iVar1 == 0) {
          puVar7 = &DAT_00105b90;
          do {
            puVar6 = puVar7;
            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;
            uVar3 = uVar2 & 0x80808080;
            puVar7 = puVar6 + 1;
          } while (uVar3 == 0);
          pcVar4 = "/usr/tmp";
          bVar9 = (uVar2 & 0x8080) == 0;
          if (bVar9) {
            uVar3 = uVar3 >> 0x10;
          }
          if (bVar9) {
            puVar7 = (uint *)((long)puVar6 + 6);
          }
          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));
          iVar1 = (int)sVar5 + 2;
          uVar8 = (ulong)((int)sVar5 + 1);
        }
        else {
          iVar1 = access("/tmp",7);
          if (iVar1 == 0) {
            pcVar4 = "/tmp";
            sVar5 = strlen("/tmp");
            iVar1 = (int)sVar5 + 2;
            uVar8 = (ulong)((int)sVar5 + 1);
          }
          else {
            sVar5 = 1;
            uVar8 = 2;
            iVar1 = 3;
            pcVar4 = ".";
          }
        }
      }
    }
  }
  else {
    iVar1 = access(pcVar4,7);
    if (iVar1 != 0) {
      pcVar4 = getenv("TMP");
      goto LAB_00104c38;
    }
    getenv("TMP");
LAB_00104be9:
    getenv("TEMP");
LAB_00104bf5:
    sVar5 = strlen(pcVar4);
    iVar1 = (int)sVar5 + 2;
    uVar8 = (ulong)((int)sVar5 + 1);
    sVar5 = sVar5 & 0xffffffff;
  }
  __dest = (char *)xmalloc(iVar1);
  pcVar4 = strcpy(__dest,pcVar4);
  pcVar4[sVar5] = '/';
  DAT_00108470 = pcVar4;
  pcVar4[uVar8] = '\0';
  return pcVar4;
}


MOV RDX,qword ptr [0x00108470]
TEST RDX,RDX
JZ 0x00104bb0
MOV RAX,RDX
RET
PUSH R12
LEA RDI,[0x105b48]
PUSH RBP
PUSH RBX
CALL 0x00102050
MOV RBP,RAX
TEST RAX,RAX
JZ 0x00104dc0
MOV RDI,RAX
MOV ESI,0x7
CALL 0x00102390
LEA RDI,[0x105b4f]
TEST EAX,EAX
JNZ 0x00104c30
CALL 0x00102050
LEA RDI,[0x105b53]
CALL 0x00102050
MOV RDI,RBP
CALL 0x00102170
LEA EDI,[RAX + 0x2]
LEA R12D,[RAX + 0x1]
MOV EBX,EAX
CALL 0x00102210
MOV RSI,RBP
MOV RDI,RAX
CALL 0x001020b0
MOV byte ptr [RAX + RBX*0x1],0x2f
MOV qword ptr [0x00108470],RAX
MOV byte ptr [RAX + R12*0x1],0x0
POP RBX
POP RBP
POP R12
RET
CALL 0x00102050
MOV RBP,RAX
TEST RBP,RBP
JZ 0x00104c4e
MOV ESI,0x7
MOV RDI,RBP
CALL 0x00102390
TEST EAX,EAX
JZ 0x00104be9
LEA RDI,[0x105b53]
CALL 0x00102050
MOV RBP,RAX
TEST RAX,RAX
JZ 0x00104c73
MOV ESI,0x7
MOV RDI,RAX
CALL 0x00102390
TEST EAX,EAX
JZ 0x00104bf5
MOV ESI,0x7
LEA RDI,[0x105b41]
CALL 0x00102390
TEST EAX,EAX
JNZ 0x00104ca8
MOV EBX,0x4
MOV R12D,0x5
MOV EDI,0x6
LEA RBP,[0x105b41]
JMP 0x00104c06
MOV ESI,0x7
LEA RDI,[0x105b80]
CALL 0x00102390
TEST EAX,EAX
JNZ 0x00104d18
LEA RCX,[0x105b80]
MOV RBX,RCX
MOV EDX,dword ptr [RBX]
ADD RBX,0x4
LEA EAX,[RDX + -0x1010101]
NOT EDX
AND EAX,EDX
AND EAX,0x80808080
JZ 0x00104cc7
MOV EDX,EAX
LEA RBP,[0x105b80]
SHR EDX,0x10
TEST EAX,0x8080
CMOVZ EAX,EDX
LEA RDX,[RBX + 0x2]
CMOVZ RBX,RDX
MOV ESI,EAX
ADD SIL,AL
SBB RBX,0x3
SUB RBX,RCX
LEA EDI,[RBX + 0x2]
LEA R12D,[RBX + 0x1]
JMP 0x00104c06
MOV ESI,0x7
LEA RDI,[0x105b90]
CALL 0x00102390
TEST EAX,EAX
JNZ 0x00104d88
LEA RCX,[0x105b90]
MOV RBX,RCX
MOV EDX,dword ptr [RBX]
ADD RBX,0x4
LEA EAX,[RDX + -0x1010101]
NOT EDX
AND EAX,EDX
AND EAX,0x80808080
JZ 0x00104d37
MOV EDX,EAX
LEA RBP,[0x105b90]
SHR EDX,0x10
TEST EAX,0x8080
CMOVZ EAX,EDX
LEA RDX,[RBX + 0x2]
CMOVZ RBX,RDX
MOV ESI,EAX
ADD SIL,AL
SBB RBX,0x3
SUB RBX,RCX
LEA EDI,[RBX + 0x2]
LEA R12D,[RBX + 0x1]
JMP 0x00104c06
MOV ESI,0x7
LEA RDI,[0x105b99]
CALL 0x00102390
TEST EAX,EAX
JNZ 0x00104dd8
LEA RDI,[0x105b99]
LEA RBP,[0x105b99]
CALL 0x00102170
MOV RBX,RAX
LEA EDI,[RAX + 0x2]
LEA R12D,[RAX + 0x1]
JMP 0x00104c06
LEA RDI,[0x105b4f]
CALL 0x00102050
MOV RBP,RAX
JMP 0x00104c38
MOV EBX,0x1
MOV R12D,0x2
MOV EDI,0x3
LEA RBP,[0x105b46]
JMP 0x00104c06
(translation_unit "char * FUN_00104ba0(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}\n\n" (function_definition "char * FUN_00104ba0(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" primitive_type (pointer_declarator "* FUN_00104ba0(void)" * (function_declarator "FUN_00104ba0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (if_statement "if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }" if (parenthesized_expression "(DAT_00108470 != (char *)0x0)" ( (binary_expression "DAT_00108470 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return DAT_00108470;\n  }" { (return_statement "return DAT_00108470;" return identifier ;) })) (expression_statement "pcVar4 = getenv("TMPDIR");" (assignment_expression "pcVar4 = getenv("TMPDIR")" identifier = (call_expression "getenv("TMPDIR")" identifier (argument_list "("TMPDIR")" ( (string_literal ""TMPDIR"" " string_content ") )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }" { (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" identifier = (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") )))) ;) (labeled_statement "LAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" statement_identifier : (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00104be9;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00104be9;" goto statement_identifier ;)) }))) (expression_statement "pcVar4 = getenv("TEMP");" (assignment_expression "pcVar4 = getenv("TEMP")" identifier = (call_expression "getenv("TEMP")" identifier (argument_list "("TEMP")" ( (string_literal ""TEMP"" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00104bf5;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00104bf5;" goto statement_identifier ;)) })) (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" identifier = (call_expression "access("/tmp",7)" identifier (argument_list "("/tmp",7)" ( (string_literal ""/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }" { (expression_statement "sVar5 = 4;" (assignment_expression "sVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" identifier = number_literal) ;) (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" identifier = number_literal) ;) (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" identifier = (string_literal ""/tmp"" " string_content ")) ;) }) (else_clause "else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" { (expression_statement "iVar1 = access("/var/tmp",7);" (assignment_expression "iVar1 = access("/var/tmp",7)" identifier = (call_expression "access("/var/tmp",7)" identifier (argument_list "("/var/tmp",7)" ( (string_literal ""/var/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }" { (expression_statement "puVar7 = &DAT_00105b80;" (assignment_expression "puVar7 = &DAT_00105b80" identifier = (pointer_expression "&DAT_00105b80" & identifier)) ;) (do_statement "do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);" do (compound_statement "{\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" identifier = (binary_expression "uVar2 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) (expression_statement "pcVar4 = "/var/tmp";" (assignment_expression "pcVar4 = "/var/tmp"" identifier = (string_literal ""/var/tmp"" " string_content ")) ;) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" identifier = (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" ( (binary_expression "uVar2 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n          uVar3 = uVar3 >> 0x10;\n        }" { (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" identifier = (binary_expression "(long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" ( (binary_expression "-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" identifier (argument_list "((byte)uVar3,(byte)uVar3)" ( (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" else (compound_statement "{\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" { (expression_statement "iVar1 = access("/usr/tmp",7);" (assignment_expression "iVar1 = access("/usr/tmp",7)" identifier = (call_expression "access("/usr/tmp",7)" identifier (argument_list "("/usr/tmp",7)" ( (string_literal ""/usr/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }" { (expression_statement "puVar7 = &DAT_00105b90;" (assignment_expression "puVar7 = &DAT_00105b90" identifier = (pointer_expression "&DAT_00105b90" & identifier)) ;) (do_statement "do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);" do (compound_statement "{\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" identifier = (binary_expression "uVar2 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) (expression_statement "pcVar4 = "/usr/tmp";" (assignment_expression "pcVar4 = "/usr/tmp"" identifier = (string_literal ""/usr/tmp"" " string_content ")) ;) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" identifier = (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" ( (binary_expression "uVar2 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            uVar3 = uVar3 >> 0x10;\n          }" { (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" identifier = (binary_expression "(long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" ( (binary_expression "-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" identifier (argument_list "((byte)uVar3,(byte)uVar3)" ( (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" else (compound_statement "{\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" { (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" identifier = (call_expression "access("/tmp",7)" identifier (argument_list "("/tmp",7)" ( (string_literal ""/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }" { (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" identifier = (string_literal ""/tmp"" " string_content ")) ;) (expression_statement "sVar5 = strlen("/tmp");" (assignment_expression "sVar5 = strlen("/tmp")" identifier = (call_expression "strlen("/tmp")" identifier (argument_list "("/tmp")" ( (string_literal ""/tmp"" " string_content ") )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" else (compound_statement "{\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" { (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "iVar1 = 3;" (assignment_expression "iVar1 = 3" identifier = number_literal) ;) (expression_statement "pcVar4 = ".";" (assignment_expression "pcVar4 = "."" identifier = (string_literal ""."" " string_content ")) ;) }))) }))) }))) }))) }) (else_clause "else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" else (compound_statement "{\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" { (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" identifier = (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") )))) ;) (goto_statement "goto LAB_00104c38;" goto statement_identifier ;) })) (expression_statement "getenv("TMP");" (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") ))) ;) (labeled_statement "LAB_00104be9:\n    getenv("TEMP");" statement_identifier : (expression_statement "getenv("TEMP");" (call_expression "getenv("TEMP")" identifier (argument_list "("TEMP")" ( (string_literal ""TEMP"" " string_content ") ))) ;)) (labeled_statement "LAB_00104bf5:\n    sVar5 = strlen(pcVar4);" statement_identifier : (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;)) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "sVar5 = sVar5 & 0xffffffff;" (assignment_expression "sVar5 = sVar5 & 0xffffffff" identifier = (binary_expression "sVar5 & 0xffffffff" identifier & number_literal)) ;) }))) (expression_statement "__dest = (char *)xmalloc(iVar1);" (assignment_expression "__dest = (char *)xmalloc(iVar1)" identifier = (cast_expression "(char *)xmalloc(iVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))))) ;) (expression_statement "pcVar4 = strcpy(__dest,pcVar4);" (assignment_expression "pcVar4 = strcpy(__dest,pcVar4)" identifier = (call_expression "strcpy(__dest,pcVar4)" identifier (argument_list "(__dest,pcVar4)" ( identifier , identifier )))) ;) (expression_statement "pcVar4[sVar5] = '/';" (assignment_expression "pcVar4[sVar5] = '/'" (subscript_expression "pcVar4[sVar5]" identifier [ identifier ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "DAT_00108470 = pcVar4;" (assignment_expression "DAT_00108470 = pcVar4" identifier = identifier) ;) (expression_statement "pcVar4[uVar8] = '\0';" (assignment_expression "pcVar4[uVar8] = '\0'" (subscript_expression "pcVar4[uVar8]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return pcVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nchar * choose_tmpdir(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (memoized_tmpdir != (char *)0x0) {\n    return memoized_tmpdir;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  memoized_tmpdir = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}\n\n" comment (function_definition "char * choose_tmpdir(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (memoized_tmpdir != (char *)0x0) {\n    return memoized_tmpdir;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  memoized_tmpdir = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" primitive_type (pointer_declarator "* choose_tmpdir(void)" * (function_declarator "choose_tmpdir(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (memoized_tmpdir != (char *)0x0) {\n    return memoized_tmpdir;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  memoized_tmpdir = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (if_statement "if (memoized_tmpdir != (char *)0x0) {\n    return memoized_tmpdir;\n  }" if (parenthesized_expression "(memoized_tmpdir != (char *)0x0)" ( (binary_expression "memoized_tmpdir != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return memoized_tmpdir;\n  }" { (return_statement "return memoized_tmpdir;" return identifier ;) })) (expression_statement "pcVar4 = getenv("TMPDIR");" (assignment_expression "pcVar4 = getenv("TMPDIR")" identifier = (call_expression "getenv("TMPDIR")" identifier (argument_list "("TMPDIR")" ( (string_literal ""TMPDIR"" " string_content ") )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }" { (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" identifier = (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") )))) ;) (labeled_statement "LAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" statement_identifier : (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00104be9;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00104be9;" goto statement_identifier ;)) }))) (expression_statement "pcVar4 = getenv("TEMP");" (assignment_expression "pcVar4 = getenv("TEMP")" identifier = (call_expression "getenv("TEMP")" identifier (argument_list "("TEMP")" ( (string_literal ""TEMP"" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00104bf5;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00104bf5;" goto statement_identifier ;)) })) (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" identifier = (call_expression "access("/tmp",7)" identifier (argument_list "("/tmp",7)" ( (string_literal ""/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }" { (expression_statement "sVar5 = 4;" (assignment_expression "sVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" identifier = number_literal) ;) (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" identifier = number_literal) ;) (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" identifier = (string_literal ""/tmp"" " string_content ")) ;) }) (else_clause "else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" { (expression_statement "iVar1 = access("/var/tmp",7);" (assignment_expression "iVar1 = access("/var/tmp",7)" identifier = (call_expression "access("/var/tmp",7)" identifier (argument_list "("/var/tmp",7)" ( (string_literal ""/var/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = (uint *)"/var/tmp";\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }" { (expression_statement "puVar7 = (uint *)"/var/tmp";" (assignment_expression "puVar7 = (uint *)"/var/tmp"" identifier = (cast_expression "(uint *)"/var/tmp"" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""/var/tmp"" " string_content "))) ;) (do_statement "do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);" do (compound_statement "{\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" identifier = (binary_expression "uVar2 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) (expression_statement "pcVar4 = "/var/tmp";" (assignment_expression "pcVar4 = "/var/tmp"" identifier = (string_literal ""/var/tmp"" " string_content ")) ;) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" identifier = (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" ( (binary_expression "uVar2 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n          uVar3 = uVar3 >> 0x10;\n        }" { (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" identifier = (binary_expression "(long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" ( (binary_expression "-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" identifier (argument_list "((byte)uVar3,(byte)uVar3)" ( (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" else (compound_statement "{\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" { (expression_statement "iVar1 = access("/usr/tmp",7);" (assignment_expression "iVar1 = access("/usr/tmp",7)" identifier = (call_expression "access("/usr/tmp",7)" identifier (argument_list "("/usr/tmp",7)" ( (string_literal ""/usr/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar7 = (uint *)"/usr/tmp";\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }" { (expression_statement "puVar7 = (uint *)"/usr/tmp";" (assignment_expression "puVar7 = (uint *)"/usr/tmp"" identifier = (cast_expression "(uint *)"/usr/tmp"" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""/usr/tmp"" " string_content "))) ;) (do_statement "do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);" do (compound_statement "{\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" identifier = (binary_expression "uVar2 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) (expression_statement "pcVar4 = "/usr/tmp";" (assignment_expression "pcVar4 = "/usr/tmp"" identifier = (string_literal ""/usr/tmp"" " string_content ")) ;) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" identifier = (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" ( (binary_expression "uVar2 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            uVar3 = uVar3 >> 0x10;\n          }" { (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" identifier = (binary_expression "(long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" ( (binary_expression "-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" identifier (argument_list "((byte)uVar3,(byte)uVar3)" ( (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" else (compound_statement "{\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" { (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" identifier = (call_expression "access("/tmp",7)" identifier (argument_list "("/tmp",7)" ( (string_literal ""/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }" { (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" identifier = (string_literal ""/tmp"" " string_content ")) ;) (expression_statement "sVar5 = strlen("/tmp");" (assignment_expression "sVar5 = strlen("/tmp")" identifier = (call_expression "strlen("/tmp")" identifier (argument_list "("/tmp")" ( (string_literal ""/tmp"" " string_content ") )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" else (compound_statement "{\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" { (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "iVar1 = 3;" (assignment_expression "iVar1 = 3" identifier = number_literal) ;) (expression_statement "pcVar4 = ".";" (assignment_expression "pcVar4 = "."" identifier = (string_literal ""."" " string_content ")) ;) }))) }))) }))) }))) }) (else_clause "else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" else (compound_statement "{\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" { (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" identifier = (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") )))) ;) (goto_statement "goto LAB_00104c38;" goto statement_identifier ;) })) (expression_statement "getenv("TMP");" (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") ))) ;) (labeled_statement "LAB_00104be9:\n    getenv("TEMP");" statement_identifier : (expression_statement "getenv("TEMP");" (call_expression "getenv("TEMP")" identifier (argument_list "("TEMP")" ( (string_literal ""TEMP"" " string_content ") ))) ;)) (labeled_statement "LAB_00104bf5:\n    sVar5 = strlen(pcVar4);" statement_identifier : (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;)) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "sVar5 = sVar5 & 0xffffffff;" (assignment_expression "sVar5 = sVar5 & 0xffffffff" identifier = (binary_expression "sVar5 & 0xffffffff" identifier & number_literal)) ;) }))) (expression_statement "__dest = (char *)xmalloc(iVar1);" (assignment_expression "__dest = (char *)xmalloc(iVar1)" identifier = (cast_expression "(char *)xmalloc(iVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))))) ;) (expression_statement "pcVar4 = strcpy(__dest,pcVar4);" (assignment_expression "pcVar4 = strcpy(__dest,pcVar4)" identifier = (call_expression "strcpy(__dest,pcVar4)" identifier (argument_list "(__dest,pcVar4)" ( identifier , identifier )))) ;) (expression_statement "pcVar4[sVar5] = '/';" (assignment_expression "pcVar4[sVar5] = '/'" (subscript_expression "pcVar4[sVar5]" identifier [ identifier ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "memoized_tmpdir = pcVar4;" (assignment_expression "memoized_tmpdir = pcVar4" identifier = identifier) ;) (expression_statement "pcVar4[uVar8] = '\0';" (assignment_expression "pcVar4[uVar8] = '\0'" (subscript_expression "pcVar4[uVar8]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return pcVar4;" return identifier ;) })))
(translation_unit "char * FUN_00104ba0(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}\n\n" (function_definition "char * FUN_00104ba0(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" primitive_type (pointer_declarator "* FUN_00104ba0(void)" * (function_declarator "FUN_00104ba0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "char *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (if_statement "if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }" if (parenthesized_expression "(DAT_00108470 != (char *)0x0)" ( (binary_expression "DAT_00108470 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return DAT_00108470;\n  }" { (return_statement "return DAT_00108470;" return identifier ;) })) (expression_statement "pcVar4 = getenv("TMPDIR");" (assignment_expression "pcVar4 = getenv("TMPDIR")" identifier = (call_expression "getenv("TMPDIR")" identifier (argument_list "("TMPDIR")" ( (string_literal ""TMPDIR"" " string_content ") )))) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }" { (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" identifier = (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") )))) ;) (labeled_statement "LAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" statement_identifier : (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00104be9;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00104be9;" goto statement_identifier ;)) }))) (expression_statement "pcVar4 = getenv("TEMP");" (assignment_expression "pcVar4 = getenv("TEMP")" identifier = (call_expression "getenv("TEMP")" identifier (argument_list "("TEMP")" ( (string_literal ""TEMP"" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 == 0) goto LAB_00104bf5;" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00104bf5;" goto statement_identifier ;)) })) (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" identifier = (call_expression "access("/tmp",7)" identifier (argument_list "("/tmp",7)" ( (string_literal ""/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }" { (expression_statement "sVar5 = 4;" (assignment_expression "sVar5 = 4" identifier = number_literal) ;) (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" identifier = number_literal) ;) (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" identifier = number_literal) ;) (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" identifier = (string_literal ""/tmp"" " string_content ")) ;) }) (else_clause "else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" else (compound_statement "{\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" { (expression_statement "iVar1 = access("/var/tmp",7);" (assignment_expression "iVar1 = access("/var/tmp",7)" identifier = (call_expression "access("/var/tmp",7)" identifier (argument_list "("/var/tmp",7)" ( (string_literal ""/var/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }" { (expression_statement "puVar7 = &DAT_00105b80;" (assignment_expression "puVar7 = &DAT_00105b80" identifier = (pointer_expression "&DAT_00105b80" & identifier)) ;) (do_statement "do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);" do (compound_statement "{\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" identifier = (binary_expression "uVar2 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) (expression_statement "pcVar4 = "/var/tmp";" (assignment_expression "pcVar4 = "/var/tmp"" identifier = (string_literal ""/var/tmp"" " string_content ")) ;) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" identifier = (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" ( (binary_expression "uVar2 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n          uVar3 = uVar3 >> 0x10;\n        }" { (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" identifier = (binary_expression "(long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" ( (binary_expression "-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" identifier (argument_list "((byte)uVar3,(byte)uVar3)" ( (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" else (compound_statement "{\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" { (expression_statement "iVar1 = access("/usr/tmp",7);" (assignment_expression "iVar1 = access("/usr/tmp",7)" identifier = (call_expression "access("/usr/tmp",7)" identifier (argument_list "("/usr/tmp",7)" ( (string_literal ""/usr/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }" { (expression_statement "puVar7 = &DAT_00105b90;" (assignment_expression "puVar7 = &DAT_00105b90" identifier = (pointer_expression "&DAT_00105b90" & identifier)) ;) (do_statement "do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);" do (compound_statement "{\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" identifier = (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" * identifier) + number_literal) & (unary_expression "~*puVar6" ~ (pointer_expression "*puVar6" * identifier)))) ;) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" identifier = (binary_expression "uVar2 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) ;) (expression_statement "pcVar4 = "/usr/tmp";" (assignment_expression "pcVar4 = "/usr/tmp"" identifier = (string_literal ""/usr/tmp"" " string_content ")) ;) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" identifier = (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" ( (binary_expression "uVar2 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            uVar3 = uVar3 >> 0x10;\n          }" { (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" identifier = (binary_expression "uVar3 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" { (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" identifier = (cast_expression "(uint *)((long)puVar6 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 6)" ( (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" identifier = (binary_expression "(long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" ( (binary_expression "-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" identifier (argument_list "((byte)uVar3,(byte)uVar3)" ( (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar3" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" else (compound_statement "{\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" { (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" identifier = (call_expression "access("/tmp",7)" identifier (argument_list "("/tmp",7)" ( (string_literal ""/tmp"" " string_content ") , number_literal )))) ;) (if_statement "if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }" { (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" identifier = (string_literal ""/tmp"" " string_content ")) ;) (expression_statement "sVar5 = strlen("/tmp");" (assignment_expression "sVar5 = strlen("/tmp")" identifier = (call_expression "strlen("/tmp")" identifier (argument_list "("/tmp")" ( (string_literal ""/tmp"" " string_content ") )))) ;) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) (else_clause "else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" else (compound_statement "{\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" { (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "iVar1 = 3;" (assignment_expression "iVar1 = 3" identifier = number_literal) ;) (expression_statement "pcVar4 = ".";" (assignment_expression "pcVar4 = "."" identifier = (string_literal ""."" " string_content ")) ;) }))) }))) }))) }))) }) (else_clause "else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" else (compound_statement "{\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" { (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" identifier = (call_expression "access(pcVar4,7)" identifier (argument_list "(pcVar4,7)" ( identifier , number_literal )))) ;) (if_statement "if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" if (parenthesized_expression "(iVar1 != 0)" ( (binary_expression "iVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" { (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" identifier = (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") )))) ;) (goto_statement "goto LAB_00104c38;" goto statement_identifier ;) })) (expression_statement "getenv("TMP");" (call_expression "getenv("TMP")" identifier (argument_list "("TMP")" ( (string_literal ""TMP"" " string_content ") ))) ;) (labeled_statement "LAB_00104be9:\n    getenv("TEMP");" statement_identifier : (expression_statement "getenv("TEMP");" (call_expression "getenv("TEMP")" identifier (argument_list "("TEMP")" ( (string_literal ""TEMP"" " string_content ") ))) ;)) (labeled_statement "LAB_00104bf5:\n    sVar5 = strlen(pcVar4);" statement_identifier : (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" identifier = (call_expression "strlen(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier )))) ;)) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" identifier = (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" identifier = (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar5 + 1)" ( (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "sVar5 = sVar5 & 0xffffffff;" (assignment_expression "sVar5 = sVar5 & 0xffffffff" identifier = (binary_expression "sVar5 & 0xffffffff" identifier & number_literal)) ;) }))) (expression_statement "__dest = (char *)xmalloc(iVar1);" (assignment_expression "__dest = (char *)xmalloc(iVar1)" identifier = (cast_expression "(char *)xmalloc(iVar1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))))) ;) (expression_statement "pcVar4 = strcpy(__dest,pcVar4);" (assignment_expression "pcVar4 = strcpy(__dest,pcVar4)" identifier = (call_expression "strcpy(__dest,pcVar4)" identifier (argument_list "(__dest,pcVar4)" ( identifier , identifier )))) ;) (expression_statement "pcVar4[sVar5] = '/';" (assignment_expression "pcVar4[sVar5] = '/'" (subscript_expression "pcVar4[sVar5]" identifier [ identifier ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "DAT_00108470 = pcVar4;" (assignment_expression "DAT_00108470 = pcVar4" identifier = identifier) ;) (expression_statement "pcVar4[uVar8] = '\0';" (assignment_expression "pcVar4[uVar8] = '\0'" (subscript_expression "pcVar4[uVar8]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return pcVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (return_statement return IDENT ;) })))
(function_definition "char * FUN_00104ba0(void)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" (primitive_type "char") (pointer_declarator "* FUN_00104ba0(void)" (* "*") (function_declarator "FUN_00104ba0(void)" (identifier "FUN_00104ba0") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  char *pcVar4;\n  size_t sVar5;\n  char *__dest;\n  uint *puVar6;\n  uint *puVar7;\n  ulong uVar8;\n  bool bVar9;\n  \n  if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }\n  pcVar4 = getenv("TMPDIR");\n  if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }\n  __dest = (char *)xmalloc(iVar1);\n  pcVar4 = strcpy(__dest,pcVar4);\n  pcVar4[sVar5] = '/';\n  DAT_00108470 = pcVar4;\n  pcVar4[uVar8] = '\0';\n  return pcVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "char *__dest;" (primitive_type "char") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint *puVar7;" (type_identifier "uint") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (if_statement "if (DAT_00108470 != (char *)0x0) {\n    return DAT_00108470;\n  }" (if "if") (parenthesized_expression "(DAT_00108470 != (char *)0x0)" (( "(") (binary_expression "DAT_00108470 != (char *)0x0" (identifier "DAT_00108470") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return DAT_00108470;\n  }" ({ "{") (return_statement "return DAT_00108470;" (return "return") (identifier "DAT_00108470") (; ";")) (} "}"))) (expression_statement "pcVar4 = getenv("TMPDIR");" (assignment_expression "pcVar4 = getenv("TMPDIR")" (identifier "pcVar4") (= "=") (call_expression "getenv("TMPDIR")" (identifier "getenv") (argument_list "("TMPDIR")" (( "(") (string_literal ""TMPDIR"" (" """) (string_content "TMPDIR") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar4 == (char *)0x0) {\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }\n  else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" (if "if") (parenthesized_expression "(pcVar4 == (char *)0x0)" (( "(") (binary_expression "pcVar4 == (char *)0x0" (identifier "pcVar4") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pcVar4 = getenv("TMP");\nLAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }\n    pcVar4 = getenv("TEMP");\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }\n    iVar1 = access("/tmp",7);\n    if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" (identifier "pcVar4") (= "=") (call_expression "getenv("TMP")" (identifier "getenv") (argument_list "("TMP")" (( "(") (string_literal ""TMP"" (" """) (string_content "TMP") (" """)) () ")")))) (; ";")) (labeled_statement "LAB_00104c38:\n    if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" (statement_identifier "LAB_00104c38") (: ":") (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104be9;\n    }" ({ "{") (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" (identifier "iVar1") (= "=") (call_expression "access(pcVar4,7)" (identifier "access") (argument_list "(pcVar4,7)" (( "(") (identifier "pcVar4") (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) goto LAB_00104be9;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00104be9;" (goto "goto") (statement_identifier "LAB_00104be9") (; ";"))) (} "}")))) (expression_statement "pcVar4 = getenv("TEMP");" (assignment_expression "pcVar4 = getenv("TEMP")" (identifier "pcVar4") (= "=") (call_expression "getenv("TEMP")" (identifier "getenv") (argument_list "("TEMP")" (( "(") (string_literal ""TEMP"" (" """) (string_content "TEMP") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar1 = access(pcVar4,7);\n      if (iVar1 == 0) goto LAB_00104bf5;\n    }" ({ "{") (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" (identifier "iVar1") (= "=") (call_expression "access(pcVar4,7)" (identifier "access") (argument_list "(pcVar4,7)" (( "(") (identifier "pcVar4") (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) goto LAB_00104bf5;" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00104bf5;" (goto "goto") (statement_identifier "LAB_00104bf5") (; ";"))) (} "}"))) (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" (identifier "iVar1") (= "=") (call_expression "access("/tmp",7)" (identifier "access") (argument_list "("/tmp",7)" (( "(") (string_literal ""/tmp"" (" """) (string_content "/tmp") (" """)) (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }\n    else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      sVar5 = 4;\n      uVar8 = 5;\n      iVar1 = 6;\n      pcVar4 = "/tmp";\n    }" ({ "{") (expression_statement "sVar5 = 4;" (assignment_expression "sVar5 = 4" (identifier "sVar5") (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar8 = 5;" (assignment_expression "uVar8 = 5" (identifier "uVar8") (= "=") (number_literal "5")) (; ";")) (expression_statement "iVar1 = 6;" (assignment_expression "iVar1 = 6" (identifier "iVar1") (= "=") (number_literal "6")) (; ";")) (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" (identifier "pcVar4") (= "=") (string_literal ""/tmp"" (" """) (string_content "/tmp") (" """))) (; ";")) (} "}")) (else_clause "else {\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar1 = access("/var/tmp",7);\n      if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "iVar1 = access("/var/tmp",7);" (assignment_expression "iVar1 = access("/var/tmp",7)" (identifier "iVar1") (= "=") (call_expression "access("/var/tmp",7)" (identifier "access") (argument_list "("/var/tmp",7)" (( "(") (string_literal ""/var/tmp"" (" """) (string_content "/var/tmp") (" """)) (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }\n      else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar7 = &DAT_00105b80;\n        do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);\n        pcVar4 = "/var/tmp";\n        bVar9 = (uVar2 & 0x8080) == 0;\n        if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }\n        if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }\n        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n        iVar1 = (int)sVar5 + 2;\n        uVar8 = (ulong)((int)sVar5 + 1);\n      }" ({ "{") (expression_statement "puVar7 = &DAT_00105b80;" (assignment_expression "puVar7 = &DAT_00105b80" (identifier "puVar7") (= "=") (pointer_expression "&DAT_00105b80" (& "&") (identifier "DAT_00105b80"))) (; ";")) (do_statement "do {\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        } while (uVar3 == 0);" (do "do") (compound_statement "{\n          puVar6 = puVar7;\n          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n          uVar3 = uVar2 & 0x80808080;\n          puVar7 = puVar6 + 1;\n        }" ({ "{") (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" (identifier "puVar6") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" (identifier "uVar2") (= "=") (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar6" (~ "~") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))))) (; ";")) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" (identifier "uVar3") (= "=") (binary_expression "uVar2 & 0x80808080" (identifier "uVar2") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "pcVar4 = "/var/tmp";" (assignment_expression "pcVar4 = "/var/tmp"" (identifier "pcVar4") (= "=") (string_literal ""/var/tmp"" (" """) (string_content "/var/tmp") (" """))) (; ";")) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" (identifier "bVar9") (= "=") (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" (( "(") (binary_expression "uVar2 & 0x8080" (identifier "uVar2") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar9) {\n          uVar3 = uVar3 >> 0x10;\n        }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n          uVar3 = uVar3 >> 0x10;\n        }" ({ "{") (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 0x10" (identifier "uVar3") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar9) {\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n          puVar7 = (uint *)((long)puVar6 + 6);\n        }" ({ "{") (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" (identifier "puVar7") (= "=") (cast_expression "(uint *)((long)puVar6 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 + 6)" (( "(") (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (identifier "sVar5") (= "=") (binary_expression "(long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (+ "+") (parenthesized_expression "(-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (( "(") (binary_expression "-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" (number_literal "-0x105b83") (- "-") (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" (identifier "CARRY1") (argument_list "((byte)uVar3,(byte)uVar3)" (( "(") (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) (, ",") (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) () ")"))))) () ")")))) (; ";")) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" (identifier "iVar1") (= "=") (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" (identifier "uVar8") (= "=") (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)sVar5 + 1)" (( "(") (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" (else "else") (compound_statement "{\n        iVar1 = access("/usr/tmp",7);\n        if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }\n      }" ({ "{") (expression_statement "iVar1 = access("/usr/tmp",7);" (assignment_expression "iVar1 = access("/usr/tmp",7)" (identifier "iVar1") (= "=") (call_expression "access("/usr/tmp",7)" (identifier "access") (argument_list "("/usr/tmp",7)" (( "(") (string_literal ""/usr/tmp"" (" """) (string_content "/usr/tmp") (" """)) (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }\n        else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar7 = &DAT_00105b90;\n          do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);\n          pcVar4 = "/usr/tmp";\n          bVar9 = (uVar2 & 0x8080) == 0;\n          if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }\n          if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }\n          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));\n          iVar1 = (int)sVar5 + 2;\n          uVar8 = (ulong)((int)sVar5 + 1);\n        }" ({ "{") (expression_statement "puVar7 = &DAT_00105b90;" (assignment_expression "puVar7 = &DAT_00105b90" (identifier "puVar7") (= "=") (pointer_expression "&DAT_00105b90" (& "&") (identifier "DAT_00105b90"))) (; ";")) (do_statement "do {\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          } while (uVar3 == 0);" (do "do") (compound_statement "{\n            puVar6 = puVar7;\n            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;\n            uVar3 = uVar2 & 0x80808080;\n            puVar7 = puVar6 + 1;\n          }" ({ "{") (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" (identifier "puVar6") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;" (assignment_expression "uVar2 = *puVar6 + 0xfefefeff & ~*puVar6" (identifier "uVar2") (= "=") (binary_expression "*puVar6 + 0xfefefeff & ~*puVar6" (binary_expression "*puVar6 + 0xfefefeff" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar6" (~ "~") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))))) (; ";")) (expression_statement "uVar3 = uVar2 & 0x80808080;" (assignment_expression "uVar3 = uVar2 & 0x80808080" (identifier "uVar3") (= "=") (binary_expression "uVar2 & 0x80808080" (identifier "uVar2") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "pcVar4 = "/usr/tmp";" (assignment_expression "pcVar4 = "/usr/tmp"" (identifier "pcVar4") (= "=") (string_literal ""/usr/tmp"" (" """) (string_content "/usr/tmp") (" """))) (; ";")) (expression_statement "bVar9 = (uVar2 & 0x8080) == 0;" (assignment_expression "bVar9 = (uVar2 & 0x8080) == 0" (identifier "bVar9") (= "=") (binary_expression "(uVar2 & 0x8080) == 0" (parenthesized_expression "(uVar2 & 0x8080)" (( "(") (binary_expression "uVar2 & 0x8080" (identifier "uVar2") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar9) {\n            uVar3 = uVar3 >> 0x10;\n          }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n            uVar3 = uVar3 >> 0x10;\n          }" ({ "{") (expression_statement "uVar3 = uVar3 >> 0x10;" (assignment_expression "uVar3 = uVar3 >> 0x10" (identifier "uVar3") (= "=") (binary_expression "uVar3 >> 0x10" (identifier "uVar3") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar9) {\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n            puVar7 = (uint *)((long)puVar6 + 6);\n          }" ({ "{") (expression_statement "puVar7 = (uint *)((long)puVar6 + 6);" (assignment_expression "puVar7 = (uint *)((long)puVar6 + 6)" (identifier "puVar7") (= "=") (cast_expression "(uint *)((long)puVar6 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 + 6)" (( "(") (binary_expression "(long)puVar6 + 6" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));" (assignment_expression "sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (identifier "sVar5") (= "=") (binary_expression "(long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")) (+ "+") (parenthesized_expression "(-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3))" (( "(") (binary_expression "-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3)" (number_literal "-0x105b93") (- "-") (cast_expression "(ulong)CARRY1((byte)uVar3,(byte)uVar3)" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CARRY1((byte)uVar3,(byte)uVar3)" (identifier "CARRY1") (argument_list "((byte)uVar3,(byte)uVar3)" (( "(") (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) (, ",") (cast_expression "(byte)uVar3" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar3")) () ")"))))) () ")")))) (; ";")) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" (identifier "iVar1") (= "=") (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" (identifier "uVar8") (= "=") (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)sVar5 + 1)" (( "(") (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" (else "else") (compound_statement "{\n          iVar1 = access("/tmp",7);\n          if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }\n        }" ({ "{") (expression_statement "iVar1 = access("/tmp",7);" (assignment_expression "iVar1 = access("/tmp",7)" (identifier "iVar1") (= "=") (call_expression "access("/tmp",7)" (identifier "access") (argument_list "("/tmp",7)" (( "(") (string_literal ""/tmp"" (" """) (string_content "/tmp") (" """)) (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }\n          else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar4 = "/tmp";\n            sVar5 = strlen("/tmp");\n            iVar1 = (int)sVar5 + 2;\n            uVar8 = (ulong)((int)sVar5 + 1);\n          }" ({ "{") (expression_statement "pcVar4 = "/tmp";" (assignment_expression "pcVar4 = "/tmp"" (identifier "pcVar4") (= "=") (string_literal ""/tmp"" (" """) (string_content "/tmp") (" """))) (; ";")) (expression_statement "sVar5 = strlen("/tmp");" (assignment_expression "sVar5 = strlen("/tmp")" (identifier "sVar5") (= "=") (call_expression "strlen("/tmp")" (identifier "strlen") (argument_list "("/tmp")" (( "(") (string_literal ""/tmp"" (" """) (string_content "/tmp") (" """)) () ")")))) (; ";")) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" (identifier "iVar1") (= "=") (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" (identifier "uVar8") (= "=") (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)sVar5 + 1)" (( "(") (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" (else "else") (compound_statement "{\n            sVar5 = 1;\n            uVar8 = 2;\n            iVar1 = 3;\n            pcVar4 = ".";\n          }" ({ "{") (expression_statement "sVar5 = 1;" (assignment_expression "sVar5 = 1" (identifier "sVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" (identifier "uVar8") (= "=") (number_literal "2")) (; ";")) (expression_statement "iVar1 = 3;" (assignment_expression "iVar1 = 3" (identifier "iVar1") (= "=") (number_literal "3")) (; ";")) (expression_statement "pcVar4 = ".";" (assignment_expression "pcVar4 = "."" (identifier "pcVar4") (= "=") (string_literal ""."" (" """) (string_content ".") (" """))) (; ";")) (} "}")))) (} "}")))) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" (else "else") (compound_statement "{\n    iVar1 = access(pcVar4,7);\n    if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }\n    getenv("TMP");\nLAB_00104be9:\n    getenv("TEMP");\nLAB_00104bf5:\n    sVar5 = strlen(pcVar4);\n    iVar1 = (int)sVar5 + 2;\n    uVar8 = (ulong)((int)sVar5 + 1);\n    sVar5 = sVar5 & 0xffffffff;\n  }" ({ "{") (expression_statement "iVar1 = access(pcVar4,7);" (assignment_expression "iVar1 = access(pcVar4,7)" (identifier "iVar1") (= "=") (call_expression "access(pcVar4,7)" (identifier "access") (argument_list "(pcVar4,7)" (( "(") (identifier "pcVar4") (, ",") (number_literal "7") () ")")))) (; ";")) (if_statement "if (iVar1 != 0) {\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" (if "if") (parenthesized_expression "(iVar1 != 0)" (( "(") (binary_expression "iVar1 != 0" (identifier "iVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar4 = getenv("TMP");\n      goto LAB_00104c38;\n    }" ({ "{") (expression_statement "pcVar4 = getenv("TMP");" (assignment_expression "pcVar4 = getenv("TMP")" (identifier "pcVar4") (= "=") (call_expression "getenv("TMP")" (identifier "getenv") (argument_list "("TMP")" (( "(") (string_literal ""TMP"" (" """) (string_content "TMP") (" """)) () ")")))) (; ";")) (goto_statement "goto LAB_00104c38;" (goto "goto") (statement_identifier "LAB_00104c38") (; ";")) (} "}"))) (expression_statement "getenv("TMP");" (call_expression "getenv("TMP")" (identifier "getenv") (argument_list "("TMP")" (( "(") (string_literal ""TMP"" (" """) (string_content "TMP") (" """)) () ")"))) (; ";")) (labeled_statement "LAB_00104be9:\n    getenv("TEMP");" (statement_identifier "LAB_00104be9") (: ":") (expression_statement "getenv("TEMP");" (call_expression "getenv("TEMP")" (identifier "getenv") (argument_list "("TEMP")" (( "(") (string_literal ""TEMP"" (" """) (string_content "TEMP") (" """)) () ")"))) (; ";"))) (labeled_statement "LAB_00104bf5:\n    sVar5 = strlen(pcVar4);" (statement_identifier "LAB_00104bf5") (: ":") (expression_statement "sVar5 = strlen(pcVar4);" (assignment_expression "sVar5 = strlen(pcVar4)" (identifier "sVar5") (= "=") (call_expression "strlen(pcVar4)" (identifier "strlen") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")")))) (; ";"))) (expression_statement "iVar1 = (int)sVar5 + 2;" (assignment_expression "iVar1 = (int)sVar5 + 2" (identifier "iVar1") (= "=") (binary_expression "(int)sVar5 + 2" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar8 = (ulong)((int)sVar5 + 1);" (assignment_expression "uVar8 = (ulong)((int)sVar5 + 1)" (identifier "uVar8") (= "=") (call_expression "(ulong)((int)sVar5 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)sVar5 + 1)" (( "(") (binary_expression "(int)sVar5 + 1" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "sVar5 = sVar5 & 0xffffffff;" (assignment_expression "sVar5 = sVar5 & 0xffffffff" (identifier "sVar5") (= "=") (binary_expression "sVar5 & 0xffffffff" (identifier "sVar5") (& "&") (number_literal "0xffffffff"))) (; ";")) (} "}")))) (expression_statement "__dest = (char *)xmalloc(iVar1);" (assignment_expression "__dest = (char *)xmalloc(iVar1)" (identifier "__dest") (= "=") (cast_expression "(char *)xmalloc(iVar1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(iVar1)" (identifier "xmalloc") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))))) (; ";")) (expression_statement "pcVar4 = strcpy(__dest,pcVar4);" (assignment_expression "pcVar4 = strcpy(__dest,pcVar4)" (identifier "pcVar4") (= "=") (call_expression "strcpy(__dest,pcVar4)" (identifier "strcpy") (argument_list "(__dest,pcVar4)" (( "(") (identifier "__dest") (, ",") (identifier "pcVar4") () ")")))) (; ";")) (expression_statement "pcVar4[sVar5] = '/';" (assignment_expression "pcVar4[sVar5] = '/'" (subscript_expression "pcVar4[sVar5]" (identifier "pcVar4") ([ "[") (identifier "sVar5") (] "]")) (= "=") (char_literal "'/'" (' "'") (character "/") (' "'"))) (; ";")) (expression_statement "DAT_00108470 = pcVar4;" (assignment_expression "DAT_00108470 = pcVar4" (identifier "DAT_00108470") (= "=") (identifier "pcVar4")) (; ";")) (expression_statement "pcVar4[uVar8] = '\0';" (assignment_expression "pcVar4[uVar8] = '\0'" (subscript_expression "pcVar4[uVar8]" (identifier "pcVar4") ([ "[") (identifier "uVar8") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (return_statement "return pcVar4;" (return "return") (identifier "pcVar4") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

char * function_1(void)

{
  int var_5;
  type_1 var_6;
  type_1 var_8;
  char *var_3;
  size_t var_11;
  char *__dest;
  type_1 *var_7;
  type_1 *puVar7;
  type_2 uVar8;
  bool bVar9;
  
  if (var_1 != (char *)0x0) {
    return var_1;
  }
  var_3 = var_2("TMPDIR");
  if (var_3 == (char *)0x0) {
    var_3 = var_2("TMP");
LAB_00104c38:
    if (var_3 != (char *)0x0) {
      var_5 = var_4(var_3,7);
      if (var_5 == 0) goto LAB_00104be9;
    }
    var_3 = var_2("TEMP");
    if (var_3 != (char *)0x0) {
      var_5 = var_4(var_3,7);
      if (var_5 == 0) goto LAB_00104bf5;
    }
    var_5 = var_4("/tmp",7);
    if (var_5 == 0) {
      var_11 = 4;
      uVar8 = 5;
      var_5 = 6;
      var_3 = "/tmp";
    }
    else {
      var_5 = var_4("/var/tmp",7);
      if (var_5 == 0) {
        puVar7 = (type_1 *)"/var/tmp";
        do {
          var_7 = puVar7;
          var_6 = *var_7 + 0xfefefeff & ~*var_7;
          var_8 = var_6 & 0x80808080;
          puVar7 = var_7 + 1;
        } while (var_8 == 0);
        var_3 = "/var/tmp";
        bVar9 = (var_6 & 0x8080) == 0;
        if (bVar9) {
          var_8 = var_8 >> 0x10;
        }
        if (bVar9) {
          puVar7 = (type_1 *)((long)var_7 + 6);
        }
        var_11 = (long)puVar7 + (-0x105b83 - (type_2)var_9((type_3)var_8,(type_3)var_8));
        var_5 = (int)var_11 + 2;
        uVar8 = (type_2)((int)var_11 + 1);
      }
      else {
        var_5 = var_4("/usr/tmp",7);
        if (var_5 == 0) {
          puVar7 = (type_1 *)"/usr/tmp";
          do {
            var_7 = puVar7;
            var_6 = *var_7 + 0xfefefeff & ~*var_7;
            var_8 = var_6 & 0x80808080;
            puVar7 = var_7 + 1;
          } while (var_8 == 0);
          var_3 = "/usr/tmp";
          bVar9 = (var_6 & 0x8080) == 0;
          if (bVar9) {
            var_8 = var_8 >> 0x10;
          }
          if (bVar9) {
            puVar7 = (type_1 *)((long)var_7 + 6);
          }
          var_11 = (long)puVar7 + (-0x105b93 - (type_2)var_9((type_3)var_8,(type_3)var_8));
          var_5 = (int)var_11 + 2;
          uVar8 = (type_2)((int)var_11 + 1);
        }
        else {
          var_5 = var_4("/tmp",7);
          if (var_5 == 0) {
            var_3 = "/tmp";
            var_11 = var_10("/tmp");
            var_5 = (int)var_11 + 2;
            uVar8 = (type_2)((int)var_11 + 1);
          }
          else {
            var_11 = 1;
            uVar8 = 2;
            var_5 = 3;
            var_3 = ".";
          }
        }
      }
    }
  }
  else {
    var_5 = var_4(var_3,7);
    if (var_5 != 0) {
      var_3 = var_2("TMP");
      goto LAB_00104c38;
    }
    var_2("TMP");
LAB_00104be9:
    var_2("TEMP");
LAB_00104bf5:
    var_11 = var_10(var_3);
    var_5 = (int)var_11 + 2;
    uVar8 = (type_2)((int)var_11 + 1);
    var_11 = var_11 & 0xffffffff;
  }
  __dest = (char *)var_12(var_5);
  var_3 = var_13(__dest,var_3);
  var_3[var_11] = '/';
  var_1 = var_3;
  var_3[uVar8] = '\0';
  return var_3;
}


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

char * MASKED(void)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  char *pcVar4;
  size_t sVar5;
  char *__dest;
  uint *puVar6;
  uint *puVar7;
  ulong uVar8;
  bool bVar9;
  
  if (DAT_00108470 != (char *)0x0) {
    return DAT_00108470;
  }
  pcVar4 = getenv("TMPDIR");
  if (pcVar4 == (char *)0x0) {
    pcVar4 = getenv("TMP");
LAB_00104c38:
    if (pcVar4 != (char *)0x0) {
      iVar1 = access(pcVar4,7);
      if (iVar1 == 0) goto LAB_00104be9;
    }
    pcVar4 = getenv("TEMP");
    if (pcVar4 != (char *)0x0) {
      iVar1 = access(pcVar4,7);
      if (iVar1 == 0) goto LAB_00104bf5;
    }
    iVar1 = access("/tmp",7);
    if (iVar1 == 0) {
      sVar5 = 4;
      uVar8 = 5;
      iVar1 = 6;
      pcVar4 = "/tmp";
    }
    else {
      iVar1 = access("/var/tmp",7);
      if (iVar1 == 0) {
        puVar7 = &DAT_00105b80;
        do {
          puVar6 = puVar7;
          uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;
          uVar3 = uVar2 & 0x80808080;
          puVar7 = puVar6 + 1;
        } while (uVar3 == 0);
        pcVar4 = "/var/tmp";
        bVar9 = (uVar2 & 0x8080) == 0;
        if (bVar9) {
          uVar3 = uVar3 >> 0x10;
        }
        if (bVar9) {
          puVar7 = (uint *)((long)puVar6 + 6);
        }
        sVar5 = (long)puVar7 + (-0x105b83 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));
        iVar1 = (int)sVar5 + 2;
        uVar8 = (ulong)((int)sVar5 + 1);
      }
      else {
        iVar1 = access("/usr/tmp",7);
        if (iVar1 == 0) {
          puVar7 = &DAT_00105b90;
          do {
            puVar6 = puVar7;
            uVar2 = *puVar6 + 0xfefefeff & ~*puVar6;
            uVar3 = uVar2 & 0x80808080;
            puVar7 = puVar6 + 1;
          } while (uVar3 == 0);
          pcVar4 = "/usr/tmp";
          bVar9 = (uVar2 & 0x8080) == 0;
          if (bVar9) {
            uVar3 = uVar3 >> 0x10;
          }
          if (bVar9) {
            puVar7 = (uint *)((long)puVar6 + 6);
          }
          sVar5 = (long)puVar7 + (-0x105b93 - (ulong)CARRY1((byte)uVar3,(byte)uVar3));
          iVar1 = (int)sVar5 + 2;
          uVar8 = (ulong)((int)sVar5 + 1);
        }
        else {
          iVar1 = access("/tmp",7);
          if (iVar1 == 0) {
            pcVar4 = "/tmp";
            sVar5 = strlen("/tmp");
            iVar1 = (int)sVar5 + 2;
            uVar8 = (ulong)((int)sVar5 + 1);
          }
          else {
            sVar5 = 1;
            uVar8 = 2;
            iVar1 = 3;
            pcVar4 = ".";
          }
        }
      }
    }
  }
  else {
    iVar1 = access(pcVar4,7);
    if (iVar1 != 0) {
      pcVar4 = getenv("TMP");
      goto LAB_00104c38;
    }
    getenv("TMP");
LAB_00104be9:
    getenv("TEMP");
LAB_00104bf5:
    sVar5 = strlen(pcVar4);
    iVar1 = (int)sVar5 + 2;
    uVar8 = (ulong)((int)sVar5 + 1);
    sVar5 = sVar5 & 0xffffffff;
  }
  __dest = (char *)xmalloc(iVar1);
  pcVar4 = strcpy(__dest,pcVar4);
  pcVar4[sVar5] = '/';
  DAT_00108470 = pcVar4;
  pcVar4[uVar8] = '\0';
  return pcVar4;
}

