#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 */
typedef int /*<<< orphan*/ restoreScript;
typedef int /*<<< orphan*/ path;

/* Variables and functions */
int /*<<< orphan*/ dirname(char *);
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ setuid(int /*<<< orphan*/);
int /*<<< orphan*/ sprintf(char *, char *, ...);
scalar_t__ strcmp(char *, char *);
int /*<<< orphan*/ strncat(char *, char *, int);
int /*<<< orphan*/ strncpy(char *, char *, int);
int /*<<< orphan*/ system(char *);
int /*<<< orphan*/ upgrade_commands(char *, char *);
int main(int argc, char *argv[]) {
  setuid(0);
  char cmd[1024];
  if (argc > 1) {
    if (strcmp(argv[1], "backup-create") == 0) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[512];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      strncat(restoreScript, "/upgrade_commands.sh backup-create",
              sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "backup-delete") == 0 && (argc > 2)) {
      sprintf(cmd, "rm -rf /var/Mycodo-backups/Mycodo-backup-%s", argv[2]);
      system(cmd);
    } else if (strcmp(argv[1], "backup-restore") == 0 && (argc > 2)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[512];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/upgrade_commands.sh backup-restore %s", argv[2]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "restart") == 0) {
      sprintf(cmd, "sleep 10 && shutdown now -r");
      system(cmd);
    } else if (strcmp(argv[1], "shutdown") == 0) {
      sprintf(cmd, "sleep 10 && shutdown now -h");
      system(cmd);
    } else if (strcmp(argv[1], "daemon_restart") == 0) {
      sprintf(cmd, "service mycodo restart");
      system(cmd);
    } else if (strcmp(argv[1], "daemon_start") == 0) {
      sprintf(cmd, "service mycodo start");
      system(cmd);
    } else if (strcmp(argv[1], "daemon_stop") == 0) {
      sprintf(cmd, "service mycodo stop");
      system(cmd);
    } else if (strcmp(argv[1], "frontend_reload") == 0) {
      sprintf(cmd, "service mycodoflask reload");
      system(cmd);
    } else if (strcmp(argv[1], "frontend_restart") == 0) {
      sprintf(cmd, "service mycodoflask restart");
      system(cmd);
    } else if (strcmp(argv[1], "influxdb_restart") == 0) {
      sprintf(cmd, "service influxdb restart");
      system(cmd);
    } else if (strcmp(argv[1], "influxdb_start") == 0) {
      sprintf(cmd, "service influxdb start");
      system(cmd);
    } else if (strcmp(argv[1], "influxdb_stop") == 0) {
      sprintf(cmd, "service influxdb stop");
      system(cmd);
    } else if (strcmp(argv[1], "influxdb_restore_mycodo_db") == 0 &&
               (argc > 2)) {
      sprintf(cmd,
              "influxd restore -portable -db mycodo_db -newdb mycodo_db_bak %s",
              argv[2]);
      system(cmd);
    } else if (strcmp(argv[1], "influxdb_delete_restore_tmp_dir") == 0) {
      sprintf(cmd, "rm -rf /var/mycodo-root/upload", argv[2]);
      system(cmd);
    } else if (strcmp(argv[1], "upgrade_database") == 0) {
      upgrade_commands(argv[0], "update-alembic");
    } else if (strcmp(argv[1], "initialize") == 0) {
      upgrade_commands(argv[0], "initialize");
    } else if (strcmp(argv[1], "update_dependencies") == 0) {
      upgrade_commands(argv[0], "update-dependencies");
    } else if (strcmp(argv[1], "update_permissions") == 0) {
      upgrade_commands(argv[0], "update-permissions");
    } else if (strcmp(argv[1], "install_dependency") == 0 &&
               strcmp(argv[2], "pip-pypi") == 0 && (argc == 4)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[1024];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/dependencies.sh pip-pypi %s", argv[3]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "install_dependency") == 0 &&
               strcmp(argv[2], "pip-git") == 0 && (argc == 4)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[1024];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/dependencies.sh pip-git %s", argv[3]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "install_dependency") == 0 &&
               strcmp(argv[2], "apt") == 0 && (argc == 4)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[1024];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/dependencies.sh apt %s", argv[3]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "install_dependency") == 0 &&
               strcmp(argv[2], "internal") == 0 && (argc == 4)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[1024];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/dependencies.sh internal %s", argv[3]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "install_pigpiod") == 0) {
      upgrade_commands(argv[0], "install-pigpiod");
    } else if (strcmp(argv[1], "disable_pigpiod") == 0) {
      upgrade_commands(argv[0], "disable-pigpiod");
    } else if (strcmp(argv[1], "enable_pigpiod_low") == 0) {
      upgrade_commands(argv[0], "enable-pigpiod-low");
    } else if (strcmp(argv[1], "enable_pigpiod_high") == 0) {
      upgrade_commands(argv[0], "enable-pigpiod-high");
    } else if (strcmp(argv[1], "enable_pigpiod_disabled") == 0) {
      upgrade_commands(argv[0], "enable-pigpiod-disabled");
    } else if (strcmp(argv[1], "uninstall_pigpiod") == 0) {
      upgrade_commands(argv[0], "uninstall-pigpiod");
    } else if (strcmp(argv[1], "upgrade-release-wipe") == 0 && (argc > 2)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[256];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/upgrade_commands.sh upgrade-release-wipe %s", argv[2]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "upgrade-release-major") == 0 && (argc > 2)) {
      char path[256];
      strncpy(path, argv[0], sizeof(path) - 1);
      dirname(path);
      char restoreScript[256];
      strncpy(restoreScript, "/bin/bash ", sizeof(restoreScript) - 1);
      strncat(restoreScript, path, sizeof(restoreScript) - 1);
      sprintf(cmd, "/upgrade_commands.sh upgrade-release-major %s", argv[2]);
      strncat(restoreScript, cmd, sizeof(restoreScript) - 1);
      system(restoreScript);
    } else if (strcmp(argv[1], "upgrade-master") == 0) {
      upgrade_commands(argv[0], "upgrade-master");
    }
  } else {
    printf("Mycodo Wrapper: A wrapper to allow the mycodo web interface\n");
    printf("                to perform superuser actions.\n\n");
    printf("Usage: mycodo_wrapper [command]\n\n");
    printf("Commands:\n");
    printf("   backup-create:              Create Mycodo backup\n");
    printf("   backup-delete [DIRECTORY]:  Delete Mycodo backup [DIRECTORY]\n");
    printf("   backup-restore [DIRECTORY]: Restore Mycodo from backup "
           "[DIRECTORY]\n");
    printf("   daemon_restart:             Restart the mycodo daemon in normal "
           "mode\n");
    printf("   daemon_restart_debug:       Restart the mycodo daemon in debug "
           "mode\n");
    printf("   daemon_start:               Start the mycodo daemon\n");
    printf("   daemon_stop:                Stop the mycodo daemon\n");
    printf("   database_upgrade:           Upgrade the database\n");
    printf("   frontend_reload:            Reload the mycodo frontend\n");
    printf("   frontend_restart:           Restart the mycodo frontend\n");
    printf("   influxdb_start:             Start influxdb\n");
    printf("   influxdb_stop:              Stop influxdb\n");
    printf("   influxdb_restart:           Restart influxdb\n");
    printf("   influxdb_restore_mycodo_db  Restore influxdb database mycodo_db "
           "to mycodo_db_bak\n");
    printf("   initialize:                 Run the Mycodo initialization "
           "sequence\n");
    printf("   update_dependencies:        Install unmet dependencies and "
           "update installed dependencies\n");
    printf("   update_permissions:         Set the Mycodo file/folder "
           "permissions\n");
    printf("   restart:                    Restart the computer after a 10 "
           "second pause\n");
    printf("   shutdown:                   Shutdown the computer after a 10 "
           "second pause\n");
    printf("   upgrade-release-wipe:       Upgrade Mycodo to the latest major "
           "version on github and wipe database and virtualenv\n");
    printf("   upgrade-release-major:      Upgrade Mycodo to the latest major "
           "version on github\n");
    printf("   upgrade-master:             Upgrade Mycodo to the latest master "
           "branch on github\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2210,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
xor    %edi,%edi
call   10b0 <setuid@plt>
cmpl   $0x1,-0x8(%rbp)
jle    1ea8 <main+0xd18>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe57(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1255 <main+0xc5>
lea    -0x510(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x510(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0x710(%rbp),%rdi
lea    0xdf6(%rip),%rsi
mov    $0x1ff,%edx
call   1030 <strncpy@plt>
lea    -0x710(%rbp),%rdi
lea    -0x510(%rbp),%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
lea    -0x710(%rbp),%rdi
lea    0xdd1(%rip),%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
lea    -0x710(%rbp),%rdi
call   1050 <system@plt>
jmp    1ea3 <main+0xd13>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xdca(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    12ab <main+0x11b>
cmpl   $0x2,-0x8(%rbp)
jle    12ab <main+0x11b>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0xda9(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e9e <main+0xd0e>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xdae(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    136d <main+0x1dd>
cmpl   $0x2,-0x8(%rbp)
jle    136d <main+0x1dd>
lea    -0x810(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x810(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0xa10(%rbp),%rdi
lea    0xcfb(%rip),%rsi
mov    $0x1ff,%edx
call   1030 <strncpy@plt>
lea    -0xa10(%rbp),%rdi
lea    -0x810(%rbp),%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0xd3a(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0xa10(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
lea    -0xa10(%rbp),%rdi
call   1050 <system@plt>
jmp    1e99 <main+0xd09>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe45(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    13b1 <main+0x221>
lea    -0x410(%rbp),%rdi
lea    0xd05(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e94 <main+0xd04>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xcfa(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    13f5 <main+0x265>
lea    -0x410(%rbp),%rdi
lea    0xce6(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e8f <main+0xcff>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xcdb(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1439 <main+0x2a9>
lea    -0x410(%rbp),%rdi
lea    0xccd(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e8a <main+0xcfa>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xcbd(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    147d <main+0x2ed>
lea    -0x410(%rbp),%rdi
lea    0xcad(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e85 <main+0xcf5>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc9b(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    14c1 <main+0x331>
lea    -0x410(%rbp),%rdi
lea    0xc8a(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e80 <main+0xcf0>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc77(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1505 <main+0x375>
lea    -0x410(%rbp),%rdi
lea    0xc6a(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e7b <main+0xceb>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc5e(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1549 <main+0x3b9>
lea    -0x410(%rbp),%rdi
lea    0xc52(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e76 <main+0xce6>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc47(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    158d <main+0x3fd>
lea    -0x410(%rbp),%rdi
lea    0xc3b(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e71 <main+0xce1>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc2d(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    15d1 <main+0x441>
lea    -0x410(%rbp),%rdi
lea    0xc1f(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e6c <main+0xcdc>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc0f(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1615 <main+0x485>
lea    -0x410(%rbp),%rdi
lea    0xc00(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e67 <main+0xcd7>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbef(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    166b <main+0x4db>
cmpl   $0x2,-0x8(%rbp)
jle    166b <main+0x4db>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0xbdb(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e62 <main+0xcd2>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbf4(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    16b7 <main+0x527>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0xbef(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e5d <main+0xccd>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbe7(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    16ed <main+0x55d>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0xbdb(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e58 <main+0xcc8>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbd1(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1723 <main+0x593>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0xbb4(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e53 <main+0xcc3>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xba6(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1759 <main+0x5c9>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0xb9d(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e4e <main+0xcbe>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb98(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    178f <main+0x5ff>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0xb8e(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e49 <main+0xcb9>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb88(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    186f <main+0x6df>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xb7d(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    186f <main+0x6df>
cmpl   $0x4,-0x8(%rbp)
jne    186f <main+0x6df>
lea    -0xb10(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0xb10(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0xf10(%rbp),%rdi
lea    0x7f9(%rip),%rsi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
lea    -0xf10(%rbp),%rdi
lea    -0xb10(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdx
lea    0xb03(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0xf10(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0xf10(%rbp),%rdi
call   1050 <system@plt>
jmp    1e44 <main+0xcb4>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xaa8(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    194f <main+0x7bf>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xac3(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    194f <main+0x7bf>
cmpl   $0x4,-0x8(%rbp)
jne    194f <main+0x7bf>
lea    -0x1010(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x1010(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0x1410(%rbp),%rdi
lea    0x719(%rip),%rsi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
lea    -0x1410(%rbp),%rdi
lea    -0x1010(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdx
lea    0xa48(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x1410(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x1410(%rbp),%rdi
call   1050 <system@plt>
jmp    1e3f <main+0xcaf>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9c8(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1a2f <main+0x89f>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0xa07(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1a2f <main+0x89f>
cmpl   $0x4,-0x8(%rbp)
jne    1a2f <main+0x89f>
lea    -0x1510(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x1510(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0x1910(%rbp),%rdi
lea    0x639(%rip),%rsi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
lea    -0x1910(%rbp),%rdi
lea    -0x1510(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdx
lea    0x988(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x1910(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x1910(%rbp),%rdi
call   1050 <system@plt>
jmp    1e3a <main+0xcaa>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x8e8(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1b0f <main+0x97f>
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x943(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1b0f <main+0x97f>
cmpl   $0x4,-0x8(%rbp)
jne    1b0f <main+0x97f>
lea    -0x1a10(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x1a10(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0x1e10(%rbp),%rdi
lea    0x559(%rip),%rsi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
lea    -0x1e10(%rbp),%rdi
lea    -0x1a10(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rdx
lea    0x8c9(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x1e10(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
lea    -0x1e10(%rbp),%rdi
call   1050 <system@plt>
jmp    1e35 <main+0xca5>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x947(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1b45 <main+0x9b5>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x93c(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e30 <main+0xca0>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x871(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1b7b <main+0x9eb>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x864(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e2b <main+0xc9b>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x85b(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1bb1 <main+0xa21>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x851(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e26 <main+0xc96>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x84b(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1be7 <main+0xa57>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x842(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e21 <main+0xc91>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x83d(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1c1d <main+0xa8d>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x838(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e1c <main+0xc8c>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x837(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1c53 <main+0xac3>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x82c(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e17 <main+0xc87>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x825(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1d15 <main+0xb85>
cmpl   $0x2,-0x8(%rbp)
jle    1d15 <main+0xb85>
lea    -0x1f10(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x1f10(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0x2010(%rbp),%rdi
lea    0x353(%rip),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x2010(%rbp),%rdi
lea    -0x1f10(%rbp),%rsi
mov    $0xff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0x7b7(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x2010(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0xff,%edx
call   1080 <strncat@plt>
lea    -0x2010(%rbp),%rdi
call   1050 <system@plt>
jmp    1e12 <main+0xc82>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x7a5(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1dd7 <main+0xc47>
cmpl   $0x2,-0x8(%rbp)
jle    1dd7 <main+0xc47>
lea    -0x2110(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x2110(%rbp),%rdi
call   1070 <dirname@plt>
lea    -0x2210(%rbp),%rdi
lea    0x291(%rip),%rsi
mov    $0xff,%edx
call   1030 <strncpy@plt>
lea    -0x2210(%rbp),%rdi
lea    -0x2110(%rbp),%rsi
mov    $0xff,%edx
call   1080 <strncat@plt>
lea    -0x410(%rbp),%rdi
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdx
lea    0x738(%rip),%rsi
mov    $0x0,%al
call   10a0 <sprintf@plt>
lea    -0x2210(%rbp),%rdi
lea    -0x410(%rbp),%rsi
mov    $0xff,%edx
call   1080 <strncat@plt>
lea    -0x2210(%rbp),%rdi
call   1050 <system@plt>
jmp    1e0d <main+0xc7d>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x727(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1e08 <main+0xc78>
mov    -0x10(%rbp),%rax
mov    (%rax),%rdi
lea    0x70a(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    1e0d <main+0xc7d>
jmp    1e12 <main+0xc82>
jmp    1e17 <main+0xc87>
jmp    1e1c <main+0xc8c>
jmp    1e21 <main+0xc91>
jmp    1e26 <main+0xc96>
jmp    1e2b <main+0xc9b>
jmp    1e30 <main+0xca0>
jmp    1e35 <main+0xca5>
jmp    1e3a <main+0xcaa>
jmp    1e3f <main+0xcaf>
jmp    1e44 <main+0xcb4>
jmp    1e49 <main+0xcb9>
jmp    1e4e <main+0xcbe>
jmp    1e53 <main+0xcc3>
jmp    1e58 <main+0xcc8>
jmp    1e5d <main+0xccd>
jmp    1e62 <main+0xcd2>
jmp    1e67 <main+0xcd7>
jmp    1e6c <main+0xcdc>
jmp    1e71 <main+0xce1>
jmp    1e76 <main+0xce6>
jmp    1e7b <main+0xceb>
jmp    1e80 <main+0xcf0>
jmp    1e85 <main+0xcf5>
jmp    1e8a <main+0xcfa>
jmp    1e8f <main+0xcff>
jmp    1e94 <main+0xd04>
jmp    1e99 <main+0xd09>
jmp    1e9e <main+0xd0e>
jmp    1ea3 <main+0xd13>
jmp    1fe0 <main+0xe50>
lea    0x66d(%rip),%rdi
call   1060 <printf@plt>
lea    0x69e(%rip),%rdi
call   1060 <printf@plt>
lea    0x6c2(%rip),%rdi
call   1060 <printf@plt>
lea    0x6d8(%rip),%rdi
call   1060 <printf@plt>
lea    0x6d7(%rip),%rdi
call   1060 <printf@plt>
lea    0x700(%rip),%rdi
call   1060 <printf@plt>
lea    0x735(%rip),%rdi
call   1060 <printf@plt>
lea    0x770(%rip),%rdi
call   1060 <printf@plt>
lea    0x7ad(%rip),%rdi
call   1060 <printf@plt>
lea    0x7e9(%rip),%rdi
call   1060 <printf@plt>
lea    0x815(%rip),%rdi
call   1060 <printf@plt>
lea    0x840(%rip),%rdi
call   1060 <printf@plt>
lea    0x869(%rip),%rdi
call   1060 <printf@plt>
lea    0x898(%rip),%rdi
call   1060 <printf@plt>
lea    0x8c8(%rip),%rdi
call   1060 <printf@plt>
lea    0x8eb(%rip),%rdi
call   1060 <printf@plt>
lea    0x90d(%rip),%rdi
call   1060 <printf@plt>
lea    0x932(%rip),%rdi
call   1060 <printf@plt>
lea    0x97b(%rip),%rdi
call   1060 <printf@plt>
lea    0x9b6(%rip),%rdi
call   1060 <printf@plt>
lea    0xa07(%rip),%rdi
call   1060 <printf@plt>
lea    0xa42(%rip),%rdi
call   1060 <printf@plt>
lea    0xa83(%rip),%rdi
call   1060 <printf@plt>
lea    0xac5(%rip),%rdi
call   1060 <printf@plt>
lea    0xb2f(%rip),%rdi
call   1060 <printf@plt>
lea    0xb78(%rip),%rdi
call   1060 <printf@plt>
xor    %eax,%eax
add    $0x2210,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r14
push   %rbx
sub    $0x900,%rsp
mov    %rsi,%r14
mov    %edi,%ebp
xor    %edi,%edi
call   10b0 <setuid@plt>
cmp    $0x2,%ebp
jl     120a <main+0x7a>
mov    0x8(%r14),%rdi
lea    0xe69(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1347 <main+0x1b7>
lea    0x8(%r14),%rbx
mov    (%rbx),%rdi
lea    0xe5b(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x3,%ebp
jb     139d <main+0x20d>
test   %rax,%rax
jne    139d <main+0x20d>
mov    0x10(%r14),%rdx
lea    0xe47(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   10a0 <sprintf@plt>
mov    %rbx,%rdi
jmp    1586 <main+0x3f6>
lea    0x130b(%rip),%rdi
call   1050 <puts@plt>
lea    0x133b(%rip),%rdi
call   1050 <puts@plt>
lea    0x135e(%rip),%rdi
call   1050 <puts@plt>
lea    0x1373(%rip),%rdi
call   1050 <puts@plt>
lea    0x1371(%rip),%rdi
call   1050 <puts@plt>
lea    0x1399(%rip),%rdi
call   1050 <puts@plt>
lea    0x13cd(%rip),%rdi
call   1050 <puts@plt>
lea    0x1407(%rip),%rdi
call   1050 <puts@plt>
lea    0x1443(%rip),%rdi
call   1050 <puts@plt>
lea    0x147e(%rip),%rdi
call   1050 <puts@plt>
lea    0x14a9(%rip),%rdi
call   1050 <puts@plt>
lea    0x14d3(%rip),%rdi
call   1050 <puts@plt>
lea    0x14fb(%rip),%rdi
call   1050 <puts@plt>
lea    0x1529(%rip),%rdi
call   1050 <puts@plt>
lea    0x1558(%rip),%rdi
call   1050 <puts@plt>
lea    0x157a(%rip),%rdi
call   1050 <puts@plt>
lea    0x159b(%rip),%rdi
call   1050 <puts@plt>
lea    0x15bf(%rip),%rdi
call   1050 <puts@plt>
lea    0x1607(%rip),%rdi
call   1050 <puts@plt>
lea    0x1641(%rip),%rdi
call   1050 <puts@plt>
lea    0x1691(%rip),%rdi
call   1050 <puts@plt>
lea    0x16cb(%rip),%rdi
call   1050 <puts@plt>
lea    0x170b(%rip),%rdi
call   1050 <puts@plt>
lea    0x174c(%rip),%rdi
call   1050 <puts@plt>
lea    0x17b5(%rip),%rdi
call   1050 <puts@plt>
lea    0x17fd(%rip),%rdi
call   1050 <puts@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rsi
lea    0x500(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0xc92(%rip),%rsi
mov    %rsp,%rbp
mov    %rbp,%rdi
mov    $0x1ff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
lea    0xc76(%rip),%rsi
mov    %rbp,%rdi
jmp    1424 <main+0x294>
mov    (%rbx),%rdi
lea    0xcc1(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x3,%ebp
jb     1436 <main+0x2a6>
test   %rax,%rax
jne    1436 <main+0x2a6>
mov    (%r14),%rsi
lea    0x400(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0xc1f(%rip),%rsi
lea    0x500(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x1ff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
mov    0x10(%r14),%rdx
lea    0xc66(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   10a0 <sprintf@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x1ff,%edx
call   1080 <strncat@plt>
mov    %rbp,%rdi
jmp    1586 <main+0x3f6>
mov    (%rbx),%rdi
lea    0xd81(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1557 <main+0x3c7>
mov    (%rbx),%rdi
lea    0xc62(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     156c <main+0x3dc>
mov    (%rbx),%rdi
lea    0xc6f(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1599 <main+0x409>
mov    (%rbx),%rdi
lea    0xc7d(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     15b5 <main+0x425>
mov    (%rbx),%rdi
lea    0xc87(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     15d1 <main+0x441>
mov    (%rbx),%rdi
lea    0xc8f(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     15e6 <main+0x456>
mov    (%rbx),%rdi
lea    0xca2(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     15fb <main+0x46b>
mov    (%rbx),%rdi
lea    0xcb7(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1613 <main+0x483>
mov    (%rbx),%rdi
lea    0xcc9(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     162b <main+0x49b>
mov    (%rbx),%rdi
lea    0xcd7(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     164a <main+0x4ba>
mov    (%rbx),%rdi
lea    0xce3(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x3,%ebp
jb     1669 <main+0x4d9>
test   %rax,%rax
jne    1669 <main+0x4d9>
mov    0x10(%r14),%rdx
lea    0xcdc(%rip),%rsi
jmp    11f5 <main+0x65>
movups 0xb4c(%rip),%xmm0
movups %xmm0,0xc(%rsp)
movups 0xb34(%rip),%xmm0
jmp    157f <main+0x3ef>
movups 0xb5c(%rip),%xmm0
movups %xmm0,0xc(%rsp)
movups 0xb44(%rip),%xmm0
movaps %xmm0,(%rsp)
mov    %rsp,%rdi
call   1060 <system@plt>
xor    %eax,%eax
add    $0x900,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret
movups 0xb4e(%rip),%xmm0
movaps %xmm0,(%rsp)
movabs $0x74726174736572,%rax
mov    %rax,0xf(%rsp)
jmp    1583 <main+0x3f3>
movups 0xb56(%rip),%xmm0
movaps %xmm0,(%rsp)
movabs $0x7472617473206f,%rax
mov    %rax,0xd(%rsp)
jmp    1583 <main+0x3f3>
movups 0xb5b(%rip),%xmm0
movaps %xmm0,(%rsp)
movl   $0x706f74,0x10(%rsp)
jmp    1583 <main+0x3f3>
movups 0xb75(%rip),%xmm0
movups %xmm0,0xb(%rsp)
movups 0xb5e(%rip),%xmm0
jmp    157f <main+0x3ef>
movups 0xb8d(%rip),%xmm0
movups %xmm0,0xc(%rsp)
movups 0xb75(%rip),%xmm0
jmp    157f <main+0x3ef>
movups 0xb9f(%rip),%xmm0
movups %xmm0,0x9(%rsp)
movups 0xb8a(%rip),%xmm0
jmp    157f <main+0x3ef>
movups 0xba6(%rip),%xmm0
movaps %xmm0,(%rsp)
movabs $0x74726174732062,%rax
mov    %rax,0xf(%rsp)
jmp    1583 <main+0x3f3>
movups 0xbac(%rip),%xmm0
movaps %xmm0,(%rsp)
movabs $0x706f7473206264,%rax
mov    %rax,0xe(%rsp)
jmp    1583 <main+0x3f3>
mov    (%rbx),%rdi
lea    0xbfb(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     184e <main+0x6be>
mov    (%rbx),%rdi
lea    0xc22(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     185e <main+0x6ce>
mov    (%rbx),%rdi
lea    0xc2a(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1872 <main+0x6e2>
mov    (%rbx),%rdi
lea    0xc1d(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1886 <main+0x6f6>
mov    (%rbx),%rdi
lea    0xc2d(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     189a <main+0x70a>
mov    (%rbx),%rdi
lea    0xc3b(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     18ae <main+0x71e>
mov    (%rbx),%rdi
lea    0xc23(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     192c <main+0x79c>
mov    (%rbx),%rdi
lea    0xc0b(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     19aa <main+0x81a>
mov    (%rbx),%rdi
lea    0xbf3(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1a25 <main+0x895>
mov    (%rbx),%rdi
lea    0xd1a(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1abb <main+0x92b>
mov    (%rbx),%rdi
lea    0xc62(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1acf <main+0x93f>
mov    (%rbx),%rdi
lea    0xc6a(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1ae3 <main+0x953>
mov    (%rbx),%rdi
lea    0xc78(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1af7 <main+0x967>
mov    (%rbx),%rdi
lea    0xc88(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1b0b <main+0x97b>
mov    (%rbx),%rdi
lea    0xca0(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1b1f <main+0x98f>
mov    (%rbx),%rdi
lea    0xcac(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x3,%ebp
jb     1b33 <main+0x9a3>
test   %rax,%rax
jne    1b33 <main+0x9a3>
mov    (%r14),%rsi
lea    0x500(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0x7e7(%rip),%rsi
lea    0x400(%rsp),%rbp
mov    %rbp,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0xff,%edx
call   1080 <strncat@plt>
mov    0x10(%r14),%rdx
lea    0xc53(%rip),%rsi
jmp    1ba3 <main+0xa13>
mov    0x10(%r14),%rdx
lea    0xa35(%rip),%rsi
jmp    11f5 <main+0x65>
mov    (%r14),%rdi
lea    0xa56(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0xa51(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0xa5c(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0xa6f(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    0x10(%r14),%rdi
lea    0xa80(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x4,%ebp
jne    16f9 <main+0x569>
test   %rax,%rax
jne    16f9 <main+0x569>
mov    (%r14),%rsi
lea    0x400(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0x709(%rip),%rsi
lea    0x500(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
mov    0x18(%r14),%rdx
lea    0xa1b(%rip),%rsi
jmp    1a9e <main+0x90e>
mov    0x10(%r14),%rdi
lea    0xa28(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x4,%ebp
jne    1711 <main+0x581>
test   %rax,%rax
jne    1711 <main+0x581>
mov    (%r14),%rsi
lea    0x400(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0x68b(%rip),%rsi
lea    0x500(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
mov    0x18(%r14),%rdx
lea    0x9c2(%rip),%rsi
jmp    1a9e <main+0x90e>
mov    0x10(%r14),%rdi
lea    0x9ce(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x4,%ebp
jne    1729 <main+0x599>
test   %rax,%rax
jne    1729 <main+0x599>
mov    (%r14),%rsi
lea    0x400(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0x60d(%rip),%rsi
lea    0x500(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
mov    0x18(%r14),%rdx
lea    0x964(%rip),%rsi
jmp    1a9e <main+0x90e>
mov    0x10(%r14),%rdi
lea    0x96f(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x4,%ebp
jne    1741 <main+0x5b1>
test   %rax,%rax
jne    1741 <main+0x5b1>
mov    (%r14),%rsi
lea    0x400(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0x592(%rip),%rsi
lea    0x500(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x3ff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x3ff,%edx
call   1080 <strncat@plt>
mov    0x18(%r14),%rdx
lea    0x90a(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   10a0 <sprintf@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0x3ff,%edx
jmp    1429 <main+0x299>
mov    (%r14),%rdi
lea    0x9b2(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0x8fc(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0x90b(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0x91e(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0x936(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0x94c(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>
mov    (%rbx),%rdi
lea    0x98c(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x3,%ebp
jb     1bc0 <main+0xa30>
test   %rax,%rax
jne    1bc0 <main+0xa30>
mov    (%r14),%rsi
lea    0x500(%rsp),%rbx
mov    %rbx,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbx,%rdi
call   1070 <dirname@plt>
lea    0x48d(%rip),%rsi
lea    0x400(%rsp),%rbp
mov    %rbp,%rdi
mov    $0xff,%edx
call   1030 <strncpy@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0xff,%edx
call   1080 <strncat@plt>
mov    0x10(%r14),%rdx
lea    0x93c(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   10a0 <sprintf@plt>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    $0xff,%edx
jmp    1429 <main+0x299>
mov    (%rbx),%rdi
lea    0x943(%rip),%rsi
call   1090 <strcmp@plt>
test   %rax,%rax
jne    158b <main+0x3fb>
mov    (%r14),%rdi
lea    0x92b(%rip),%rsi
call   1040 <upgrade_commands@plt>
jmp    158b <main+0x3fb>

LLVM IR (-O0):
@.str = [14 x i8] c"backup-create\00"
@.str.1 = [11 x i8] c"/bin/bash \00"
@.str.2 = [35 x i8] c"/upgrade_commands.sh backup-create\00"
@.str.3 = [14 x i8] c"backup-delete\00"
@.str.4 = [44 x i8] c"rm -rf /var/Mycodo-backups/Mycodo-backup-%s\00"
@.str.5 = [15 x i8] c"backup-restore\00"
@.str.6 = [39 x i8] c"/upgrade_commands.sh backup-restore %s\00"
@.str.7 = [8 x i8] c"restart\00"
@.str.8 = [28 x i8] c"sleep 10 && shutdown now -r\00"
@.str.9 = [9 x i8] c"shutdown\00"
@.str.10 = [28 x i8] c"sleep 10 && shutdown now -h\00"
@.str.11 = [15 x i8] c"daemon_restart\00"
@.str.12 = [23 x i8] c"service mycodo restart\00"
@.str.13 = [13 x i8] c"daemon_start\00"
@.str.14 = [21 x i8] c"service mycodo start\00"
@.str.15 = [12 x i8] c"daemon_stop\00"
@.str.16 = [20 x i8] c"service mycodo stop\00"
@.str.17 = [16 x i8] c"frontend_reload\00"
@.str.18 = [27 x i8] c"service mycodoflask reload\00"
@.str.19 = [17 x i8] c"frontend_restart\00"
@.str.20 = [28 x i8] c"service mycodoflask restart\00"
@.str.21 = [17 x i8] c"influxdb_restart\00"
@.str.22 = [25 x i8] c"service influxdb restart\00"
@.str.23 = [15 x i8] c"influxdb_start\00"
@.str.24 = [23 x i8] c"service influxdb start\00"
@.str.25 = [14 x i8] c"influxdb_stop\00"
@.str.26 = [22 x i8] c"service influxdb stop\00"
@.str.27 = [27 x i8] c"influxdb_restore_mycodo_db\00"
@.str.28 = [64 x i8] c"influxd restore -portable -db mycodo_db -newdb mycodo_db_bak %s\00"
@.str.29 = [32 x i8] c"influxdb_delete_restore_tmp_dir\00"
@.str.30 = [31 x i8] c"rm -rf /var/mycodo-root/upload\00"
@.str.31 = [17 x i8] c"upgrade_database\00"
@.str.32 = [15 x i8] c"update-alembic\00"
@.str.33 = [11 x i8] c"initialize\00"
@.str.34 = [20 x i8] c"update_dependencies\00"
@.str.35 = [20 x i8] c"update-dependencies\00"
@.str.36 = [19 x i8] c"update_permissions\00"
@.str.37 = [19 x i8] c"update-permissions\00"
@.str.38 = [19 x i8] c"install_dependency\00"
@.str.39 = [9 x i8] c"pip-pypi\00"
@.str.40 = [29 x i8] c"/dependencies.sh pip-pypi %s\00"
@.str.41 = [8 x i8] c"pip-git\00"
@.str.42 = [28 x i8] c"/dependencies.sh pip-git %s\00"
@.str.43 = [4 x i8] c"apt\00"
@.str.44 = [24 x i8] c"/dependencies.sh apt %s\00"
@.str.45 = [9 x i8] c"internal\00"
@.str.46 = [29 x i8] c"/dependencies.sh internal %s\00"
@.str.47 = [16 x i8] c"install_pigpiod\00"
@.str.48 = [16 x i8] c"install-pigpiod\00"
@.str.49 = [16 x i8] c"disable_pigpiod\00"
@.str.50 = [16 x i8] c"disable-pigpiod\00"
@.str.51 = [19 x i8] c"enable_pigpiod_low\00"
@.str.52 = [19 x i8] c"enable-pigpiod-low\00"
@.str.53 = [20 x i8] c"enable_pigpiod_high\00"
@.str.54 = [20 x i8] c"enable-pigpiod-high\00"
@.str.55 = [24 x i8] c"enable_pigpiod_disabled\00"
@.str.56 = [24 x i8] c"enable-pigpiod-disabled\00"
@.str.57 = [18 x i8] c"uninstall_pigpiod\00"
@.str.58 = [18 x i8] c"uninstall-pigpiod\00"
@.str.59 = [21 x i8] c"upgrade-release-wipe\00"
@.str.60 = [45 x i8] c"/upgrade_commands.sh upgrade-release-wipe %s\00"
@.str.61 = [22 x i8] c"upgrade-release-major\00"
@.str.62 = [46 x i8] c"/upgrade_commands.sh upgrade-release-major %s\00"
@.str.63 = [15 x i8] c"upgrade-master\00"
@.str.64 = [61 x i8] c"Mycodo Wrapper: A wrapper to allow the mycodo web interface\0A\00"
@.str.65 = [48 x i8] c" to perform superuser actions.\0A\0A\00"
@.str.66 = [34 x i8] c"Usage: mycodo_wrapper [command]\0A\0A\00"
@.str.67 = [11 x i8] c"Commands:\0A\00"
@.str.68 = [53 x i8] c" backup-create: Create Mycodo backup\0A\00"
@.str.69 = [65 x i8] c" backup-delete [DIRECTORY]: Delete Mycodo backup [DIRECTORY]\0A\00"
@.str.70 = [71 x i8] c" backup-restore [DIRECTORY]: Restore Mycodo from backup [DIRECTORY]\0A\00"
@.str.71 = [73 x i8] c" daemon_restart: Restart the mycodo daemon in normal mode\0A\00"
@.str.72 = [72 x i8] c" daemon_restart_debug: Restart the mycodo daemon in debug mode\0A\00"
@.str.73 = [56 x i8] c" daemon_start: Start the mycodo daemon\0A\00"
@.str.74 = [55 x i8] c" daemon_stop: Stop the mycodo daemon\0A\00"
@.str.75 = [53 x i8] c" database_upgrade: Upgrade the database\0A\00"
@.str.76 = [59 x i8] c" frontend_reload: Reload the mycodo frontend\0A\00"
@.str.77 = [60 x i8] c" frontend_restart: Restart the mycodo frontend\0A\00"
@.str.78 = [47 x i8] c" influxdb_start: Start influxdb\0A\00"
@.str.79 = [46 x i8] c" influxdb_stop: Stop influxdb\0A\00"
@.str.80 = [49 x i8] c" influxdb_restart: Restart influxdb\0A\00"
@.str.81 = [85 x i8] c" influxdb_restore_mycodo_db Restore influxdb database mycodo_db to mycodo_db_bak\0A\00"
@.str.82 = [71 x i8] c" initialize: Run the Mycodo initialization sequence\0A\00"
@.str.83 = [93 x i8] c" update_dependencies: Install unmet dependencies and update installed dependencies\0A\00"
@.str.84 = [71 x i8] c" update_permissions: Set the Mycodo file/folder permissions\0A\00"
@.str.85 = [77 x i8] c" restart: Restart the computer after a 10 second pause\0A\00"
@.str.86 = [78 x i8] c" shutdown: Shutdown the computer after a 10 second pause\0A\00"
@.str.87 = [118 x i8] c" upgrade-release-wipe: Upgrade Mycodo to the latest major version on github and wipe database and virtualenv\0A\00"
@.str.88 = [85 x i8] c" upgrade-release-major: Upgrade Mycodo to the latest major version on github\0A\00"
@.str.89 = [85 x i8] c" upgrade-master: Upgrade Mycodo to the latest master branch on github\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [1024 x i8]
%7 = alloca [256 x i8]
%8 = alloca [512 x i8]
%9 = alloca [256 x i8]
%10 = alloca [512 x i8]
%11 = alloca [256 x i8]
%12 = alloca [1024 x i8]
%13 = alloca [256 x i8]
%14 = alloca [1024 x i8]
%15 = alloca [256 x i8]
%16 = alloca [1024 x i8]
%17 = alloca [256 x i8]
%18 = alloca [1024 x i8]
%19 = alloca [256 x i8]
%20 = alloca [256 x i8]
%21 = alloca [256 x i8]
%22 = alloca [256 x i8]
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%23 = call i32 @setuid(i32 0)
%24 = load i32, i32* %4
%25 = icmp sgt i32 %24, 1
br i1 %25, label %26, label %608
26: ; preds = %2
%27 = load i8**, i8*** %5
%28 = getelementptr inbounds i8*, i8** %27, i64 1
%29 = load i8*, i8** %28
%30 = call i64 @strcmp(i8* %29, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0))
%31 = icmp eq i64 %30, 0
br i1 %31, label %32, label %49
32: ; preds = %26
%33 = getelementptr inbounds [256 x i8], [256 x i8]* %7, i64 0, i64 0
%34 = load i8**, i8*** %5
%35 = getelementptr inbounds i8*, i8** %34, i64 0
%36 = load i8*, i8** %35
%37 = call i32 @strncpy(i8* %33, i8* %36, i32 255)
%38 = getelementptr inbounds [256 x i8], [256 x i8]* %7, i64 0, i64 0
%39 = call i32 @dirname(i8* %38)
%40 = getelementptr inbounds [512 x i8], [512 x i8]* %8, i64 0, i64 0
%41 = call i32 @strncpy(i8* %40, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 511)
%42 = getelementptr inbounds [512 x i8], [512 x i8]* %8, i64 0, i64 0
%43 = getelementptr inbounds [256 x i8], [256 x i8]* %7, i64 0, i64 0
%44 = call i32 @strncat(i8* %42, i8* %43, i32 511)
%45 = getelementptr inbounds [512 x i8], [512 x i8]* %8, i64 0, i64 0
%46 = call i32 @strncat(i8* %45, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.2, i64 0, i64 0), i32 511)
%47 = getelementptr inbounds [512 x i8], [512 x i8]* %8, i64 0, i64 0
%48 = call i32 @system(i8* %47)
br label %607
49: ; preds = %26
%50 = load i8**, i8*** %5
%51 = getelementptr inbounds i8*, i8** %50, i64 1
%52 = load i8*, i8** %51
%53 = call i64 @strcmp(i8* %52, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0))
%54 = icmp eq i64 %53, 0
br i1 %54, label %55, label %66
55: ; preds = %49
%56 = load i32, i32* %4
%57 = icmp sgt i32 %56, 2
br i1 %57, label %58, label %66
58: ; preds = %55
%59 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%60 = load i8**, i8*** %5
%61 = getelementptr inbounds i8*, i8** %60, i64 2
%62 = load i8*, i8** %61
%63 = call i32 (i8*, i8*, ...) @sprintf(i8* %59, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.4, i64 0, i64 0), i8* %62)
%64 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%65 = call i32 @system(i8* %64)
br label %606
66: ; preds = %55, %49
%67 = load i8**, i8*** %5
%68 = getelementptr inbounds i8*, i8** %67, i64 1
%69 = load i8*, i8** %68
%70 = call i64 @strcmp(i8* %69, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0))
%71 = icmp eq i64 %70, 0
br i1 %71, label %72, label %98
72: ; preds = %66
%73 = load i32, i32* %4
%74 = icmp sgt i32 %73, 2
br i1 %74, label %75, label %98
75: ; preds = %72
%76 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%77 = load i8**, i8*** %5
%78 = getelementptr inbounds i8*, i8** %77, i64 0
%79 = load i8*, i8** %78
%80 = call i32 @strncpy(i8* %76, i8* %79, i32 255)
%81 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%82 = call i32 @dirname(i8* %81)
%83 = getelementptr inbounds [512 x i8], [512 x i8]* %10, i64 0, i64 0
%84 = call i32 @strncpy(i8* %83, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 511)
%85 = getelementptr inbounds [512 x i8], [512 x i8]* %10, i64 0, i64 0
%86 = getelementptr inbounds [256 x i8], [256 x i8]* %9, i64 0, i64 0
%87 = call i32 @strncat(i8* %85, i8* %86, i32 511)
%88 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%89 = load i8**, i8*** %5
%90 = getelementptr inbounds i8*, i8** %89, i64 2
%91 = load i8*, i8** %90
%92 = call i32 (i8*, i8*, ...) @sprintf(i8* %88, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.6, i64 0, i64 0), i8* %91)
%93 = getelementptr inbounds [512 x i8], [512 x i8]* %10, i64 0, i64 0
%94 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%95 = call i32 @strncat(i8* %93, i8* %94, i32 511)
%96 = getelementptr inbounds [512 x i8], [512 x i8]* %10, i64 0, i64 0
%97 = call i32 @system(i8* %96)
br label %605
98: ; preds = %72, %66
%99 = load i8**, i8*** %5
%100 = getelementptr inbounds i8*, i8** %99, i64 1
%101 = load i8*, i8** %100
%102 = call i64 @strcmp(i8* %101, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%103 = icmp eq i64 %102, 0
br i1 %103, label %104, label %109
104: ; preds = %98
%105 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%106 = call i32 (i8*, i8*, ...) @sprintf(i8* %105, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.8, i64 0, i64 0))
%107 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%108 = call i32 @system(i8* %107)
br label %604
109: ; preds = %98
%110 = load i8**, i8*** %5
%111 = getelementptr inbounds i8*, i8** %110, i64 1
%112 = load i8*, i8** %111
%113 = call i64 @strcmp(i8* %112, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0))
%114 = icmp eq i64 %113, 0
br i1 %114, label %115, label %120
115: ; preds = %109
%116 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%117 = call i32 (i8*, i8*, ...) @sprintf(i8* %116, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.10, i64 0, i64 0))
%118 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%119 = call i32 @system(i8* %118)
br label %603
120: ; preds = %109
%121 = load i8**, i8*** %5
%122 = getelementptr inbounds i8*, i8** %121, i64 1
%123 = load i8*, i8** %122
%124 = call i64 @strcmp(i8* %123, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0))
%125 = icmp eq i64 %124, 0
br i1 %125, label %126, label %131
126: ; preds = %120
%127 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%128 = call i32 (i8*, i8*, ...) @sprintf(i8* %127, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.12, i64 0, i64 0))
%129 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%130 = call i32 @system(i8* %129)
br label %602
131: ; preds = %120
%132 = load i8**, i8*** %5
%133 = getelementptr inbounds i8*, i8** %132, i64 1
%134 = load i8*, i8** %133
%135 = call i64 @strcmp(i8* %134, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0))
%136 = icmp eq i64 %135, 0
br i1 %136, label %137, label %142
137: ; preds = %131
%138 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%139 = call i32 (i8*, i8*, ...) @sprintf(i8* %138, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.14, i64 0, i64 0))
%140 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%141 = call i32 @system(i8* %140)
br label %601
142: ; preds = %131
%143 = load i8**, i8*** %5
%144 = getelementptr inbounds i8*, i8** %143, i64 1
%145 = load i8*, i8** %144
%146 = call i64 @strcmp(i8* %145, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0))
%147 = icmp eq i64 %146, 0
br i1 %147, label %148, label %153
148: ; preds = %142
%149 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%150 = call i32 (i8*, i8*, ...) @sprintf(i8* %149, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.16, i64 0, i64 0))
%151 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%152 = call i32 @system(i8* %151)
br label %600
153: ; preds = %142
%154 = load i8**, i8*** %5
%155 = getelementptr inbounds i8*, i8** %154, i64 1
%156 = load i8*, i8** %155
%157 = call i64 @strcmp(i8* %156, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0))
%158 = icmp eq i64 %157, 0
br i1 %158, label %159, label %164
159: ; preds = %153
%160 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%161 = call i32 (i8*, i8*, ...) @sprintf(i8* %160, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.18, i64 0, i64 0))
%162 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%163 = call i32 @system(i8* %162)
br label %599
164: ; preds = %153
%165 = load i8**, i8*** %5
%166 = getelementptr inbounds i8*, i8** %165, i64 1
%167 = load i8*, i8** %166
%168 = call i64 @strcmp(i8* %167, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.19, i64 0, i64 0))
%169 = icmp eq i64 %168, 0
br i1 %169, label %170, label %175
170: ; preds = %164
%171 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%172 = call i32 (i8*, i8*, ...) @sprintf(i8* %171, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.20, i64 0, i64 0))
%173 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%174 = call i32 @system(i8* %173)
br label %598
175: ; preds = %164
%176 = load i8**, i8*** %5
%177 = getelementptr inbounds i8*, i8** %176, i64 1
%178 = load i8*, i8** %177
%179 = call i64 @strcmp(i8* %178, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.21, i64 0, i64 0))
%180 = icmp eq i64 %179, 0
br i1 %180, label %181, label %186
181: ; preds = %175
%182 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%183 = call i32 (i8*, i8*, ...) @sprintf(i8* %182, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.22, i64 0, i64 0))
%184 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%185 = call i32 @system(i8* %184)
br label %597
186: ; preds = %175
%187 = load i8**, i8*** %5
%188 = getelementptr inbounds i8*, i8** %187, i64 1
%189 = load i8*, i8** %188
%190 = call i64 @strcmp(i8* %189, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0))
%191 = icmp eq i64 %190, 0
br i1 %191, label %192, label %197
192: ; preds = %186
%193 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%194 = call i32 (i8*, i8*, ...) @sprintf(i8* %193, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.24, i64 0, i64 0))
%195 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%196 = call i32 @system(i8* %195)
br label %596
197: ; preds = %186
%198 = load i8**, i8*** %5
%199 = getelementptr inbounds i8*, i8** %198, i64 1
%200 = load i8*, i8** %199
%201 = call i64 @strcmp(i8* %200, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.25, i64 0, i64 0))
%202 = icmp eq i64 %201, 0
br i1 %202, label %203, label %208
203: ; preds = %197
%204 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%205 = call i32 (i8*, i8*, ...) @sprintf(i8* %204, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.26, i64 0, i64 0))
%206 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%207 = call i32 @system(i8* %206)
br label %595
208: ; preds = %197
%209 = load i8**, i8*** %5
%210 = getelementptr inbounds i8*, i8** %209, i64 1
%211 = load i8*, i8** %210
%212 = call i64 @strcmp(i8* %211, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0))
%213 = icmp eq i64 %212, 0
br i1 %213, label %214, label %225
214: ; preds = %208
%215 = load i32, i32* %4
%216 = icmp sgt i32 %215, 2
br i1 %216, label %217, label %225
217: ; preds = %214
%218 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%219 = load i8**, i8*** %5
%220 = getelementptr inbounds i8*, i8** %219, i64 2
%221 = load i8*, i8** %220
%222 = call i32 (i8*, i8*, ...) @sprintf(i8* %218, i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.28, i64 0, i64 0), i8* %221)
%223 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%224 = call i32 @system(i8* %223)
br label %594
225: ; preds = %214, %208
%226 = load i8**, i8*** %5
%227 = getelementptr inbounds i8*, i8** %226, i64 1
%228 = load i8*, i8** %227
%229 = call i64 @strcmp(i8* %228, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.29, i64 0, i64 0))
%230 = icmp eq i64 %229, 0
br i1 %230, label %231, label %239
231: ; preds = %225
%232 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%233 = load i8**, i8*** %5
%234 = getelementptr inbounds i8*, i8** %233, i64 2
%235 = load i8*, i8** %234
%236 = call i32 (i8*, i8*, ...) @sprintf(i8* %232, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.30, i64 0, i64 0), i8* %235)
%237 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%238 = call i32 @system(i8* %237)
br label %593
239: ; preds = %225
%240 = load i8**, i8*** %5
%241 = getelementptr inbounds i8*, i8** %240, i64 1
%242 = load i8*, i8** %241
%243 = call i64 @strcmp(i8* %242, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.31, i64 0, i64 0))
%244 = icmp eq i64 %243, 0
br i1 %244, label %245, label %250
245: ; preds = %239
%246 = load i8**, i8*** %5
%247 = getelementptr inbounds i8*, i8** %246, i64 0
%248 = load i8*, i8** %247
%249 = call i32 @upgrade_commands(i8* %248, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0))
br label %592
250: ; preds = %239
%251 = load i8**, i8*** %5
%252 = getelementptr inbounds i8*, i8** %251, i64 1
%253 = load i8*, i8** %252
%254 = call i64 @strcmp(i8* %253, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
%255 = icmp eq i64 %254, 0
br i1 %255, label %256, label %261
256: ; preds = %250
%257 = load i8**, i8*** %5
%258 = getelementptr inbounds i8*, i8** %257, i64 0
%259 = load i8*, i8** %258
%260 = call i32 @upgrade_commands(i8* %259, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
br label %591
261: ; preds = %250
%262 = load i8**, i8*** %5
%263 = getelementptr inbounds i8*, i8** %262, i64 1
%264 = load i8*, i8** %263
%265 = call i64 @strcmp(i8* %264, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.34, i64 0, i64 0))
%266 = icmp eq i64 %265, 0
br i1 %266, label %267, label %272
267: ; preds = %261
%268 = load i8**, i8*** %5
%269 = getelementptr inbounds i8*, i8** %268, i64 0
%270 = load i8*, i8** %269
%271 = call i32 @upgrade_commands(i8* %270, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.35, i64 0, i64 0))
br label %590
272: ; preds = %261
%273 = load i8**, i8*** %5
%274 = getelementptr inbounds i8*, i8** %273, i64 1
%275 = load i8*, i8** %274
%276 = call i64 @strcmp(i8* %275, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.36, i64 0, i64 0))
%277 = icmp eq i64 %276, 0
br i1 %277, label %278, label %283
278: ; preds = %272
%279 = load i8**, i8*** %5
%280 = getelementptr inbounds i8*, i8** %279, i64 0
%281 = load i8*, i8** %280
%282 = call i32 @upgrade_commands(i8* %281, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.37, i64 0, i64 0))
br label %589
283: ; preds = %272
%284 = load i8**, i8*** %5
%285 = getelementptr inbounds i8*, i8** %284, i64 1
%286 = load i8*, i8** %285
%287 = call i64 @strcmp(i8* %286, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%288 = icmp eq i64 %287, 0
br i1 %288, label %289, label %321
289: ; preds = %283
%290 = load i8**, i8*** %5
%291 = getelementptr inbounds i8*, i8** %290, i64 2
%292 = load i8*, i8** %291
%293 = call i64 @strcmp(i8* %292, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.39, i64 0, i64 0))
%294 = icmp eq i64 %293, 0
br i1 %294, label %295, label %321
295: ; preds = %289
%296 = load i32, i32* %4
%297 = icmp eq i32 %296, 4
br i1 %297, label %298, label %321
298: ; preds = %295
%299 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%300 = load i8**, i8*** %5
%301 = getelementptr inbounds i8*, i8** %300, i64 0
%302 = load i8*, i8** %301
%303 = call i32 @strncpy(i8* %299, i8* %302, i32 255)
%304 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%305 = call i32 @dirname(i8* %304)
%306 = getelementptr inbounds [1024 x i8], [1024 x i8]* %12, i64 0, i64 0
%307 = call i32 @strncpy(i8* %306, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%308 = getelementptr inbounds [1024 x i8], [1024 x i8]* %12, i64 0, i64 0
%309 = getelementptr inbounds [256 x i8], [256 x i8]* %11, i64 0, i64 0
%310 = call i32 @strncat(i8* %308, i8* %309, i32 1023)
%311 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%312 = load i8**, i8*** %5
%313 = getelementptr inbounds i8*, i8** %312, i64 3
%314 = load i8*, i8** %313
%315 = call i32 (i8*, i8*, ...) @sprintf(i8* %311, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.40, i64 0, i64 0), i8* %314)
%316 = getelementptr inbounds [1024 x i8], [1024 x i8]* %12, i64 0, i64 0
%317 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%318 = call i32 @strncat(i8* %316, i8* %317, i32 1023)
%319 = getelementptr inbounds [1024 x i8], [1024 x i8]* %12, i64 0, i64 0
%320 = call i32 @system(i8* %319)
br label %588
321: ; preds = %295, %289, %283
%322 = load i8**, i8*** %5
%323 = getelementptr inbounds i8*, i8** %322, i64 1
%324 = load i8*, i8** %323
%325 = call i64 @strcmp(i8* %324, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%326 = icmp eq i64 %325, 0
br i1 %326, label %327, label %359
327: ; preds = %321
%328 = load i8**, i8*** %5
%329 = getelementptr inbounds i8*, i8** %328, i64 2
%330 = load i8*, i8** %329
%331 = call i64 @strcmp(i8* %330, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0))
%332 = icmp eq i64 %331, 0
br i1 %332, label %333, label %359
333: ; preds = %327
%334 = load i32, i32* %4
%335 = icmp eq i32 %334, 4
br i1 %335, label %336, label %359
336: ; preds = %333
%337 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i64 0, i64 0
%338 = load i8**, i8*** %5
%339 = getelementptr inbounds i8*, i8** %338, i64 0
%340 = load i8*, i8** %339
%341 = call i32 @strncpy(i8* %337, i8* %340, i32 255)
%342 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i64 0, i64 0
%343 = call i32 @dirname(i8* %342)
%344 = getelementptr inbounds [1024 x i8], [1024 x i8]* %14, i64 0, i64 0
%345 = call i32 @strncpy(i8* %344, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%346 = getelementptr inbounds [1024 x i8], [1024 x i8]* %14, i64 0, i64 0
%347 = getelementptr inbounds [256 x i8], [256 x i8]* %13, i64 0, i64 0
%348 = call i32 @strncat(i8* %346, i8* %347, i32 1023)
%349 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%350 = load i8**, i8*** %5
%351 = getelementptr inbounds i8*, i8** %350, i64 3
%352 = load i8*, i8** %351
%353 = call i32 (i8*, i8*, ...) @sprintf(i8* %349, i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.42, i64 0, i64 0), i8* %352)
%354 = getelementptr inbounds [1024 x i8], [1024 x i8]* %14, i64 0, i64 0
%355 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%356 = call i32 @strncat(i8* %354, i8* %355, i32 1023)
%357 = getelementptr inbounds [1024 x i8], [1024 x i8]* %14, i64 0, i64 0
%358 = call i32 @system(i8* %357)
br label %587
359: ; preds = %333, %327, %321
%360 = load i8**, i8*** %5
%361 = getelementptr inbounds i8*, i8** %360, i64 1
%362 = load i8*, i8** %361
%363 = call i64 @strcmp(i8* %362, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%364 = icmp eq i64 %363, 0
br i1 %364, label %365, label %397
365: ; preds = %359
%366 = load i8**, i8*** %5
%367 = getelementptr inbounds i8*, i8** %366, i64 2
%368 = load i8*, i8** %367
%369 = call i64 @strcmp(i8* %368, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.43, i64 0, i64 0))
%370 = icmp eq i64 %369, 0
br i1 %370, label %371, label %397
371: ; preds = %365
%372 = load i32, i32* %4
%373 = icmp eq i32 %372, 4
br i1 %373, label %374, label %397
374: ; preds = %371
%375 = getelementptr inbounds [256 x i8], [256 x i8]* %15, i64 0, i64 0
%376 = load i8**, i8*** %5
%377 = getelementptr inbounds i8*, i8** %376, i64 0
%378 = load i8*, i8** %377
%379 = call i32 @strncpy(i8* %375, i8* %378, i32 255)
%380 = getelementptr inbounds [256 x i8], [256 x i8]* %15, i64 0, i64 0
%381 = call i32 @dirname(i8* %380)
%382 = getelementptr inbounds [1024 x i8], [1024 x i8]* %16, i64 0, i64 0
%383 = call i32 @strncpy(i8* %382, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%384 = getelementptr inbounds [1024 x i8], [1024 x i8]* %16, i64 0, i64 0
%385 = getelementptr inbounds [256 x i8], [256 x i8]* %15, i64 0, i64 0
%386 = call i32 @strncat(i8* %384, i8* %385, i32 1023)
%387 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%388 = load i8**, i8*** %5
%389 = getelementptr inbounds i8*, i8** %388, i64 3
%390 = load i8*, i8** %389
%391 = call i32 (i8*, i8*, ...) @sprintf(i8* %387, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.44, i64 0, i64 0), i8* %390)
%392 = getelementptr inbounds [1024 x i8], [1024 x i8]* %16, i64 0, i64 0
%393 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%394 = call i32 @strncat(i8* %392, i8* %393, i32 1023)
%395 = getelementptr inbounds [1024 x i8], [1024 x i8]* %16, i64 0, i64 0
%396 = call i32 @system(i8* %395)
br label %586
397: ; preds = %371, %365, %359
%398 = load i8**, i8*** %5
%399 = getelementptr inbounds i8*, i8** %398, i64 1
%400 = load i8*, i8** %399
%401 = call i64 @strcmp(i8* %400, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%402 = icmp eq i64 %401, 0
br i1 %402, label %403, label %435
403: ; preds = %397
%404 = load i8**, i8*** %5
%405 = getelementptr inbounds i8*, i8** %404, i64 2
%406 = load i8*, i8** %405
%407 = call i64 @strcmp(i8* %406, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.45, i64 0, i64 0))
%408 = icmp eq i64 %407, 0
br i1 %408, label %409, label %435
409: ; preds = %403
%410 = load i32, i32* %4
%411 = icmp eq i32 %410, 4
br i1 %411, label %412, label %435
412: ; preds = %409
%413 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%414 = load i8**, i8*** %5
%415 = getelementptr inbounds i8*, i8** %414, i64 0
%416 = load i8*, i8** %415
%417 = call i32 @strncpy(i8* %413, i8* %416, i32 255)
%418 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%419 = call i32 @dirname(i8* %418)
%420 = getelementptr inbounds [1024 x i8], [1024 x i8]* %18, i64 0, i64 0
%421 = call i32 @strncpy(i8* %420, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%422 = getelementptr inbounds [1024 x i8], [1024 x i8]* %18, i64 0, i64 0
%423 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%424 = call i32 @strncat(i8* %422, i8* %423, i32 1023)
%425 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%426 = load i8**, i8*** %5
%427 = getelementptr inbounds i8*, i8** %426, i64 3
%428 = load i8*, i8** %427
%429 = call i32 (i8*, i8*, ...) @sprintf(i8* %425, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.46, i64 0, i64 0), i8* %428)
%430 = getelementptr inbounds [1024 x i8], [1024 x i8]* %18, i64 0, i64 0
%431 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%432 = call i32 @strncat(i8* %430, i8* %431, i32 1023)
%433 = getelementptr inbounds [1024 x i8], [1024 x i8]* %18, i64 0, i64 0
%434 = call i32 @system(i8* %433)
br label %585
435: ; preds = %409, %403, %397
%436 = load i8**, i8*** %5
%437 = getelementptr inbounds i8*, i8** %436, i64 1
%438 = load i8*, i8** %437
%439 = call i64 @strcmp(i8* %438, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.47, i64 0, i64 0))
%440 = icmp eq i64 %439, 0
br i1 %440, label %441, label %446
441: ; preds = %435
%442 = load i8**, i8*** %5
%443 = getelementptr inbounds i8*, i8** %442, i64 0
%444 = load i8*, i8** %443
%445 = call i32 @upgrade_commands(i8* %444, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.48, i64 0, i64 0))
br label %584
446: ; preds = %435
%447 = load i8**, i8*** %5
%448 = getelementptr inbounds i8*, i8** %447, i64 1
%449 = load i8*, i8** %448
%450 = call i64 @strcmp(i8* %449, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.49, i64 0, i64 0))
%451 = icmp eq i64 %450, 0
br i1 %451, label %452, label %457
452: ; preds = %446
%453 = load i8**, i8*** %5
%454 = getelementptr inbounds i8*, i8** %453, i64 0
%455 = load i8*, i8** %454
%456 = call i32 @upgrade_commands(i8* %455, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.50, i64 0, i64 0))
br label %583
457: ; preds = %446
%458 = load i8**, i8*** %5
%459 = getelementptr inbounds i8*, i8** %458, i64 1
%460 = load i8*, i8** %459
%461 = call i64 @strcmp(i8* %460, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.51, i64 0, i64 0))
%462 = icmp eq i64 %461, 0
br i1 %462, label %463, label %468
463: ; preds = %457
%464 = load i8**, i8*** %5
%465 = getelementptr inbounds i8*, i8** %464, i64 0
%466 = load i8*, i8** %465
%467 = call i32 @upgrade_commands(i8* %466, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.52, i64 0, i64 0))
br label %582
468: ; preds = %457
%469 = load i8**, i8*** %5
%470 = getelementptr inbounds i8*, i8** %469, i64 1
%471 = load i8*, i8** %470
%472 = call i64 @strcmp(i8* %471, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.53, i64 0, i64 0))
%473 = icmp eq i64 %472, 0
br i1 %473, label %474, label %479
474: ; preds = %468
%475 = load i8**, i8*** %5
%476 = getelementptr inbounds i8*, i8** %475, i64 0
%477 = load i8*, i8** %476
%478 = call i32 @upgrade_commands(i8* %477, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.54, i64 0, i64 0))
br label %581
479: ; preds = %468
%480 = load i8**, i8*** %5
%481 = getelementptr inbounds i8*, i8** %480, i64 1
%482 = load i8*, i8** %481
%483 = call i64 @strcmp(i8* %482, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.55, i64 0, i64 0))
%484 = icmp eq i64 %483, 0
br i1 %484, label %485, label %490
485: ; preds = %479
%486 = load i8**, i8*** %5
%487 = getelementptr inbounds i8*, i8** %486, i64 0
%488 = load i8*, i8** %487
%489 = call i32 @upgrade_commands(i8* %488, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.56, i64 0, i64 0))
br label %580
490: ; preds = %479
%491 = load i8**, i8*** %5
%492 = getelementptr inbounds i8*, i8** %491, i64 1
%493 = load i8*, i8** %492
%494 = call i64 @strcmp(i8* %493, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.57, i64 0, i64 0))
%495 = icmp eq i64 %494, 0
br i1 %495, label %496, label %501
496: ; preds = %490
%497 = load i8**, i8*** %5
%498 = getelementptr inbounds i8*, i8** %497, i64 0
%499 = load i8*, i8** %498
%500 = call i32 @upgrade_commands(i8* %499, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.58, i64 0, i64 0))
br label %579
501: ; preds = %490
%502 = load i8**, i8*** %5
%503 = getelementptr inbounds i8*, i8** %502, i64 1
%504 = load i8*, i8** %503
%505 = call i64 @strcmp(i8* %504, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.59, i64 0, i64 0))
%506 = icmp eq i64 %505, 0
br i1 %506, label %507, label %533
507: ; preds = %501
%508 = load i32, i32* %4
%509 = icmp sgt i32 %508, 2
br i1 %509, label %510, label %533
510: ; preds = %507
%511 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%512 = load i8**, i8*** %5
%513 = getelementptr inbounds i8*, i8** %512, i64 0
%514 = load i8*, i8** %513
%515 = call i32 @strncpy(i8* %511, i8* %514, i32 255)
%516 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%517 = call i32 @dirname(i8* %516)
%518 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%519 = call i32 @strncpy(i8* %518, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 255)
%520 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%521 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%522 = call i32 @strncat(i8* %520, i8* %521, i32 255)
%523 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%524 = load i8**, i8*** %5
%525 = getelementptr inbounds i8*, i8** %524, i64 2
%526 = load i8*, i8** %525
%527 = call i32 (i8*, i8*, ...) @sprintf(i8* %523, i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.60, i64 0, i64 0), i8* %526)
%528 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%529 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%530 = call i32 @strncat(i8* %528, i8* %529, i32 255)
%531 = getelementptr inbounds [256 x i8], [256 x i8]* %20, i64 0, i64 0
%532 = call i32 @system(i8* %531)
br label %578
533: ; preds = %507, %501
%534 = load i8**, i8*** %5
%535 = getelementptr inbounds i8*, i8** %534, i64 1
%536 = load i8*, i8** %535
%537 = call i64 @strcmp(i8* %536, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.61, i64 0, i64 0))
%538 = icmp eq i64 %537, 0
br i1 %538, label %539, label %565
539: ; preds = %533
%540 = load i32, i32* %4
%541 = icmp sgt i32 %540, 2
br i1 %541, label %542, label %565
542: ; preds = %539
%543 = getelementptr inbounds [256 x i8], [256 x i8]* %21, i64 0, i64 0
%544 = load i8**, i8*** %5
%545 = getelementptr inbounds i8*, i8** %544, i64 0
%546 = load i8*, i8** %545
%547 = call i32 @strncpy(i8* %543, i8* %546, i32 255)
%548 = getelementptr inbounds [256 x i8], [256 x i8]* %21, i64 0, i64 0
%549 = call i32 @dirname(i8* %548)
%550 = getelementptr inbounds [256 x i8], [256 x i8]* %22, i64 0, i64 0
%551 = call i32 @strncpy(i8* %550, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 255)
%552 = getelementptr inbounds [256 x i8], [256 x i8]* %22, i64 0, i64 0
%553 = getelementptr inbounds [256 x i8], [256 x i8]* %21, i64 0, i64 0
%554 = call i32 @strncat(i8* %552, i8* %553, i32 255)
%555 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%556 = load i8**, i8*** %5
%557 = getelementptr inbounds i8*, i8** %556, i64 2
%558 = load i8*, i8** %557
%559 = call i32 (i8*, i8*, ...) @sprintf(i8* %555, i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.62, i64 0, i64 0), i8* %558)
%560 = getelementptr inbounds [256 x i8], [256 x i8]* %22, i64 0, i64 0
%561 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%562 = call i32 @strncat(i8* %560, i8* %561, i32 255)
%563 = getelementptr inbounds [256 x i8], [256 x i8]* %22, i64 0, i64 0
%564 = call i32 @system(i8* %563)
br label %577
565: ; preds = %539, %533
%566 = load i8**, i8*** %5
%567 = getelementptr inbounds i8*, i8** %566, i64 1
%568 = load i8*, i8** %567
%569 = call i64 @strcmp(i8* %568, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.63, i64 0, i64 0))
%570 = icmp eq i64 %569, 0
br i1 %570, label %571, label %576
571: ; preds = %565
%572 = load i8**, i8*** %5
%573 = getelementptr inbounds i8*, i8** %572, i64 0
%574 = load i8*, i8** %573
%575 = call i32 @upgrade_commands(i8* %574, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.63, i64 0, i64 0))
br label %576
576: ; preds = %571, %565
br label %577
577: ; preds = %576, %542
br label %578
578: ; preds = %577, %510
br label %579
579: ; preds = %578, %496
br label %580
580: ; preds = %579, %485
br label %581
581: ; preds = %580, %474
br label %582
582: ; preds = %581, %463
br label %583
583: ; preds = %582, %452
br label %584
584: ; preds = %583, %441
br label %585
585: ; preds = %584, %412
br label %586
586: ; preds = %585, %374
br label %587
587: ; preds = %586, %336
br label %588
588: ; preds = %587, %298
br label %589
589: ; preds = %588, %278
br label %590
590: ; preds = %589, %267
br label %591
591: ; preds = %590, %256
br label %592
592: ; preds = %591, %245
br label %593
593: ; preds = %592, %231
br label %594
594: ; preds = %593, %217
br label %595
595: ; preds = %594, %203
br label %596
596: ; preds = %595, %192
br label %597
597: ; preds = %596, %181
br label %598
598: ; preds = %597, %170
br label %599
599: ; preds = %598, %159
br label %600
600: ; preds = %599, %148
br label %601
601: ; preds = %600, %137
br label %602
602: ; preds = %601, %126
br label %603
603: ; preds = %602, %115
br label %604
604: ; preds = %603, %104
br label %605
605: ; preds = %604, %75
br label %606
606: ; preds = %605, %58
br label %607
607: ; preds = %606, %32
br label %635
608: ; preds = %2
%609 = call i32 @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.64, i64 0, i64 0))
%610 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.65, i64 0, i64 0))
%611 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.66, i64 0, i64 0))
%612 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.67, i64 0, i64 0))
%613 = call i32 @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.68, i64 0, i64 0))
%614 = call i32 @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.69, i64 0, i64 0))
%615 = call i32 @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.70, i64 0, i64 0))
%616 = call i32 @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.71, i64 0, i64 0))
%617 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.72, i64 0, i64 0))
%618 = call i32 @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.73, i64 0, i64 0))
%619 = call i32 @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.74, i64 0, i64 0))
%620 = call i32 @printf(i8* getelementptr inbounds ([53 x i8], [53 x i8]* @.str.75, i64 0, i64 0))
%621 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.76, i64 0, i64 0))
%622 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.77, i64 0, i64 0))
%623 = call i32 @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.78, i64 0, i64 0))
%624 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.79, i64 0, i64 0))
%625 = call i32 @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.80, i64 0, i64 0))
%626 = call i32 @printf(i8* getelementptr inbounds ([85 x i8], [85 x i8]* @.str.81, i64 0, i64 0))
%627 = call i32 @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.82, i64 0, i64 0))
%628 = call i32 @printf(i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.83, i64 0, i64 0))
%629 = call i32 @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.84, i64 0, i64 0))
%630 = call i32 @printf(i8* getelementptr inbounds ([77 x i8], [77 x i8]* @.str.85, i64 0, i64 0))
%631 = call i32 @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.86, i64 0, i64 0))
%632 = call i32 @printf(i8* getelementptr inbounds ([118 x i8], [118 x i8]* @.str.87, i64 0, i64 0))
%633 = call i32 @printf(i8* getelementptr inbounds ([85 x i8], [85 x i8]* @.str.88, i64 0, i64 0))
%634 = call i32 @printf(i8* getelementptr inbounds ([85 x i8], [85 x i8]* @.str.89, i64 0, i64 0))
br label %635
635: ; preds = %608, %607
ret i32 0
}

LLVM IR (-O2):
@.str = [14 x i8] c"backup-create\00"
@.str.1 = [11 x i8] c"/bin/bash \00"
@.str.2 = [35 x i8] c"/upgrade_commands.sh backup-create\00"
@.str.3 = [14 x i8] c"backup-delete\00"
@.str.4 = [44 x i8] c"rm -rf /var/Mycodo-backups/Mycodo-backup-%s\00"
@.str.5 = [15 x i8] c"backup-restore\00"
@.str.6 = [39 x i8] c"/upgrade_commands.sh backup-restore %s\00"
@.str.7 = [8 x i8] c"restart\00"
@.str.8 = [28 x i8] c"sleep 10 && shutdown now -r\00"
@.str.9 = [9 x i8] c"shutdown\00"
@.str.10 = [28 x i8] c"sleep 10 && shutdown now -h\00"
@.str.11 = [15 x i8] c"daemon_restart\00"
@.str.12 = [23 x i8] c"service mycodo restart\00"
@.str.13 = [13 x i8] c"daemon_start\00"
@.str.14 = [21 x i8] c"service mycodo start\00"
@.str.15 = [12 x i8] c"daemon_stop\00"
@.str.16 = [20 x i8] c"service mycodo stop\00"
@.str.17 = [16 x i8] c"frontend_reload\00"
@.str.18 = [27 x i8] c"service mycodoflask reload\00"
@.str.19 = [17 x i8] c"frontend_restart\00"
@.str.20 = [28 x i8] c"service mycodoflask restart\00"
@.str.21 = [17 x i8] c"influxdb_restart\00"
@.str.22 = [25 x i8] c"service influxdb restart\00"
@.str.23 = [15 x i8] c"influxdb_start\00"
@.str.24 = [23 x i8] c"service influxdb start\00"
@.str.25 = [14 x i8] c"influxdb_stop\00"
@.str.26 = [22 x i8] c"service influxdb stop\00"
@.str.27 = [27 x i8] c"influxdb_restore_mycodo_db\00"
@.str.28 = [64 x i8] c"influxd restore -portable -db mycodo_db -newdb mycodo_db_bak %s\00"
@.str.29 = [32 x i8] c"influxdb_delete_restore_tmp_dir\00"
@.str.30 = [31 x i8] c"rm -rf /var/mycodo-root/upload\00"
@.str.31 = [17 x i8] c"upgrade_database\00"
@.str.32 = [15 x i8] c"update-alembic\00"
@.str.33 = [11 x i8] c"initialize\00"
@.str.34 = [20 x i8] c"update_dependencies\00"
@.str.35 = [20 x i8] c"update-dependencies\00"
@.str.36 = [19 x i8] c"update_permissions\00"
@.str.37 = [19 x i8] c"update-permissions\00"
@.str.38 = [19 x i8] c"install_dependency\00"
@.str.39 = [9 x i8] c"pip-pypi\00"
@.str.40 = [29 x i8] c"/dependencies.sh pip-pypi %s\00"
@.str.41 = [8 x i8] c"pip-git\00"
@.str.42 = [28 x i8] c"/dependencies.sh pip-git %s\00"
@.str.43 = [4 x i8] c"apt\00"
@.str.44 = [24 x i8] c"/dependencies.sh apt %s\00"
@.str.45 = [9 x i8] c"internal\00"
@.str.46 = [29 x i8] c"/dependencies.sh internal %s\00"
@.str.47 = [16 x i8] c"install_pigpiod\00"
@.str.48 = [16 x i8] c"install-pigpiod\00"
@.str.49 = [16 x i8] c"disable_pigpiod\00"
@.str.50 = [16 x i8] c"disable-pigpiod\00"
@.str.51 = [19 x i8] c"enable_pigpiod_low\00"
@.str.52 = [19 x i8] c"enable-pigpiod-low\00"
@.str.53 = [20 x i8] c"enable_pigpiod_high\00"
@.str.54 = [20 x i8] c"enable-pigpiod-high\00"
@.str.55 = [24 x i8] c"enable_pigpiod_disabled\00"
@.str.56 = [24 x i8] c"enable-pigpiod-disabled\00"
@.str.57 = [18 x i8] c"uninstall_pigpiod\00"
@.str.58 = [18 x i8] c"uninstall-pigpiod\00"
@.str.59 = [21 x i8] c"upgrade-release-wipe\00"
@.str.60 = [45 x i8] c"/upgrade_commands.sh upgrade-release-wipe %s\00"
@.str.61 = [22 x i8] c"upgrade-release-major\00"
@.str.62 = [46 x i8] c"/upgrade_commands.sh upgrade-release-major %s\00"
@.str.63 = [15 x i8] c"upgrade-master\00"
@str = [60 x i8] c"Mycodo Wrapper: A wrapper to allow the mycodo web interface\00"
@str.90 = [47 x i8] c" to perform superuser actions.\0A\00"
@str.91 = [33 x i8] c"Usage: mycodo_wrapper [command]\0A\00"
@str.92 = [10 x i8] c"Commands:\00"
@str.93 = [52 x i8] c" backup-create: Create Mycodo backup\00"
@str.94 = [64 x i8] c" backup-delete [DIRECTORY]: Delete Mycodo backup [DIRECTORY]\00"
@str.95 = [70 x i8] c" backup-restore [DIRECTORY]: Restore Mycodo from backup [DIRECTORY]\00"
@str.96 = [72 x i8] c" daemon_restart: Restart the mycodo daemon in normal mode\00"
@str.97 = [71 x i8] c" daemon_restart_debug: Restart the mycodo daemon in debug mode\00"
@str.98 = [55 x i8] c" daemon_start: Start the mycodo daemon\00"
@str.99 = [54 x i8] c" daemon_stop: Stop the mycodo daemon\00"
@str.100 = [52 x i8] c" database_upgrade: Upgrade the database\00"
@str.101 = [58 x i8] c" frontend_reload: Reload the mycodo frontend\00"
@str.102 = [59 x i8] c" frontend_restart: Restart the mycodo frontend\00"
@str.103 = [46 x i8] c" influxdb_start: Start influxdb\00"
@str.104 = [45 x i8] c" influxdb_stop: Stop influxdb\00"
@str.105 = [48 x i8] c" influxdb_restart: Restart influxdb\00"
@str.106 = [84 x i8] c" influxdb_restore_mycodo_db Restore influxdb database mycodo_db to mycodo_db_bak\00"
@str.107 = [70 x i8] c" initialize: Run the Mycodo initialization sequence\00"
@str.108 = [92 x i8] c" update_dependencies: Install unmet dependencies and update installed dependencies\00"
@str.109 = [70 x i8] c" update_permissions: Set the Mycodo file/folder permissions\00"
@str.110 = [76 x i8] c" restart: Restart the computer after a 10 second pause\00"
@str.111 = [77 x i8] c" shutdown: Shutdown the computer after a 10 second pause\00"
@str.112 = [117 x i8] c" upgrade-release-wipe: Upgrade Mycodo to the latest major version on github and wipe database and virtualenv\00"
@str.113 = [84 x i8] c" upgrade-release-major: Upgrade Mycodo to the latest major version on github\00"
@str.114 = [84 x i8] c" upgrade-master: Upgrade Mycodo to the latest master branch on github\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca [1024 x i8]
%4 = alloca [256 x i8]
%5 = alloca [512 x i8]
%6 = alloca [256 x i8]
%7 = alloca [512 x i8]
%8 = alloca [256 x i8]
%9 = alloca [1024 x i8]
%10 = alloca [256 x i8]
%11 = alloca [1024 x i8]
%12 = alloca [256 x i8]
%13 = alloca [1024 x i8]
%14 = alloca [256 x i8]
%15 = alloca [1024 x i8]
%16 = alloca [256 x i8]
%17 = alloca [256 x i8]
%18 = alloca [256 x i8]
%19 = alloca [256 x i8]
%20 = tail call i32 @setuid(i32 0)
%21 = getelementptr inbounds [1024 x i8], [1024 x i8]* %3, i64 0, i64 0
%22 = icmp sgt i32 %0, 1
br i1 %22, label %23, label %355
23: ; preds = %2
%24 = getelementptr inbounds i8*, i8** %1, i64 1
%25 = load i8*, i8** %24
%26 = tail call i64 @strcmp(i8* %25, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0))
%27 = icmp eq i64 %26, 0
br i1 %27, label %28, label %38
28: ; preds = %23
%29 = getelementptr inbounds [256 x i8], [256 x i8]* %4, i64 0, i64 0
%30 = load i8*, i8** %1
%31 = call i32 @strncpy(i8* %29, i8* %30, i32 255)
%32 = call i32 @dirname(i8* %29)
%33 = getelementptr inbounds [512 x i8], [512 x i8]* %5, i64 0, i64 0
%34 = call i32 @strncpy(i8* %33, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 511)
%35 = call i32 @strncat(i8* %33, i8* %29, i32 511)
%36 = call i32 @strncat(i8* %33, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.2, i64 0, i64 0), i32 511)
%37 = call i32 @system(i8* %33)
br label %382
38: ; preds = %23
%39 = load i8*, i8** %24
%40 = tail call i64 @strcmp(i8* %39, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.3, i64 0, i64 0))
%41 = icmp eq i64 %40, 0
%42 = icmp ugt i32 %0, 2
%43 = and i1 %42, %41
br i1 %43, label %44, label %49
44: ; preds = %38
%45 = getelementptr inbounds i8*, i8** %1, i64 2
%46 = load i8*, i8** %45
%47 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @.str.4, i64 0, i64 0), i8* %46)
%48 = call i32 @system(i8* %21)
br label %382
49: ; preds = %38
%50 = load i8*, i8** %24
%51 = tail call i64 @strcmp(i8* %50, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.5, i64 0, i64 0))
%52 = icmp eq i64 %51, 0
%53 = and i1 %42, %52
br i1 %53, label %54, label %67
54: ; preds = %49
%55 = getelementptr inbounds [256 x i8], [256 x i8]* %6, i64 0, i64 0
%56 = load i8*, i8** %1
%57 = call i32 @strncpy(i8* %55, i8* %56, i32 255)
%58 = call i32 @dirname(i8* %55)
%59 = getelementptr inbounds [512 x i8], [512 x i8]* %7, i64 0, i64 0
%60 = call i32 @strncpy(i8* %59, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 511)
%61 = call i32 @strncat(i8* %59, i8* %55, i32 511)
%62 = getelementptr inbounds i8*, i8** %1, i64 2
%63 = load i8*, i8** %62
%64 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @.str.6, i64 0, i64 0), i8* %63)
%65 = call i32 @strncat(i8* %59, i8* %21, i32 511)
%66 = call i32 @system(i8* %59)
br label %382
67: ; preds = %49
%68 = load i8*, i8** %24
%69 = tail call i64 @strcmp(i8* %68, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%70 = icmp eq i64 %69, 0
br i1 %70, label %71, label %73
71: ; preds = %67
%72 = call i32 @system(i8* %21)
br label %382
73: ; preds = %67
%74 = load i8*, i8** %24
%75 = tail call i64 @strcmp(i8* %74, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.9, i64 0, i64 0))
%76 = icmp eq i64 %75, 0
br i1 %76, label %77, label %79
77: ; preds = %73
%78 = call i32 @system(i8* %21)
br label %382
79: ; preds = %73
%80 = load i8*, i8** %24
%81 = tail call i64 @strcmp(i8* %80, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0))
%82 = icmp eq i64 %81, 0
br i1 %82, label %83, label %85
83: ; preds = %79
%84 = call i32 @system(i8* %21)
br label %382
85: ; preds = %79
%86 = load i8*, i8** %24
%87 = tail call i64 @strcmp(i8* %86, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i64 0, i64 0))
%88 = icmp eq i64 %87, 0
br i1 %88, label %89, label %91
89: ; preds = %85
%90 = call i32 @system(i8* %21)
br label %382
91: ; preds = %85
%92 = load i8*, i8** %24
%93 = tail call i64 @strcmp(i8* %92, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.15, i64 0, i64 0))
%94 = icmp eq i64 %93, 0
br i1 %94, label %95, label %97
95: ; preds = %91
%96 = call i32 @system(i8* %21)
br label %382
97: ; preds = %91
%98 = load i8*, i8** %24
%99 = tail call i64 @strcmp(i8* %98, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.17, i64 0, i64 0))
%100 = icmp eq i64 %99, 0
br i1 %100, label %101, label %103
101: ; preds = %97
%102 = call i32 @system(i8* %21)
br label %382
103: ; preds = %97
%104 = load i8*, i8** %24
%105 = tail call i64 @strcmp(i8* %104, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.19, i64 0, i64 0))
%106 = icmp eq i64 %105, 0
br i1 %106, label %107, label %109
107: ; preds = %103
%108 = call i32 @system(i8* %21)
br label %382
109: ; preds = %103
%110 = load i8*, i8** %24
%111 = tail call i64 @strcmp(i8* %110, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.21, i64 0, i64 0))
%112 = icmp eq i64 %111, 0
br i1 %112, label %113, label %115
113: ; preds = %109
%114 = call i32 @system(i8* %21)
br label %382
115: ; preds = %109
%116 = load i8*, i8** %24
%117 = tail call i64 @strcmp(i8* %116, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.23, i64 0, i64 0))
%118 = icmp eq i64 %117, 0
br i1 %118, label %119, label %121
119: ; preds = %115
%120 = call i32 @system(i8* %21)
br label %382
121: ; preds = %115
%122 = load i8*, i8** %24
%123 = tail call i64 @strcmp(i8* %122, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.25, i64 0, i64 0))
%124 = icmp eq i64 %123, 0
br i1 %124, label %125, label %127
125: ; preds = %121
%126 = call i32 @system(i8* %21)
br label %382
127: ; preds = %121
%128 = load i8*, i8** %24
%129 = tail call i64 @strcmp(i8* %128, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.27, i64 0, i64 0))
%130 = icmp eq i64 %129, 0
%131 = and i1 %42, %130
br i1 %131, label %132, label %137
132: ; preds = %127
%133 = getelementptr inbounds i8*, i8** %1, i64 2
%134 = load i8*, i8** %133
%135 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @.str.28, i64 0, i64 0), i8* %134)
%136 = call i32 @system(i8* %21)
br label %382
137: ; preds = %127
%138 = load i8*, i8** %24
%139 = tail call i64 @strcmp(i8* %138, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.29, i64 0, i64 0))
%140 = icmp eq i64 %139, 0
br i1 %140, label %141, label %146
141: ; preds = %137
%142 = getelementptr inbounds i8*, i8** %1, i64 2
%143 = load i8*, i8** %142
%144 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @.str.30, i64 0, i64 0), i8* %143)
%145 = call i32 @system(i8* %21)
br label %382
146: ; preds = %137
%147 = load i8*, i8** %24
%148 = tail call i64 @strcmp(i8* %147, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.31, i64 0, i64 0))
%149 = icmp eq i64 %148, 0
br i1 %149, label %150, label %153
150: ; preds = %146
%151 = load i8*, i8** %1
%152 = tail call i32 @upgrade_commands(i8* %151, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0))
br label %382
153: ; preds = %146
%154 = load i8*, i8** %24
%155 = tail call i64 @strcmp(i8* %154, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
%156 = icmp eq i64 %155, 0
br i1 %156, label %157, label %160
157: ; preds = %153
%158 = load i8*, i8** %1
%159 = tail call i32 @upgrade_commands(i8* %158, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.33, i64 0, i64 0))
br label %382
160: ; preds = %153
%161 = load i8*, i8** %24
%162 = tail call i64 @strcmp(i8* %161, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.34, i64 0, i64 0))
%163 = icmp eq i64 %162, 0
br i1 %163, label %164, label %167
164: ; preds = %160
%165 = load i8*, i8** %1
%166 = tail call i32 @upgrade_commands(i8* %165, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.35, i64 0, i64 0))
br label %382
167: ; preds = %160
%168 = load i8*, i8** %24
%169 = tail call i64 @strcmp(i8* %168, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.36, i64 0, i64 0))
%170 = icmp eq i64 %169, 0
br i1 %170, label %171, label %174
171: ; preds = %167
%172 = load i8*, i8** %1
%173 = tail call i32 @upgrade_commands(i8* %172, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.37, i64 0, i64 0))
br label %382
174: ; preds = %167
%175 = load i8*, i8** %24
%176 = tail call i64 @strcmp(i8* %175, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%177 = icmp eq i64 %176, 0
br i1 %177, label %178, label %198
178: ; preds = %174
%179 = getelementptr inbounds i8*, i8** %1, i64 2
%180 = load i8*, i8** %179
%181 = tail call i64 @strcmp(i8* %180, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.39, i64 0, i64 0))
%182 = icmp eq i64 %181, 0
%183 = icmp eq i32 %0, 4
%184 = and i1 %183, %182
br i1 %184, label %185, label %198
185: ; preds = %178
%186 = getelementptr inbounds [256 x i8], [256 x i8]* %8, i64 0, i64 0
%187 = load i8*, i8** %1
%188 = call i32 @strncpy(i8* %186, i8* %187, i32 255)
%189 = call i32 @dirname(i8* %186)
%190 = getelementptr inbounds [1024 x i8], [1024 x i8]* %9, i64 0, i64 0
%191 = call i32 @strncpy(i8* %190, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%192 = call i32 @strncat(i8* %190, i8* %186, i32 1023)
%193 = getelementptr inbounds i8*, i8** %1, i64 3
%194 = load i8*, i8** %193
%195 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.40, i64 0, i64 0), i8* %194)
%196 = call i32 @strncat(i8* %190, i8* %21, i32 1023)
%197 = call i32 @system(i8* %190)
br label %382
198: ; preds = %178, %174
%199 = load i8*, i8** %24
%200 = tail call i64 @strcmp(i8* %199, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%201 = icmp eq i64 %200, 0
br i1 %201, label %202, label %222
202: ; preds = %198
%203 = getelementptr inbounds i8*, i8** %1, i64 2
%204 = load i8*, i8** %203
%205 = tail call i64 @strcmp(i8* %204, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.41, i64 0, i64 0))
%206 = icmp eq i64 %205, 0
%207 = icmp eq i32 %0, 4
%208 = and i1 %207, %206
br i1 %208, label %209, label %222
209: ; preds = %202
%210 = getelementptr inbounds [256 x i8], [256 x i8]* %10, i64 0, i64 0
%211 = load i8*, i8** %1
%212 = call i32 @strncpy(i8* %210, i8* %211, i32 255)
%213 = call i32 @dirname(i8* %210)
%214 = getelementptr inbounds [1024 x i8], [1024 x i8]* %11, i64 0, i64 0
%215 = call i32 @strncpy(i8* %214, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%216 = call i32 @strncat(i8* %214, i8* %210, i32 1023)
%217 = getelementptr inbounds i8*, i8** %1, i64 3
%218 = load i8*, i8** %217
%219 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.42, i64 0, i64 0), i8* %218)
%220 = call i32 @strncat(i8* %214, i8* %21, i32 1023)
%221 = call i32 @system(i8* %214)
br label %382
222: ; preds = %202, %198
%223 = load i8*, i8** %24
%224 = tail call i64 @strcmp(i8* %223, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%225 = icmp eq i64 %224, 0
br i1 %225, label %226, label %246
226: ; preds = %222
%227 = getelementptr inbounds i8*, i8** %1, i64 2
%228 = load i8*, i8** %227
%229 = tail call i64 @strcmp(i8* %228, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.43, i64 0, i64 0))
%230 = icmp eq i64 %229, 0
%231 = icmp eq i32 %0, 4
%232 = and i1 %231, %230
br i1 %232, label %233, label %246
233: ; preds = %226
%234 = getelementptr inbounds [256 x i8], [256 x i8]* %12, i64 0, i64 0
%235 = load i8*, i8** %1
%236 = call i32 @strncpy(i8* %234, i8* %235, i32 255)
%237 = call i32 @dirname(i8* %234)
%238 = getelementptr inbounds [1024 x i8], [1024 x i8]* %13, i64 0, i64 0
%239 = call i32 @strncpy(i8* %238, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%240 = call i32 @strncat(i8* %238, i8* %234, i32 1023)
%241 = getelementptr inbounds i8*, i8** %1, i64 3
%242 = load i8*, i8** %241
%243 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.44, i64 0, i64 0), i8* %242)
%244 = call i32 @strncat(i8* %238, i8* %21, i32 1023)
%245 = call i32 @system(i8* %238)
br label %382
246: ; preds = %226, %222
%247 = load i8*, i8** %24
%248 = tail call i64 @strcmp(i8* %247, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.38, i64 0, i64 0))
%249 = icmp eq i64 %248, 0
br i1 %249, label %250, label %270
250: ; preds = %246
%251 = getelementptr inbounds i8*, i8** %1, i64 2
%252 = load i8*, i8** %251
%253 = tail call i64 @strcmp(i8* %252, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.45, i64 0, i64 0))
%254 = icmp eq i64 %253, 0
%255 = icmp eq i32 %0, 4
%256 = and i1 %255, %254
br i1 %256, label %257, label %270
257: ; preds = %250
%258 = getelementptr inbounds [256 x i8], [256 x i8]* %14, i64 0, i64 0
%259 = load i8*, i8** %1
%260 = call i32 @strncpy(i8* %258, i8* %259, i32 255)
%261 = call i32 @dirname(i8* %258)
%262 = getelementptr inbounds [1024 x i8], [1024 x i8]* %15, i64 0, i64 0
%263 = call i32 @strncpy(i8* %262, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 1023)
%264 = call i32 @strncat(i8* %262, i8* %258, i32 1023)
%265 = getelementptr inbounds i8*, i8** %1, i64 3
%266 = load i8*, i8** %265
%267 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @.str.46, i64 0, i64 0), i8* %266)
%268 = call i32 @strncat(i8* %262, i8* %21, i32 1023)
%269 = call i32 @system(i8* %262)
br label %382
270: ; preds = %250, %246
%271 = load i8*, i8** %24
%272 = tail call i64 @strcmp(i8* %271, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.47, i64 0, i64 0))
%273 = icmp eq i64 %272, 0
br i1 %273, label %274, label %277
274: ; preds = %270
%275 = load i8*, i8** %1
%276 = tail call i32 @upgrade_commands(i8* %275, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.48, i64 0, i64 0))
br label %382
277: ; preds = %270
%278 = load i8*, i8** %24
%279 = tail call i64 @strcmp(i8* %278, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.49, i64 0, i64 0))
%280 = icmp eq i64 %279, 0
br i1 %280, label %281, label %284
281: ; preds = %277
%282 = load i8*, i8** %1
%283 = tail call i32 @upgrade_commands(i8* %282, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.50, i64 0, i64 0))
br label %382
284: ; preds = %277
%285 = load i8*, i8** %24
%286 = tail call i64 @strcmp(i8* %285, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.51, i64 0, i64 0))
%287 = icmp eq i64 %286, 0
br i1 %287, label %288, label %291
288: ; preds = %284
%289 = load i8*, i8** %1
%290 = tail call i32 @upgrade_commands(i8* %289, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.52, i64 0, i64 0))
br label %382
291: ; preds = %284
%292 = load i8*, i8** %24
%293 = tail call i64 @strcmp(i8* %292, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.53, i64 0, i64 0))
%294 = icmp eq i64 %293, 0
br i1 %294, label %295, label %298
295: ; preds = %291
%296 = load i8*, i8** %1
%297 = tail call i32 @upgrade_commands(i8* %296, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.54, i64 0, i64 0))
br label %382
298: ; preds = %291
%299 = load i8*, i8** %24
%300 = tail call i64 @strcmp(i8* %299, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.55, i64 0, i64 0))
%301 = icmp eq i64 %300, 0
br i1 %301, label %302, label %305
302: ; preds = %298
%303 = load i8*, i8** %1
%304 = tail call i32 @upgrade_commands(i8* %303, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.56, i64 0, i64 0))
br label %382
305: ; preds = %298
%306 = load i8*, i8** %24
%307 = tail call i64 @strcmp(i8* %306, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.57, i64 0, i64 0))
%308 = icmp eq i64 %307, 0
br i1 %308, label %309, label %312
309: ; preds = %305
%310 = load i8*, i8** %1
%311 = tail call i32 @upgrade_commands(i8* %310, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.58, i64 0, i64 0))
br label %382
312: ; preds = %305
%313 = load i8*, i8** %24
%314 = tail call i64 @strcmp(i8* %313, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.59, i64 0, i64 0))
%315 = icmp eq i64 %314, 0
%316 = and i1 %42, %315
br i1 %316, label %317, label %330
317: ; preds = %312
%318 = getelementptr inbounds [256 x i8], [256 x i8]* %16, i64 0, i64 0
%319 = load i8*, i8** %1
%320 = call i32 @strncpy(i8* %318, i8* %319, i32 255)
%321 = call i32 @dirname(i8* %318)
%322 = getelementptr inbounds [256 x i8], [256 x i8]* %17, i64 0, i64 0
%323 = call i32 @strncpy(i8* %322, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 255)
%324 = call i32 @strncat(i8* %322, i8* %318, i32 255)
%325 = getelementptr inbounds i8*, i8** %1, i64 2
%326 = load i8*, i8** %325
%327 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @.str.60, i64 0, i64 0), i8* %326)
%328 = call i32 @strncat(i8* %322, i8* %21, i32 255)
%329 = call i32 @system(i8* %322)
br label %382
330: ; preds = %312
%331 = load i8*, i8** %24
%332 = tail call i64 @strcmp(i8* %331, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.61, i64 0, i64 0))
%333 = icmp eq i64 %332, 0
%334 = and i1 %42, %333
br i1 %334, label %335, label %348
335: ; preds = %330
%336 = getelementptr inbounds [256 x i8], [256 x i8]* %18, i64 0, i64 0
%337 = load i8*, i8** %1
%338 = call i32 @strncpy(i8* %336, i8* %337, i32 255)
%339 = call i32 @dirname(i8* %336)
%340 = getelementptr inbounds [256 x i8], [256 x i8]* %19, i64 0, i64 0
%341 = call i32 @strncpy(i8* %340, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 255)
%342 = call i32 @strncat(i8* %340, i8* %336, i32 255)
%343 = getelementptr inbounds i8*, i8** %1, i64 2
%344 = load i8*, i8** %343
%345 = call i32 (i8*, i8*, ...) @sprintf(i8* %21, i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @.str.62, i64 0, i64 0), i8* %344)
%346 = call i32 @strncat(i8* %340, i8* %21, i32 255)
%347 = call i32 @system(i8* %340)
br label %382
348: ; preds = %330
%349 = load i8*, i8** %24
%350 = tail call i64 @strcmp(i8* %349, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.63, i64 0, i64 0))
%351 = icmp eq i64 %350, 0
br i1 %351, label %352, label %382
352: ; preds = %348
%353 = load i8*, i8** %1
%354 = tail call i32 @upgrade_commands(i8* %353, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.63, i64 0, i64 0))
br label %382
355: ; preds = %2
%356 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([60 x i8], [60 x i8]* @str, i64 0, i64 0))
%357 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.90, i64 0, i64 0))
%358 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.91, i64 0, i64 0))
%359 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @str.92, i64 0, i64 0))
%360 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str.93, i64 0, i64 0))
%361 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.94, i64 0, i64 0))
%362 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.95, i64 0, i64 0))
%363 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.96, i64 0, i64 0))
%364 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.97, i64 0, i64 0))
%365 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str.98, i64 0, i64 0))
%366 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str.99, i64 0, i64 0))
%367 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([52 x i8], [52 x i8]* @str.100, i64 0, i64 0))
%368 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.101, i64 0, i64 0))
%369 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.102, i64 0, i64 0))
%370 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.103, i64 0, i64 0))
%371 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([45 x i8], [45 x i8]* @str.104, i64 0, i64 0))
%372 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @str.105, i64 0, i64 0))
%373 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([84 x i8], [84 x i8]* @str.106, i64 0, i64 0))
%374 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.107, i64 0, i64 0))
%375 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([92 x i8], [92 x i8]* @str.108, i64 0, i64 0))
%376 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([70 x i8], [70 x i8]* @str.109, i64 0, i64 0))
%377 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([76 x i8], [76 x i8]* @str.110, i64 0, i64 0))
%378 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.111, i64 0, i64 0))
%379 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([117 x i8], [117 x i8]* @str.112, i64 0, i64 0))
%380 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([84 x i8], [84 x i8]* @str.113, i64 0, i64 0))
%381 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([84 x i8], [84 x i8]* @str.114, i64 0, i64 0))
br label %382
382: ; preds = %28, %54, %77, %89, %101, %113, %125, %141, %157, %171, %209, %257, %281, %295, %309, %335, %352, %348, %317, %302, %288, %274, %233, %185, %164, %150, %132, %119, %107, %95, %83, %71, %44, %355
ret i32 0
}