#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
scalar_t__ detectPresence(char *);
char *dialogNameOnly();
int *getMajorMinorPatch(char *);
int /*<<< orphan*/ strcat(char *, char *);
scalar_t__ *strcpy(char *, char *);
scalar_t__ strlen(char *);
scalar_t__ tfd_isDarwin();
scalar_t__ whiptailPresentOnly();
char *terminalName(void) {
  static char lTerminalName[128] = "*";
  char lShellName[64] = "*";
  int *lArray;
  if (lTerminalName[0] == '*') {
    if (detectPresence("bash")) {
      strcpy(lShellName, "bash -c ");
    } else if (strlen(dialogNameOnly()) || whiptailPresentOnly()) {
      strcpy(lShellName, "sh -c ");
    } else {
      strcpy(lTerminalName, "");
      return NULL;
    }
    if (tfd_isDarwin()) {
      if (*strcpy(lTerminalName, "/opt/X11/bin/xterm") &&
          detectPresence(lTerminalName)) {
        strcat(lTerminalName,
               " -fa 'DejaVu Sans Mono' -fs 10 -title tinyfiledialogs -e ");
        strcat(lTerminalName, lShellName);
      } else {
        strcpy(lTerminalName, "");
      }
    } else if (*strcpy(lTerminalName, "xterm") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName,
             " -fa 'DejaVu Sans Mono' -fs 10 -title tinyfiledialogs -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "terminator") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -x ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "lxterminal") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "konsole") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "kterm") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "tilix") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "xfce4-terminal") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -x ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "mate-terminal") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -x ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "Eterm") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "evilvte") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "pterm") &&
               detectPresence(lTerminalName)) {
      strcat(lTerminalName, " -e ");
      strcat(lTerminalName, lShellName);
    } else if (*strcpy(lTerminalName, "gnome-terminal") &&
               detectPresence(lTerminalName) &&
               (lArray = getMajorMinorPatch(lTerminalName)) &&
               ((lArray[0] < 3) || (lArray[0] == 3 && lArray[1] <= 6))) {
      strcat(lTerminalName, " --disable-factory -x ");
      strcat(lTerminalName, lShellName);
    } else {
      strcpy(lTerminalName, "");
    }
  }
  if (strlen(lTerminalName)) {
    return lTerminalName;
  } else {
    return NULL;
  }
}


x86 assembly (clang, -O0):
<terminalName>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
lea    -0x50(%rbp),%rdi
xor    %esi,%esi
mov    $0x40,%edx
call   1060 <memset@plt>
movb   $0x2a,-0x50(%rbp)
movsbl 0x2ebd(%rip),%eax
cmp    $0x2a,%eax
jne    17a9 <terminalName+0x619>
lea    0xe3d(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     11e7 <terminalName+0x57>
lea    -0x50(%rbp),%rdi
lea    0xe28(%rip),%rsi
call   1040 <strcpy@plt>
jmp    124b <terminalName+0xbb>
mov    $0x0,%al
call   1090 <dialogNameOnly@plt>
mov    %rax,%rdi
call   1050 <strlen@plt>
cmp    $0x0,%rax
jne    1211 <terminalName+0x81>
mov    $0x0,%al
call   1030 <whiptailPresentOnly@plt>
cmp    $0x0,%rax
je     1226 <terminalName+0x96>
lea    -0x50(%rbp),%rdi
lea    0xdeb(%rip),%rsi
call   1040 <strcpy@plt>
jmp    1246 <terminalName+0xb6>
lea    0x2e43(%rip),%rdi
lea    0xdd9(%rip),%rsi
call   1040 <strcpy@plt>
movq   $0x0,-0x8(%rbp)
jmp    17d7 <terminalName+0x647>
jmp    124b <terminalName+0xbb>
mov    $0x0,%al
call   1070 <tfd_isDarwin@plt>
cmp    $0x0,%rax
je     12cf <terminalName+0x13f>
lea    0x2e0d(%rip),%rdi
lea    0xda4(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     12b7 <terminalName+0x127>
lea    0x2df0(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     12b7 <terminalName+0x127>
lea    0x2dda(%rip),%rdi
lea    0xd84(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2dc3(%rip),%rdi
call   10a0 <strcat@plt>
jmp    12ca <terminalName+0x13a>
lea    0x2db2(%rip),%rdi
lea    0xd48(%rip),%rsi
call   1040 <strcpy@plt>
jmp    17a4 <terminalName+0x614>
lea    0x2d9a(%rip),%rdi
lea    0xd3e(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     132a <terminalName+0x19a>
lea    0x2d7d(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     132a <terminalName+0x19a>
lea    0x2d67(%rip),%rdi
lea    0xd11(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2d50(%rip),%rdi
call   10a0 <strcat@plt>
jmp    179f <terminalName+0x60f>
lea    0x2d3f(%rip),%rdi
lea    0xd23(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1385 <terminalName+0x1f5>
lea    0x2d22(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     1385 <terminalName+0x1f5>
lea    0x2d0c(%rip),%rdi
lea    0xd6c(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2cf5(%rip),%rdi
call   10a0 <strcat@plt>
jmp    179a <terminalName+0x60a>
lea    0x2ce4(%rip),%rdi
lea    0xcd3(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     13e0 <terminalName+0x250>
lea    0x2cc7(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     13e0 <terminalName+0x250>
lea    0x2cb1(%rip),%rdi
lea    0xc90(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2c9a(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1795 <terminalName+0x605>
lea    0x2c89(%rip),%rdi
lea    0xc83(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     143b <terminalName+0x2ab>
lea    0x2c6c(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     143b <terminalName+0x2ab>
lea    0x2c56(%rip),%rdi
lea    0xc35(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2c3f(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1790 <terminalName+0x600>
lea    0x2c2e(%rip),%rdi
lea    0xc30(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1496 <terminalName+0x306>
lea    0x2c11(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     1496 <terminalName+0x306>
lea    0x2bfb(%rip),%rdi
lea    0xbda(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2be4(%rip),%rdi
call   10a0 <strcat@plt>
jmp    178b <terminalName+0x5fb>
lea    0x2bd3(%rip),%rdi
lea    0xbdb(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     14f1 <terminalName+0x361>
lea    0x2bb6(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     14f1 <terminalName+0x361>
lea    0x2ba0(%rip),%rdi
lea    0xb7f(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2b89(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1786 <terminalName+0x5f6>
lea    0x2b78(%rip),%rdi
lea    0xb86(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     154c <terminalName+0x3bc>
lea    0x2b5b(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     154c <terminalName+0x3bc>
lea    0x2b45(%rip),%rdi
lea    0xba5(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2b2e(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1781 <terminalName+0x5f1>
lea    0x2b1d(%rip),%rdi
lea    0xb3a(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     15a7 <terminalName+0x417>
lea    0x2b00(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     15a7 <terminalName+0x417>
lea    0x2aea(%rip),%rdi
lea    0xb4a(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2ad3(%rip),%rdi
call   10a0 <strcat@plt>
jmp    177c <terminalName+0x5ec>
lea    0x2ac2(%rip),%rdi
lea    0xaed(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1602 <terminalName+0x472>
lea    0x2aa5(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     1602 <terminalName+0x472>
lea    0x2a8f(%rip),%rdi
lea    0xa6e(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2a78(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1777 <terminalName+0x5e7>
lea    0x2a67(%rip),%rdi
lea    0xa98(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     165d <terminalName+0x4cd>
lea    0x2a4a(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     165d <terminalName+0x4cd>
lea    0x2a34(%rip),%rdi
lea    0xa13(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2a1d(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1772 <terminalName+0x5e2>
lea    0x2a0c(%rip),%rdi
lea    0xa45(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     16b8 <terminalName+0x528>
lea    0x29ef(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     16b8 <terminalName+0x528>
lea    0x29d9(%rip),%rdi
lea    0x9b8(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x29c2(%rip),%rdi
call   10a0 <strcat@plt>
jmp    176d <terminalName+0x5dd>
lea    0x29b1(%rip),%rdi
lea    0x9f0(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1755 <terminalName+0x5c5>
lea    0x2994(%rip),%rdi
call   1080 <detectPresence@plt>
cmp    $0x0,%rax
je     1755 <terminalName+0x5c5>
lea    0x297e(%rip),%rdi
call   10b0 <getMajorMinorPatch@plt>
mov    %rax,-0x58(%rbp)
cmp    $0x0,%rax
je     1755 <terminalName+0x5c5>
mov    -0x58(%rbp),%rax
cmpl   $0x3,(%rax)
jl     172d <terminalName+0x59d>
mov    -0x58(%rbp),%rax
cmpl   $0x3,(%rax)
jne    1755 <terminalName+0x5c5>
mov    -0x58(%rbp),%rax
cmpl   $0x6,0x4(%rax)
jg     1755 <terminalName+0x5c5>
lea    0x293c(%rip),%rdi
lea    0x98a(%rip),%rsi
call   10a0 <strcat@plt>
lea    -0x50(%rbp),%rsi
lea    0x2925(%rip),%rdi
call   10a0 <strcat@plt>
jmp    1768 <terminalName+0x5d8>
lea    0x2914(%rip),%rdi
lea    0x8aa(%rip),%rsi
call   1040 <strcpy@plt>
jmp    176d <terminalName+0x5dd>
jmp    1772 <terminalName+0x5e2>
jmp    1777 <terminalName+0x5e7>
jmp    177c <terminalName+0x5ec>
jmp    1781 <terminalName+0x5f1>
jmp    1786 <terminalName+0x5f6>
jmp    178b <terminalName+0x5fb>
jmp    1790 <terminalName+0x600>
jmp    1795 <terminalName+0x605>
jmp    179a <terminalName+0x60a>
jmp    179f <terminalName+0x60f>
jmp    17a4 <terminalName+0x614>
jmp    17a9 <terminalName+0x619>
lea    0x28c0(%rip),%rdi
call   1050 <strlen@plt>
cmp    $0x0,%rax
je     17cf <terminalName+0x63f>
lea    0x28aa(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    17d7 <terminalName+0x647>
movq   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<terminalName>:
push   %rbx
sub    $0x40,%rsp
xorps  %xmm0,%xmm0
movaps %xmm0,(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x10(%rsp)
movb   $0x2a,(%rsp)
cmpb   $0x2a,0x2eca(%rip)
jne    136e <terminalName+0x1fe>
lea    0xe5d(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
je     11b6 <terminalName+0x46>
lea    0xe51(%rip),%rbx
jmp    11d9 <terminalName+0x69>
xor    %eax,%eax
call   1070 <dialogNameOnly@plt>
lea    0xe43(%rip),%rbx
cmpb   $0x0,(%rax)
jne    11d9 <terminalName+0x69>
xor    %eax,%eax
call   1030 <whiptailPresentOnly@plt>
test   %rax,%rax
je     1388 <terminalName+0x218>
mov    %rsp,%rdi
mov    %rbx,%rsi
call   1040 <strcpy@plt>
xor    %eax,%eax
call   1050 <tfd_isDarwin@plt>
lea    0x2e6e(%rip),%rdi
test   %rax,%rax
je     1232 <terminalName+0xc2>
lea    0xe10(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     121a <terminalName+0xaa>
lea    0x2e50(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    1255 <terminalName+0xe5>
lea    0x2e3f(%rip),%rdi
lea    0xde5(%rip),%rsi
call   1040 <strcpy@plt>
jmp    136e <terminalName+0x1fe>
lea    0xde2(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1268 <terminalName+0xf8>
lea    0x2e15(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
je     1268 <terminalName+0xf8>
lea    0x2e04(%rip),%rbx
lea    0xdbe(%rip),%rsi
jmp    135b <terminalName+0x1eb>
lea    0x2df1(%rip),%rdi
lea    0xde5(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     12a5 <terminalName+0x135>
lea    0x2dd8(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
je     12a5 <terminalName+0x135>
lea    0x2dc7(%rip),%rbx
lea    0xe37(%rip),%rsi
jmp    135b <terminalName+0x1eb>
lea    0x2db4(%rip),%rdi
lea    0xdb3(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     12cf <terminalName+0x15f>
lea    0x2d9b(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    134d <terminalName+0x1dd>
lea    0x2d8a(%rip),%rdi
lea    0xd94(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     12f9 <terminalName+0x189>
lea    0x2d71(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    134d <terminalName+0x1dd>
lea    0x2d60(%rip),%rdi
lea    0xd72(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1323 <terminalName+0x1b3>
lea    0x2d47(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    134d <terminalName+0x1dd>
lea    0x2d36(%rip),%rdi
lea    0xd4e(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     139f <terminalName+0x22f>
lea    0x2d1d(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
je     139f <terminalName+0x22f>
lea    0x2d0c(%rip),%rbx
lea    0xcfb(%rip),%rsi
mov    %rbx,%rdi
call   1080 <strcat@plt>
mov    %rsp,%rsi
mov    %rbx,%rdi
call   1080 <strcat@plt>
lea    0x2ceb(%rip),%rcx
xor    %eax,%eax
cmpb   $0x0,0x2ce2(%rip)
cmovne %rcx,%rax
add    $0x40,%rsp
pop    %rbx
ret
lea    0x2cd1(%rip),%rdi
lea    0xc77(%rip),%rsi
call   1040 <strcpy@plt>
xor    %eax,%eax
jmp    1382 <terminalName+0x212>
lea    0x2cba(%rip),%rdi
lea    0xcd8(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     13cd <terminalName+0x25d>
lea    0x2ca1(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    1292 <terminalName+0x122>
lea    0x2c8c(%rip),%rdi
lea    0xcb9(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     13fb <terminalName+0x28b>
lea    0x2c73(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    1292 <terminalName+0x122>
lea    0x2c5e(%rip),%rdi
lea    0xc99(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1429 <terminalName+0x2b9>
lea    0x2c45(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    134d <terminalName+0x1dd>
lea    0x2c30(%rip),%rdi
lea    0xc71(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1457 <terminalName+0x2e7>
lea    0x2c17(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    134d <terminalName+0x1dd>
lea    0x2c02(%rip),%rdi
lea    0xc4b(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     1485 <terminalName+0x315>
lea    0x2be9(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
jne    134d <terminalName+0x1dd>
lea    0x2bd4(%rip),%rdi
lea    0xc23(%rip),%rsi
call   1040 <strcpy@plt>
cmpq   $0x0,(%rax)
je     121a <terminalName+0xaa>
lea    0x2bb7(%rip),%rdi
call   1060 <detectPresence@plt>
test   %rax,%rax
je     121a <terminalName+0xaa>
lea    0x2ba2(%rip),%rdi
call   1090 <getMajorMinorPatch@plt>
test   %rax,%rax
je     121a <terminalName+0xaa>
cmpl   $0x3,(%rax)
jge    14e4 <terminalName+0x374>
lea    0x2b88(%rip),%rbx
lea    0xbe6(%rip),%rsi
jmp    135b <terminalName+0x1eb>
jne    121a <terminalName+0xaa>
cmpl   $0x6,0x4(%rax)
jg     121a <terminalName+0xaa>
jmp    14d1 <terminalName+0x361>

LLVM IR (-O0):
@terminalName.lTerminalName = internal global [128 x i8] c"*\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@.str = [5 x i8] c"bash\00"
@.str.1 = [9 x i8] c"bash -c \00"
@.str.2 = [7 x i8] c"sh -c \00"
@.str.3 = [1 x i8] zeroinitializer
@.str.4 = [19 x i8] c"/opt/X11/bin/xterm\00"
@.str.5 = [58 x i8] c" -fa 'DejaVu Sans Mono' -fs 10 -title tinyfiledialogs -e \00"
@.str.6 = [6 x i8] c"xterm\00"
@.str.7 = [11 x i8] c"terminator\00"
@.str.8 = [5 x i8] c" -x \00"
@.str.9 = [11 x i8] c"lxterminal\00"
@.str.10 = [5 x i8] c" -e \00"
@.str.11 = [8 x i8] c"konsole\00"
@.str.12 = [6 x i8] c"kterm\00"
@.str.13 = [6 x i8] c"tilix\00"
@.str.14 = [15 x i8] c"xfce4-terminal\00"
@.str.15 = [14 x i8] c"mate-terminal\00"
@.str.16 = [6 x i8] c"Eterm\00"
@.str.17 = [8 x i8] c"evilvte\00"
@.str.18 = [6 x i8] c"pterm\00"
@.str.19 = [15 x i8] c"gnome-terminal\00"
@.str.20 = [23 x i8] c" --disable-factory -x \00"
define i8* @terminalName() {
%1 = alloca i8*
%2 = alloca [64 x i8]
%3 = alloca i32*
%4 = bitcast [64 x i8]* %2 to i8*
%5 = bitcast i8* %4 to [64 x i8]*
%6 = getelementptr inbounds [64 x i8], [64 x i8]* %5, i32 0, i32 0
store i8 42, i8* %6
%7 = load i8, i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0)
%8 = sext i8 %7 to i32
%9 = icmp eq i32 %8, 42
br i1 %9, label %10, label %211
10: ; preds = %0
%11 = call i64 @detectPresence(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%12 = icmp ne i64 %11, 0
br i1 %12, label %13, label %16
13: ; preds = %10
%14 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%15 = call i64* @strcpy(i8* %14, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
br label %29
16: ; preds = %10
%17 = call i8* (...) @dialogNameOnly()
%18 = call i64 @strlen(i8* %17)
%19 = icmp ne i64 %18, 0
br i1 %19, label %23, label %20
20: ; preds = %16
%21 = call i64 (...) @whiptailPresentOnly()
%22 = icmp ne i64 %21, 0
br i1 %22, label %23, label %26
23: ; preds = %20, %16
%24 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%25 = call i64* @strcpy(i8* %24, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0))
br label %28
26: ; preds = %20
%27 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0))
store i8* null, i8** %1
br label %216
28: ; preds = %23
br label %29
29: ; preds = %28, %13
%30 = call i64 (...) @tfd_isDarwin()
%31 = icmp ne i64 %30, 0
br i1 %31, label %32, label %46
32: ; preds = %29
%33 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0))
%34 = load i64, i64* %33
%35 = icmp ne i64 %34, 0
br i1 %35, label %36, label %43
36: ; preds = %32
%37 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%38 = icmp ne i64 %37, 0
br i1 %38, label %39, label %43
39: ; preds = %36
%40 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.5, i64 0, i64 0))
%41 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%42 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %41)
br label %45
43: ; preds = %36, %32
%44 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0))
br label %45
45: ; preds = %43, %39
br label %210
46: ; preds = %29
%47 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%48 = load i64, i64* %47
%49 = icmp ne i64 %48, 0
br i1 %49, label %50, label %57
50: ; preds = %46
%51 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%52 = icmp ne i64 %51, 0
br i1 %52, label %53, label %57
53: ; preds = %50
%54 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.5, i64 0, i64 0))
%55 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%56 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %55)
br label %209
57: ; preds = %50, %46
%58 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0))
%59 = load i64, i64* %58
%60 = icmp ne i64 %59, 0
br i1 %60, label %61, label %68
61: ; preds = %57
%62 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%63 = icmp ne i64 %62, 0
br i1 %63, label %64, label %68
64: ; preds = %61
%65 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%66 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%67 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %66)
br label %208
68: ; preds = %61, %57
%69 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
%70 = load i64, i64* %69
%71 = icmp ne i64 %70, 0
br i1 %71, label %72, label %79
72: ; preds = %68
%73 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%74 = icmp ne i64 %73, 0
br i1 %74, label %75, label %79
75: ; preds = %72
%76 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%77 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%78 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %77)
br label %207
79: ; preds = %72, %68
%80 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0))
%81 = load i64, i64* %80
%82 = icmp ne i64 %81, 0
br i1 %82, label %83, label %90
83: ; preds = %79
%84 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%85 = icmp ne i64 %84, 0
br i1 %85, label %86, label %90
86: ; preds = %83
%87 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%88 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%89 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %88)
br label %206
90: ; preds = %83, %79
%91 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
%92 = load i64, i64* %91
%93 = icmp ne i64 %92, 0
br i1 %93, label %94, label %101
94: ; preds = %90
%95 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%96 = icmp ne i64 %95, 0
br i1 %96, label %97, label %101
97: ; preds = %94
%98 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%99 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%100 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %99)
br label %205
101: ; preds = %94, %90
%102 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
%103 = load i64, i64* %102
%104 = icmp ne i64 %103, 0
br i1 %104, label %105, label %112
105: ; preds = %101
%106 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%107 = icmp ne i64 %106, 0
br i1 %107, label %108, label %112
108: ; preds = %105
%109 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%110 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%111 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %110)
br label %204
112: ; preds = %105, %101
%113 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0))
%114 = load i64, i64* %113
%115 = icmp ne i64 %114, 0
br i1 %115, label %116, label %123
116: ; preds = %112
%117 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%118 = icmp ne i64 %117, 0
br i1 %118, label %119, label %123
119: ; preds = %116
%120 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%121 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%122 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %121)
br label %203
123: ; preds = %116, %112
%124 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0))
%125 = load i64, i64* %124
%126 = icmp ne i64 %125, 0
br i1 %126, label %127, label %134
127: ; preds = %123
%128 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%129 = icmp ne i64 %128, 0
br i1 %129, label %130, label %134
130: ; preds = %127
%131 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%132 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%133 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %132)
br label %202
134: ; preds = %127, %123
%135 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
%136 = load i64, i64* %135
%137 = icmp ne i64 %136, 0
br i1 %137, label %138, label %145
138: ; preds = %134
%139 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%140 = icmp ne i64 %139, 0
br i1 %140, label %141, label %145
141: ; preds = %138
%142 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%143 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%144 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %143)
br label %201
145: ; preds = %138, %134
%146 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.17, i64 0, i64 0))
%147 = load i64, i64* %146
%148 = icmp ne i64 %147, 0
br i1 %148, label %149, label %156
149: ; preds = %145
%150 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%151 = icmp ne i64 %150, 0
br i1 %151, label %152, label %156
152: ; preds = %149
%153 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%154 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%155 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %154)
br label %200
156: ; preds = %149, %145
%157 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0))
%158 = load i64, i64* %157
%159 = icmp ne i64 %158, 0
br i1 %159, label %160, label %167
160: ; preds = %156
%161 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%162 = icmp ne i64 %161, 0
br i1 %162, label %163, label %167
163: ; preds = %160
%164 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%165 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%166 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %165)
br label %199
167: ; preds = %160, %156
%168 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.19, i64 0, i64 0))
%169 = load i64, i64* %168
%170 = icmp ne i64 %169, 0
br i1 %170, label %171, label %196
171: ; preds = %167
%172 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%173 = icmp ne i64 %172, 0
br i1 %173, label %174, label %196
174: ; preds = %171
%175 = call i32* @getMajorMinorPatch(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
store i32* %175, i32** %3
%176 = icmp ne i32* %175, null
br i1 %176, label %177, label %196
177: ; preds = %174
%178 = load i32*, i32** %3
%179 = getelementptr inbounds i32, i32* %178, i64 0
%180 = load i32, i32* %179
%181 = icmp slt i32 %180, 3
br i1 %181, label %192, label %182
182: ; preds = %177
%183 = load i32*, i32** %3
%184 = getelementptr inbounds i32, i32* %183, i64 0
%185 = load i32, i32* %184
%186 = icmp eq i32 %185, 3
br i1 %186, label %187, label %196
187: ; preds = %182
%188 = load i32*, i32** %3
%189 = getelementptr inbounds i32, i32* %188, i64 1
%190 = load i32, i32* %189
%191 = icmp sle i32 %190, 6
br i1 %191, label %192, label %196
192: ; preds = %187, %177
%193 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0))
%194 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%195 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %194)
br label %198
196: ; preds = %187, %182, %174, %171, %167
%197 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0))
br label %198
198: ; preds = %196, %192
br label %199
199: ; preds = %198, %163
br label %200
200: ; preds = %199, %152
br label %201
201: ; preds = %200, %141
br label %202
202: ; preds = %201, %130
br label %203
203: ; preds = %202, %119
br label %204
204: ; preds = %203, %108
br label %205
205: ; preds = %204, %97
br label %206
206: ; preds = %205, %86
br label %207
207: ; preds = %206, %75
br label %208
208: ; preds = %207, %64
br label %209
209: ; preds = %208, %53
br label %210
210: ; preds = %209, %45
br label %211
211: ; preds = %210, %0
%212 = call i64 @strlen(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%213 = icmp ne i64 %212, 0
br i1 %213, label %214, label %215
214: ; preds = %211
store i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8** %1
br label %216
215: ; preds = %211
store i8* null, i8** %1
br label %216
216: ; preds = %215, %214, %26
%217 = load i8*, i8** %1
ret i8* %217
}

LLVM IR (-O2):
@terminalName.lTerminalName = internal global [128 x i8] c"*\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"
@.str = [5 x i8] c"bash\00"
@.str.1 = [9 x i8] c"bash -c \00"
@.str.2 = [7 x i8] c"sh -c \00"
@.str.3 = [1 x i8] zeroinitializer
@.str.4 = [19 x i8] c"/opt/X11/bin/xterm\00"
@.str.5 = [58 x i8] c" -fa 'DejaVu Sans Mono' -fs 10 -title tinyfiledialogs -e \00"
@.str.6 = [6 x i8] c"xterm\00"
@.str.7 = [11 x i8] c"terminator\00"
@.str.8 = [5 x i8] c" -x \00"
@.str.9 = [11 x i8] c"lxterminal\00"
@.str.10 = [5 x i8] c" -e \00"
@.str.11 = [8 x i8] c"konsole\00"
@.str.12 = [6 x i8] c"kterm\00"
@.str.13 = [6 x i8] c"tilix\00"
@.str.14 = [15 x i8] c"xfce4-terminal\00"
@.str.15 = [14 x i8] c"mate-terminal\00"
@.str.16 = [6 x i8] c"Eterm\00"
@.str.17 = [8 x i8] c"evilvte\00"
@.str.18 = [6 x i8] c"pterm\00"
@.str.19 = [15 x i8] c"gnome-terminal\00"
@.str.20 = [23 x i8] c" --disable-factory -x \00"
define i8* @terminalName() {
%1 = alloca [64 x i8]
%2 = getelementptr inbounds [64 x i8], [64 x i8]* %1, i64 0, i64 0
store i8 42, i8* %2
%3 = load i8, i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0)
%4 = icmp eq i8 %3, 42
br i1 %4, label %5, label %168
5: ; preds = %0
%6 = tail call i64 @detectPresence(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%7 = icmp eq i64 %6, 0
br i1 %7, label %8, label %17
8: ; preds = %5
%9 = tail call i8* (...) @dialogNameOnly()
%10 = load i8, i8* %9
%11 = icmp eq i8 %10, 0
br i1 %11, label %12, label %17
12: ; preds = %8
%13 = tail call i64 (...) @whiptailPresentOnly()
%14 = icmp eq i64 %13, 0
br i1 %14, label %15, label %17
15: ; preds = %12
%16 = tail call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0))
br label %172
17: ; preds = %8, %12, %5
%18 = phi i8* [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), %5 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), %12 ], [ getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i64 0, i64 0), %8 ]
%19 = call i64* @strcpy(i8* %2, i8* %18)
%20 = call i64 (...) @tfd_isDarwin()
%21 = icmp eq i64 %20, 0
br i1 %21, label %34, label %22
22: ; preds = %17
%23 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0))
%24 = load i64, i64* %23
%25 = icmp eq i64 %24, 0
br i1 %25, label %32, label %26
26: ; preds = %22
%27 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%28 = icmp eq i64 %27, 0
br i1 %28, label %32, label %29
29: ; preds = %26
%30 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.5, i64 0, i64 0))
%31 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
32: ; preds = %26, %22
%33 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0))
br label %168
34: ; preds = %17
%35 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%36 = load i64, i64* %35
%37 = icmp eq i64 %36, 0
br i1 %37, label %44, label %38
38: ; preds = %34
%39 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%40 = icmp eq i64 %39, 0
br i1 %40, label %44, label %41
41: ; preds = %38
%42 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.5, i64 0, i64 0))
%43 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
44: ; preds = %38, %34
%45 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.7, i64 0, i64 0))
%46 = load i64, i64* %45
%47 = icmp eq i64 %46, 0
br i1 %47, label %54, label %48
48: ; preds = %44
%49 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%50 = icmp eq i64 %49, 0
br i1 %50, label %54, label %51
51: ; preds = %48
%52 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%53 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
54: ; preds = %48, %44
%55 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
%56 = load i64, i64* %55
%57 = icmp eq i64 %56, 0
br i1 %57, label %64, label %58
58: ; preds = %54
%59 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%60 = icmp eq i64 %59, 0
br i1 %60, label %64, label %61
61: ; preds = %58
%62 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%63 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
64: ; preds = %58, %54
%65 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0))
%66 = load i64, i64* %65
%67 = icmp eq i64 %66, 0
br i1 %67, label %74, label %68
68: ; preds = %64
%69 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%70 = icmp eq i64 %69, 0
br i1 %70, label %74, label %71
71: ; preds = %68
%72 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%73 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
74: ; preds = %68, %64
%75 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
%76 = load i64, i64* %75
%77 = icmp eq i64 %76, 0
br i1 %77, label %84, label %78
78: ; preds = %74
%79 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%80 = icmp eq i64 %79, 0
br i1 %80, label %84, label %81
81: ; preds = %78
%82 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%83 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
84: ; preds = %78, %74
%85 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
%86 = load i64, i64* %85
%87 = icmp eq i64 %86, 0
br i1 %87, label %94, label %88
88: ; preds = %84
%89 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%90 = icmp eq i64 %89, 0
br i1 %90, label %94, label %91
91: ; preds = %88
%92 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%93 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
94: ; preds = %88, %84
%95 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0))
%96 = load i64, i64* %95
%97 = icmp eq i64 %96, 0
br i1 %97, label %104, label %98
98: ; preds = %94
%99 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%100 = icmp eq i64 %99, 0
br i1 %100, label %104, label %101
101: ; preds = %98
%102 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%103 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
104: ; preds = %98, %94
%105 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0))
%106 = load i64, i64* %105
%107 = icmp eq i64 %106, 0
br i1 %107, label %114, label %108
108: ; preds = %104
%109 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%110 = icmp eq i64 %109, 0
br i1 %110, label %114, label %111
111: ; preds = %108
%112 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%113 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
114: ; preds = %108, %104
%115 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.16, i64 0, i64 0))
%116 = load i64, i64* %115
%117 = icmp eq i64 %116, 0
br i1 %117, label %124, label %118
118: ; preds = %114
%119 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%120 = icmp eq i64 %119, 0
br i1 %120, label %124, label %121
121: ; preds = %118
%122 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%123 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
124: ; preds = %118, %114
%125 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.17, i64 0, i64 0))
%126 = load i64, i64* %125
%127 = icmp eq i64 %126, 0
br i1 %127, label %134, label %128
128: ; preds = %124
%129 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%130 = icmp eq i64 %129, 0
br i1 %130, label %134, label %131
131: ; preds = %128
%132 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%133 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
134: ; preds = %128, %124
%135 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0))
%136 = load i64, i64* %135
%137 = icmp eq i64 %136, 0
br i1 %137, label %144, label %138
138: ; preds = %134
%139 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%140 = icmp eq i64 %139, 0
br i1 %140, label %144, label %141
141: ; preds = %138
%142 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0))
%143 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
144: ; preds = %138, %134
%145 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.19, i64 0, i64 0))
%146 = load i64, i64* %145
%147 = icmp eq i64 %146, 0
br i1 %147, label %166, label %148
148: ; preds = %144
%149 = call i64 @detectPresence(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%150 = icmp eq i64 %149, 0
br i1 %150, label %166, label %151
151: ; preds = %148
%152 = call i32* @getMajorMinorPatch(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0))
%153 = icmp eq i32* %152, null
br i1 %153, label %166, label %154
154: ; preds = %151
%155 = load i32, i32* %152
%156 = icmp slt i32 %155, 3
br i1 %156, label %163, label %157
157: ; preds = %154
%158 = icmp eq i32 %155, 3
br i1 %158, label %159, label %166
159: ; preds = %157
%160 = getelementptr inbounds i32, i32* %152, i64 1
%161 = load i32, i32* %160
%162 = icmp slt i32 %161, 7
br i1 %162, label %163, label %166
163: ; preds = %159, %154
%164 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.20, i64 0, i64 0))
%165 = call i32 @strcat(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* %2)
br label %168
166: ; preds = %159, %157, %151, %148, %144
%167 = call i64* @strcpy(i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.3, i64 0, i64 0))
br label %168
168: ; preds = %32, %29, %51, %71, %91, %111, %131, %163, %166, %141, %121, %101, %81, %61, %41, %0
%169 = load i8, i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0)
%170 = icmp eq i8 %169, 0
%171 = select i1 %170, i8* null, i8* getelementptr inbounds ([128 x i8], [128 x i8]* @terminalName.lTerminalName, i64 0, i64 0)
br label %172
172: ; preds = %168, %15
%173 = phi i8* [ null, %15 ], [ %171, %168 ]
ret i8* %173
}