int ejecutarComando(char *line) {
  int maquina_estado = 1;
  const int maquina_estado_inicial = 1;
  const int comando_constante = 2;
  const int parametro_constante = 3;
  const int valor_cosntante = 4;
  const int comando_ejecutado = 0;
  const int error_const = -1;
  char comando[50];
  char parametro[50];
  char valor[1000];
  char aux = '\0';
  memset(comando, '\0', sizeof(comando));
  memset(parametro, '\0', sizeof(parametro));
  memset(valor, '\0', sizeof(valor));
  int comando_detectado = 0;
  const int comando_detectado_nulo = 0;
  const int mkdisk_constante = 1;
  const int rmdisk_constante = 2;
  const int fdisk_constante = 3;
  const int mount_constante = 4;
  const int umount_constante = 5;
  int type_parametro = 0;
  const int type_numero = 1;
  const int type_char = 2;
  const int type_string = 3;
  int parametro_detectado = 0;
  const int size_constante = 1;
  const int unit_constante = 2;
  const int path_constante = 3;
  const int name_constante = 4;
  int marcador = 0;
  int char_len = 0;
  int size_flag = 0;
  int unit_flag = 0;
  int path_flag = 0;
  int name_flag = 0;
  char size[500];
  char unit = 'm';
  char path[1000];
  char name[500];
  memset(size, '\0', sizeof(size));
  memset(path, '\0', sizeof(path));
  memset(name, '\0', sizeof(name));
  maquina_estado = maquina_estado_inicial;
  comando_detectado = comando_detectado_nulo;
  for (int i = 0; i <= strlen(line); i++) {
    if (((line[i] != ' ') && (line[i] != '\t') && (line[i] != '\n') &&
         (i != strlen(line))) &&
        ((marcador < 2))) {
      if (maquina_estado == maquina_estado_inicial) {
        maquina_estado = comando_constante;
        i--;
      } else if (maquina_estado == comando_constante) {
        aux = line[i];
        strncat(comando, &aux, 1);
      } else if (maquina_estado == parametro_constante) {
        if (line[i] == ':') {
          marcador++;
        }
        aux = line[i];
        strncat(parametro, &aux, 1);
      } else if (maquina_estado == valor_cosntante) {
        if (type_parametro == type_string) {
          int marca_string = 0;
          for (int z = i; z < strlen(line); z++) {
            if (line[z] == '"') {
              marca_string++;
            }
            if (marca_string < 2) {
              aux = line[z];
              strncat(valor, &aux, 1);
            } else if (marca_string == 2) {
              aux = line[z];
              strncat(valor, &aux, 1);
              break;
            }
            if ((z == (strlen(line) - 1)) && (marca_string < 2)) {
              break;
            }
            i++;
          }
        } else if (type_parametro == type_numero) {
          aux = line[i];
          strncat(valor, &aux, 1);
        } else if (type_parametro == type_char) {
          if (strlen(valor) <= char_len) {
            aux = line[i];
            strncat(valor, &aux, 1);
          } else {
            marcador == 3;
          }
        }
      }
    } else {
      if ((maquina_estado == comando_constante) && (strlen(comando) > 0)) {
        if (strcasecmp(comando, "mkdisk") == 0) {
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
          comando_detectado = mkdisk_constante;
        } else if (strcasecmp(comando, "rmdisk") == 0) {
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
          comando_detectado = rmdisk_constante;
        } else if (strcasecmp(comando, "fdisk") == 0) {
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
          comando_detectado = fdisk_constante;
        } else if (strcasecmp(comando, "mount") == 0) {
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
          comando_detectado = mount_constante;
        } else if (strcasecmp(comando, "umount") == 0) {
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
          comando_detectado = umount_constante;
        } else {
          comando_detectado = comando_detectado_nulo;
          printf("No se reconoce '%s' como un instrucción valida.\n", comando);
          return error_const;
        }
      } else if ((maquina_estado == parametro_constante) &&
                 (strlen(parametro) > 0)) {
        if (comando_detectado == mkdisk_constante) {
          if (strcasecmp(parametro, "-size::") == 0) {
            maquina_estado = valor_cosntante;
            marcador = 0;
            parametro_detectado = size_constante;
            type_parametro = type_numero;
            memset(valor, '\0', sizeof(valor));
            i--;
          } else if ((strcasecmp(parametro, "+unit::") == 0)) {
            maquina_estado = valor_cosntante;
            marcador = 0;
            parametro_detectado = unit_constante;
            type_parametro = type_char;
            char_len = 1;
            memset(valor, '\0', sizeof(valor));
            i--;
          } else if ((strcasecmp(parametro, "-path::") == 0)) {
            maquina_estado = valor_cosntante;
            marcador = 0;
            parametro_detectado = path_constante;
            type_parametro = type_string;
            memset(valor, '\0', sizeof(valor));
            i--;
          } else if ((strcasecmp(parametro, "-name::") == 0)) {
            maquina_estado = valor_cosntante;
            marcador = 0;
            parametro_detectado = name_constante;
            type_parametro = type_string;
            memset(valor, '\0', sizeof(valor));
            i--;
          } else {
            printf("PARAMETRO ERRONEO\n");
            return error_const;
          }
        }
      } else if ((maquina_estado == valor_cosntante) && (strlen(valor) > 0)) {
        if (type_parametro == type_numero) {
          for (int j = 0; j < strlen(valor); j++) {
            if ((valor[j] < '0') || (valor[j] > '9')) {
              printf("VALOR NUMERICO ERRONEO %s\n", valor);
              return error_const;
            }
          }
          if (parametro_detectado == size_constante) {
            memset(size, '\0', sizeof(size));
            strcpy(size, valor);
            size_flag = 1;
          }
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
        } else if (type_parametro == type_string) {
          if ((valor[0] != '"') || (valor[strlen(valor) - 1] != '"')) {
            printf("VALOR DE CADENA ERRONEO %s\n", valor);
            return error_const;
          } else {
            char aux[1000];
            memset(aux, '\0', sizeof(aux));
            for (int k = 0; k < strlen(valor) - 2; k++) {
              aux[k] = valor[k + 1];
            }
            if (parametro_detectado == name_constante) {
              memset(name, '\0', sizeof(name));
              strcpy(name, aux);
              name_flag = 1;
            } else if (parametro_detectado == path_constante) {
              memset(path, '\0', sizeof(path));
              strcpy(path, aux);
              path_flag = 1;
            }
          }
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
        } else if (type_parametro == type_char) {
          for (int j = 0; j < strlen(valor); j++) {
            if (!(((valor[j] >= 'A') && (valor[j] <= 'Z')) ||
                  ((valor[j] >= 'a') && (valor[j] <= 'z')))) {
              printf("VALOR CHAR ERRONEO %s \n", valor);
              return error_const;
            }
          }
          if (parametro_detectado == unit_constante) {
            unit = valor[0];
            unit_flag = 1;
          }
          maquina_estado = parametro_constante;
          marcador = 0;
          memset(parametro, '\0', sizeof(parametro));
        }
      }
    }
  }
  if (comando_detectado == mkdisk_constante) {
    if (size_flag == 1) {
      if (path_flag == 1) {
        if (name_flag == 1) {
          mkdisk(size, unit, path, name);
          maquina_estado = comando_ejecutado;
          return maquina_estado;
        } else {
          printf("Falta parametro '-name::'.\n");
          return error_const;
        }
      } else {
        printf("Falta parametro '-path::'.\n");
        return error_const;
      }
    } else {
      printf("Falta parametro '-size::'\n.");
      return error_const;
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<ejecutarComando>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1110,%rsp
mov    %rdi,-0x10(%rbp)
movl   $0x1,-0x14(%rbp)
movl   $0x1,-0x18(%rbp)
movl   $0x2,-0x1c(%rbp)
movl   $0x3,-0x20(%rbp)
movl   $0x4,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0xffffffff,-0x2c(%rbp)
movb   $0x0,-0x491(%rbp)
lea    -0x60(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
lea    -0x490(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
movl   $0x0,-0x498(%rbp)
movl   $0x0,-0x49c(%rbp)
movl   $0x1,-0x4a0(%rbp)
movl   $0x2,-0x4a4(%rbp)
movl   $0x3,-0x4a8(%rbp)
movl   $0x4,-0x4ac(%rbp)
movl   $0x5,-0x4b0(%rbp)
movl   $0x0,-0x4b4(%rbp)
movl   $0x1,-0x4b8(%rbp)
movl   $0x2,-0x4bc(%rbp)
movl   $0x3,-0x4c0(%rbp)
movl   $0x0,-0x4c4(%rbp)
movl   $0x1,-0x4c8(%rbp)
movl   $0x2,-0x4cc(%rbp)
movl   $0x3,-0x4d0(%rbp)
movl   $0x4,-0x4d4(%rbp)
movl   $0x0,-0x4d8(%rbp)
movl   $0x0,-0x4dc(%rbp)
movl   $0x0,-0x4e0(%rbp)
movl   $0x0,-0x4e4(%rbp)
movl   $0x0,-0x4e8(%rbp)
movl   $0x0,-0x4ec(%rbp)
movb   $0x6d,-0x6e1(%rbp)
lea    -0x6e0(%rbp),%rdi
xor    %esi,%esi
mov    $0x1f4,%edx
call   1070 <memset@plt>
lea    -0xad0(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
lea    -0xcd0(%rbp),%rdi
xor    %esi,%esi
mov    $0x1f4,%edx
call   1070 <memset@plt>
movl   $0x1,-0x14(%rbp)
movl   $0x0,-0x498(%rbp)
movl   $0x0,-0xcd4(%rbp)
movslq -0xcd4(%rbp),%rax
mov    %rax,-0x10e0(%rbp)
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x10e0(%rbp),%rax
cmp    %rcx,%rax
ja     1eba <ejecutarComando+0xd4a>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     16b3 <ejecutarComando+0x543>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x9,%eax
je     16b3 <ejecutarComando+0x543>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0xa,%eax
je     16b3 <ejecutarComando+0x543>
movslq -0xcd4(%rbp),%rax
mov    %rax,-0x10e8(%rbp)
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x10e8(%rbp),%rax
cmp    %rcx,%rax
je     16b3 <ejecutarComando+0x543>
cmpl   $0x2,-0x4d8(%rbp)
jge    16b3 <ejecutarComando+0x543>
cmpl   $0x1,-0x14(%rbp)
jne    13f2 <ejecutarComando+0x282>
movl   $0x2,-0x14(%rbp)
mov    -0xcd4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xcd4(%rbp)
jmp    16ae <ejecutarComando+0x53e>
cmpl   $0x2,-0x14(%rbp)
jne    142a <ejecutarComando+0x2ba>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x491(%rbp)
lea    -0x60(%rbp),%rdi
lea    -0x491(%rbp),%rsi
mov    $0x1,%edx
call   1080 <strncat@plt>
jmp    16a9 <ejecutarComando+0x539>
cmpl   $0x3,-0x14(%rbp)
jne    148c <ejecutarComando+0x31c>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3a,%eax
jne    145b <ejecutarComando+0x2eb>
mov    -0x4d8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4d8(%rbp)
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x491(%rbp)
lea    -0xa0(%rbp),%rdi
lea    -0x491(%rbp),%rsi
mov    $0x1,%edx
call   1080 <strncat@plt>
jmp    16a4 <ejecutarComando+0x534>
cmpl   $0x4,-0x14(%rbp)
jne    169f <ejecutarComando+0x52f>
cmpl   $0x3,-0x4b4(%rbp)
jne    15f3 <ejecutarComando+0x483>
movl   $0x0,-0xcd8(%rbp)
mov    -0xcd4(%rbp),%eax
mov    %eax,-0xcdc(%rbp)
movslq -0xcdc(%rbp),%rax
mov    %rax,-0x10f0(%rbp)
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x10f0(%rbp),%rax
cmp    %rcx,%rax
jae    15ee <ejecutarComando+0x47e>
mov    -0x10(%rbp),%rax
movslq -0xcdc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
jne    150a <ejecutarComando+0x39a>
mov    -0xcd8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcd8(%rbp)
cmpl   $0x2,-0xcd8(%rbp)
jge    1548 <ejecutarComando+0x3d8>
mov    -0x10(%rbp),%rax
movslq -0xcdc(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x491(%rbp)
lea    -0x490(%rbp),%rdi
lea    -0x491(%rbp),%rsi
mov    $0x1,%edx
call   1080 <strncat@plt>
jmp    158b <ejecutarComando+0x41b>
cmpl   $0x2,-0xcd8(%rbp)
jne    1586 <ejecutarComando+0x416>
mov    -0x10(%rbp),%rax
movslq -0xcdc(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x491(%rbp)
lea    -0x490(%rbp),%rdi
lea    -0x491(%rbp),%rsi
mov    $0x1,%edx
call   1080 <strncat@plt>
jmp    15ee <ejecutarComando+0x47e>
jmp    158b <ejecutarComando+0x41b>
movslq -0xcdc(%rbp),%rax
mov    %rax,-0x10f8(%rbp)
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x10f8(%rbp),%rax
sub    $0x1,%rcx
cmp    %rcx,%rax
jne    15cb <ejecutarComando+0x45b>
cmpl   $0x2,-0xcd8(%rbp)
jge    15cb <ejecutarComando+0x45b>
jmp    15ee <ejecutarComando+0x47e>
mov    -0xcd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcd4(%rbp)
mov    -0xcdc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcdc(%rbp)
jmp    14b9 <ejecutarComando+0x349>
jmp    169a <ejecutarComando+0x52a>
cmpl   $0x1,-0x4b4(%rbp)
jne    1631 <ejecutarComando+0x4c1>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x491(%rbp)
lea    -0x490(%rbp),%rdi
lea    -0x491(%rbp),%rsi
mov    $0x1,%edx
call   1080 <strncat@plt>
jmp    1695 <ejecutarComando+0x525>
cmpl   $0x2,-0x4b4(%rbp)
jne    1690 <ejecutarComando+0x520>
lea    -0x490(%rbp),%rdi
call   1050 <strlen@plt>
movslq -0x4dc(%rbp),%rcx
cmp    %rcx,%rax
ja     168b <ejecutarComando+0x51b>
mov    -0x10(%rbp),%rax
movslq -0xcd4(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x491(%rbp)
lea    -0x490(%rbp),%rdi
lea    -0x491(%rbp),%rsi
mov    $0x1,%edx
call   1080 <strncat@plt>
jmp    168b <ejecutarComando+0x51b>
jmp    1690 <ejecutarComando+0x520>
jmp    1695 <ejecutarComando+0x525>
jmp    169a <ejecutarComando+0x52a>
jmp    169f <ejecutarComando+0x52f>
jmp    16a4 <ejecutarComando+0x534>
jmp    16a9 <ejecutarComando+0x539>
jmp    16ae <ejecutarComando+0x53e>
jmp    1ea1 <ejecutarComando+0xd31>
cmpl   $0x2,-0x14(%rbp)
jne    188d <ejecutarComando+0x71d>
lea    -0x60(%rbp),%rdi
call   1050 <strlen@plt>
cmp    $0x0,%rax
jbe    188d <ejecutarComando+0x71d>
lea    -0x60(%rbp),%rdi
lea    0x925(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    171c <ejecutarComando+0x5ac>
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
movl   $0x1,-0x498(%rbp)
jmp    1888 <ejecutarComando+0x718>
lea    -0x60(%rbp),%rdi
lea    0x8e0(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    1768 <ejecutarComando+0x5f8>
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
movl   $0x2,-0x498(%rbp)
jmp    1883 <ejecutarComando+0x713>
lea    -0x60(%rbp),%rdi
lea    0x89b(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    17b4 <ejecutarComando+0x644>
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
movl   $0x3,-0x498(%rbp)
jmp    187e <ejecutarComando+0x70e>
lea    -0x60(%rbp),%rdi
lea    0x856(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    1800 <ejecutarComando+0x690>
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
movl   $0x4,-0x498(%rbp)
jmp    1879 <ejecutarComando+0x709>
lea    -0x60(%rbp),%rdi
lea    0x809(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    184c <ejecutarComando+0x6dc>
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
movl   $0x5,-0x498(%rbp)
jmp    1874 <ejecutarComando+0x704>
movl   $0x0,-0x498(%rbp)
lea    -0x60(%rbp),%rsi
lea    0x7ba(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
jmp    1879 <ejecutarComando+0x709>
jmp    187e <ejecutarComando+0x70e>
jmp    1883 <ejecutarComando+0x713>
jmp    1888 <ejecutarComando+0x718>
jmp    1e9c <ejecutarComando+0xd2c>
cmpl   $0x3,-0x14(%rbp)
jne    1a97 <ejecutarComando+0x927>
lea    -0xa0(%rbp),%rdi
call   1050 <strlen@plt>
cmp    $0x0,%rax
jbe    1a97 <ejecutarComando+0x927>
cmpl   $0x1,-0x498(%rbp)
jne    1a92 <ejecutarComando+0x922>
lea    -0xa0(%rbp),%rdi
lea    0x785(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    1922 <ejecutarComando+0x7b2>
movl   $0x4,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
movl   $0x1,-0x4c4(%rbp)
movl   $0x1,-0x4b4(%rbp)
lea    -0x490(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
mov    -0xcd4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xcd4(%rbp)
jmp    1a8d <ejecutarComando+0x91d>
lea    -0xa0(%rbp),%rdi
lea    0x725(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    1994 <ejecutarComando+0x824>
movl   $0x4,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
movl   $0x2,-0x4c4(%rbp)
movl   $0x2,-0x4b4(%rbp)
movl   $0x1,-0x4dc(%rbp)
lea    -0x490(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
mov    -0xcd4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xcd4(%rbp)
jmp    1a88 <ejecutarComando+0x918>
lea    -0xa0(%rbp),%rdi
lea    0x6bb(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    19fc <ejecutarComando+0x88c>
movl   $0x4,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
movl   $0x3,-0x4c4(%rbp)
movl   $0x3,-0x4b4(%rbp)
lea    -0x490(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
mov    -0xcd4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xcd4(%rbp)
jmp    1a83 <ejecutarComando+0x913>
lea    -0xa0(%rbp),%rdi
lea    0x65b(%rip),%rsi
call   1030 <strcasecmp@plt>
cmp    $0x0,%eax
jne    1a64 <ejecutarComando+0x8f4>
movl   $0x4,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
movl   $0x4,-0x4c4(%rbp)
movl   $0x3,-0x4b4(%rbp)
lea    -0x490(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
mov    -0xcd4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xcd4(%rbp)
jmp    1a7e <ejecutarComando+0x90e>
lea    0x602(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
jmp    1a83 <ejecutarComando+0x913>
jmp    1a88 <ejecutarComando+0x918>
jmp    1a8d <ejecutarComando+0x91d>
jmp    1a92 <ejecutarComando+0x922>
jmp    1e97 <ejecutarComando+0xd27>
cmpl   $0x4,-0x14(%rbp)
jne    1e92 <ejecutarComando+0xd22>
lea    -0x490(%rbp),%rdi
call   1050 <strlen@plt>
cmp    $0x0,%rax
jbe    1e92 <ejecutarComando+0xd22>
cmpl   $0x1,-0x4b4(%rbp)
jne    1bcb <ejecutarComando+0xa5b>
movl   $0x0,-0xce0(%rbp)
movslq -0xce0(%rbp),%rax
mov    %rax,-0x1100(%rbp)
lea    -0x490(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x1100(%rbp),%rax
cmp    %rcx,%rax
jae    1b65 <ejecutarComando+0x9f5>
movslq -0xce0(%rbp),%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x30,%eax
jl     1b2b <ejecutarComando+0x9bb>
movslq -0xce0(%rbp),%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x39,%eax
jle    1b4c <ejecutarComando+0x9dc>
lea    -0x490(%rbp),%rsi
lea    0x547(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
jmp    1b51 <ejecutarComando+0x9e1>
mov    -0xce0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xce0(%rbp)
jmp    1ace <ejecutarComando+0x95e>
cmpl   $0x1,-0x4c4(%rbp)
jne    1ba2 <ejecutarComando+0xa32>
lea    -0x6e0(%rbp),%rdi
xor    %esi,%esi
mov    $0x1f4,%edx
call   1070 <memset@plt>
lea    -0x6e0(%rbp),%rdi
lea    -0x490(%rbp),%rsi
call   1040 <strcpy@plt>
movl   $0x1,-0x4e0(%rbp)
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
jmp    1e8d <ejecutarComando+0xd1d>
cmpl   $0x3,-0x4b4(%rbp)
jne    1d5e <ejecutarComando+0xbee>
movsbl -0x490(%rbp),%eax
cmp    $0x22,%eax
jne    1c09 <ejecutarComando+0xa99>
lea    -0x490(%rbp),%rdi
call   1050 <strlen@plt>
sub    $0x1,%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x22,%eax
je     1c2a <ejecutarComando+0xaba>
lea    -0x490(%rbp),%rsi
lea    0x484(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
lea    -0x10d0(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
movl   $0x0,-0x10d4(%rbp)
movslq -0x10d4(%rbp),%rax
mov    %rax,-0x1108(%rbp)
lea    -0x490(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x1108(%rbp),%rax
sub    $0x2,%rcx
cmp    %rcx,%rax
jae    1cac <ejecutarComando+0xb3c>
mov    -0x10d4(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0x490(%rbp,%rax,1),%cl
movslq -0x10d4(%rbp),%rax
mov    %cl,-0x10d0(%rbp,%rax,1)
mov    -0x10d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10d4(%rbp)
jmp    1c47 <ejecutarComando+0xad7>
cmpl   $0x4,-0x4c4(%rbp)
jne    1cee <ejecutarComando+0xb7e>
lea    -0xcd0(%rbp),%rdi
xor    %esi,%esi
mov    $0x1f4,%edx
call   1070 <memset@plt>
lea    -0xcd0(%rbp),%rdi
lea    -0x10d0(%rbp),%rsi
call   1040 <strcpy@plt>
movl   $0x1,-0x4ec(%rbp)
jmp    1d30 <ejecutarComando+0xbc0>
cmpl   $0x3,-0x4c4(%rbp)
jne    1d2b <ejecutarComando+0xbbb>
lea    -0xad0(%rbp),%rdi
xor    %esi,%esi
mov    $0x3e8,%edx
call   1070 <memset@plt>
lea    -0xad0(%rbp),%rdi
lea    -0x10d0(%rbp),%rsi
call   1040 <strcpy@plt>
movl   $0x1,-0x4e8(%rbp)
jmp    1d30 <ejecutarComando+0xbc0>
jmp    1d35 <ejecutarComando+0xbc5>
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
jmp    1e88 <ejecutarComando+0xd18>
cmpl   $0x2,-0x4b4(%rbp)
jne    1e83 <ejecutarComando+0xd13>
movl   $0x0,-0x10d8(%rbp)
movslq -0x10d8(%rbp),%rax
mov    %rax,-0x1110(%rbp)
lea    -0x490(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,%rcx
mov    -0x1110(%rbp),%rax
cmp    %rcx,%rax
jae    1e3c <ejecutarComando+0xccc>
movslq -0x10d8(%rbp),%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x41,%eax
jl     1dd2 <ejecutarComando+0xc62>
movslq -0x10d8(%rbp),%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x5a,%eax
jle    1e23 <ejecutarComando+0xcb3>
movslq -0x10d8(%rbp),%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x61,%eax
jl     1e02 <ejecutarComando+0xc92>
movslq -0x10d8(%rbp),%rax
movsbl -0x490(%rbp,%rax,1),%eax
ff
cmp    $0x7a,%eax
jle    1e23 <ejecutarComando+0xcb3>
lea    -0x490(%rbp),%rsi
lea    0x2a7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
jmp    1e28 <ejecutarComando+0xcb8>
mov    -0x10d8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10d8(%rbp)
jmp    1d75 <ejecutarComando+0xc05>
cmpl   $0x2,-0x4c4(%rbp)
jne    1e5f <ejecutarComando+0xcef>
mov    -0x490(%rbp),%al
mov    %al,-0x6e1(%rbp)
movl   $0x1,-0x4e4(%rbp)
movl   $0x3,-0x14(%rbp)
movl   $0x0,-0x4d8(%rbp)
lea    -0xa0(%rbp),%rdi
xor    %esi,%esi
mov    $0x32,%edx
call   1070 <memset@plt>
jmp    1e88 <ejecutarComando+0xd18>
jmp    1e8d <ejecutarComando+0xd1d>
jmp    1e92 <ejecutarComando+0xd22>
jmp    1e97 <ejecutarComando+0xd27>
jmp    1e9c <ejecutarComando+0xd2c>
jmp    1ea1 <ejecutarComando+0xd31>
jmp    1ea6 <ejecutarComando+0xd36>
mov    -0xcd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xcd4(%rbp)
jmp    1324 <ejecutarComando+0x1b4>
cmpl   $0x1,-0x498(%rbp)
jne    1f71 <ejecutarComando+0xe01>
cmpl   $0x1,-0x4e0(%rbp)
jne    1f57 <ejecutarComando+0xde7>
cmpl   $0x1,-0x4e8(%rbp)
jne    1f3d <ejecutarComando+0xdcd>
cmpl   $0x1,-0x4ec(%rbp)
jne    1f23 <ejecutarComando+0xdb3>
lea    -0x6e0(%rbp),%rdi
movsbl -0x6e1(%rbp),%esi
lea    -0xad0(%rbp),%rdx
lea    -0xcd0(%rbp),%rcx
mov    $0x0,%al
call   1090 <mkdisk@plt>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
lea    0x1a5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
lea    0x1a7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
lea    0x1a9(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    1f78 <ejecutarComando+0xe08>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ejecutarComando>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1078,%rsp
mov    %rdi,%r13
xorps  %xmm0,%xmm0
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movw   $0x0,0xa0(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movw   $0x0,0x50(%rsp)
lea    0xb0(%rsp),%rdi
xor    %ebx,%ebx
mov    $0x3e8,%edx
xor    %esi,%esi
call   1080 <memset@plt>
lea    0x6a0(%rsp),%rdi
mov    $0x1f4,%edx
xor    %esi,%esi
call   1080 <memset@plt>
lea    0x8a0(%rsp),%rdi
mov    $0x3e8,%edx
xor    %esi,%esi
call   1080 <memset@plt>
lea    0x4a0(%rsp),%rdi
mov    $0x1f4,%edx
xor    %esi,%esi
call   1080 <memset@plt>
mov    %r13,%rdi
call   1060 <strlen@plt>
mov    %rax,%r15
add    $0xffffffffffffffff,%rax
mov    %rax,0x68(%rsp)
mov    $0x1,%r14d
mov    $0x6d,%al
mov    %eax,0x14(%rsp)
xor    %r12d,%r12d
movl   $0x0,0x58(%rsp)
movl   $0x0,0x5c(%rsp)
movl   $0x0,0x60(%rsp)
movl   $0x0,0x64(%rsp)
xor    %esi,%esi
xor    %edx,%edx
movl   $0x0,0x8(%rsp)
movl   $0x0,0xc(%rsp)
mov    %r13,0x18(%rsp)
jmp    12d0 <ejecutarComando+0x140>
xorps  %xmm0,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%r14d
mov    $0x2,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r12d
movslq %r12d,%rbx
cmp    %rbx,%r15
jb     1a14 <ejecutarComando+0x884>
movzbl 0x0(%r13,%rbx,1),%ebp
cmp    $0x20,%rbp
ja     1470 <ejecutarComando+0x2e0>
movabs $0x100000600,%rax
bt     %rbp,%rax
jae    1470 <ejecutarComando+0x2e0>
cmp    $0x2,%r14d
jne    13b0 <ejecutarComando+0x220>
cmpb   $0x0,0x70(%rsp)
je     13b0 <ejecutarComando+0x220>
lea    0x70(%rsp),%rbx
mov    %rbx,%rdi
lea    0xcf8(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     1537 <ejecutarComando+0x3a7>
mov    %rbx,%rdi
lea    0xce8(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     128c <ejecutarComando+0xfc>
mov    %rbx,%rdi
lea    0xcd8(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     155a <ejecutarComando+0x3ca>
mov    %rbx,%rdi
lea    0xcc8(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     15d8 <ejecutarComando+0x448>
mov    %rbx,%rdi
lea    0xcb0(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
jne    1a96 <ejecutarComando+0x906>
xorps  %xmm0,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%r14d
mov    $0x5,%edx
jmp    12c0 <ejecutarComando+0x130>
nopl   0x0(%rax)
cmp    $0x3,%r14d
jne    14b0 <ejecutarComando+0x320>
cmpb   $0x0,0x20(%rsp)
je     14b0 <ejecutarComando+0x320>
mov    $0x3,%r14d
cmp    $0x1,%edx
jne    12c0 <ejecutarComando+0x130>
lea    0x20(%rsp),%rbx
mov    %rbx,%rdi
lea    0xc7a(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     1585 <ejecutarComando+0x3f5>
mov    %rbx,%rdi
lea    0xc6b(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     1603 <ejecutarComando+0x473>
mov    %rbx,%rdi
lea    0xc5c(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
je     18b0 <ejecutarComando+0x720>
mov    %rbx,%rdi
lea    0xc4d(%rip),%rsi
call   1030 <strcasecmp@plt>
test   %eax,%eax
jne    1ab6 <ejecutarComando+0x926>
mov    $0x3e8,%edx
lea    0xb0(%rsp),%rdi
xor    %esi,%esi
call   1080 <memset@plt>
xor    %esi,%esi
add    $0xffffffff,%r12d
mov    $0x1,%edx
movl   $0x3,0x8(%rsp)
movl   $0x4,0xc(%rsp)
mov    $0x4,%r14d
jmp    12c0 <ejecutarComando+0x130>
nop
cmp    %rbx,%r15
je     12f4 <ejecutarComando+0x164>
cmp    $0x1,%esi
jg     12f4 <ejecutarComando+0x164>
lea    -0x1(%r14),%eax
cmp    $0x3,%eax
ja     12c0 <ejecutarComando+0x130>
lea    0xb6a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0xffffffff,%r12d
mov    $0x2,%r14d
jmp    12c0 <ejecutarComando+0x130>
xchg   %ax,%ax
cmp    $0x4,%r14d
jne    12c0 <ejecutarComando+0x130>
mov    %esi,%ebp
mov    %edx,%ebx
lea    0xb0(%rsp),%rdi
call   1060 <strlen@plt>
mov    $0x4,%r14d
test   %rax,%rax
je     15ca <ejecutarComando+0x43a>
mov    %rax,%r13
mov    0x8(%rsp),%eax
cmp    $0x1,%eax
mov    %ebx,%edx
je     177f <ejecutarComando+0x5ef>
cmp    $0x3,%eax
je     1818 <ejecutarComando+0x688>
cmp    $0x2,%eax
jne    18a4 <ejecutarComando+0x714>
xor    %eax,%eax
movzbl 0xb0(%rsp,%rax,1),%ecx
and    $0xdf,%cl
add    $0xbf,%cl
cmp    $0x1a,%cl
jae    1a5c <ejecutarComando+0x8cc>
add    $0x1,%rax
cmp    %rax,%r13
jne    1500 <ejecutarComando+0x370>
cmpl   $0x2,0xc(%rsp)
jne    19ce <ejecutarComando+0x83e>
mov    0xb0(%rsp),%eax
jmp    19d5 <ejecutarComando+0x845>
xorps  %xmm0,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%r14d
jmp    15c0 <ejecutarComando+0x430>
xorps  %xmm0,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%edx
mov    $0x3,%r14d
jmp    12c0 <ejecutarComando+0x130>
mov    $0x3e8,%edx
lea    0xb0(%rsp),%rdi
xor    %esi,%esi
call   1080 <memset@plt>
xor    %esi,%esi
add    $0xffffffff,%r12d
mov    $0x4,%r14d
movl   $0x1,0xc(%rsp)
movl   $0x1,0x8(%rsp)
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x1,%edx
jmp    12c0 <ejecutarComando+0x130>
mov    0x18(%rsp),%r13
mov    %ebx,%edx
mov    %ebp,%esi
jmp    12c0 <ejecutarComando+0x130>
xorps  %xmm0,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%r14d
mov    $0x4,%edx
jmp    12c0 <ejecutarComando+0x130>
mov    $0x3e8,%edx
lea    0xb0(%rsp),%rdi
xor    %esi,%esi
call   1080 <memset@plt>
xor    %esi,%esi
add    $0xffffffff,%r12d
mov    $0x4,%r14d
mov    $0x1,%edx
movl   $0x2,0xc(%rsp)
movl   $0x2,0x8(%rsp)
movl   $0x1,0x64(%rsp)
jmp    12c0 <ejecutarComando+0x130>
mov    %bpl,0x7(%rsp)
mov    %edx,%ebx
mov    $0x1,%edx
lea    0x70(%rsp),%rdi
mov    %esi,%ebp
lea    0x7(%rsp),%rsi
call   1090 <strncat@plt>
mov    %ebp,%esi
mov    %ebx,%edx
mov    $0x2,%r14d
jmp    12c0 <ejecutarComando+0x130>
xor    %eax,%eax
cmp    $0x3a,%bpl
sete   %al
add    %eax,%esi
mov    %bpl,0x7(%rsp)
mov    %edx,%ebx
mov    $0x1,%edx
lea    0x20(%rsp),%rdi
mov    %esi,%ebp
lea    0x7(%rsp),%rsi
call   1090 <strncat@plt>
mov    %ebp,%esi
mov    %ebx,%edx
mov    $0x3,%r14d
jmp    12c0 <ejecutarComando+0x130>
mov    $0x4,%r14d
mov    0x8(%rsp),%eax
cmp    $0x1,%eax
je     18ea <ejecutarComando+0x75a>
cmp    $0x2,%eax
je     191b <ejecutarComando+0x78b>
cmp    $0x3,%eax
jne    12c0 <ejecutarComando+0x130>
movslq %r12d,%rbx
movl   $0x3,0x8(%rsp)
cmp    %rbx,%r15
jbe    12c0 <ejecutarComando+0x130>
xor    %ebp,%ebp
mov    %edx,0x10(%rsp)
jmp    1739 <ejecutarComando+0x5a9>
nopl   0x0(%rax)
mov    %al,0x7(%rsp)
mov    $0x1,%edx
lea    0xb0(%rsp),%rdi
mov    %r13,%r12
mov    %r15,%r13
mov    %esi,%r15d
lea    0x7(%rsp),%rsi
call   1090 <strncat@plt>
mov    %r15d,%esi
mov    %r13,%r15
mov    %r12,%r13
mov    0x10(%rsp),%edx
cmp    %rbx,0x68(%rsp)
je     1a0c <ejecutarComando+0x87c>
add    $0x1,%rbx
cmp    %rbx,%r15
jbe    1a0c <ejecutarComando+0x87c>
mov    %ebp,%ecx
movzbl 0x0(%r13,%rbx,1),%eax
xor    %ebp,%ebp
cmp    $0x22,%al
sete   %bpl
add    %ecx,%ebp
cmp    $0x2,%ebp
jb     16f0 <ejecutarComando+0x560>
jne    172c <ejecutarComando+0x59c>
mov    %al,0x7(%rsp)
mov    %edx,%r12d
mov    $0x1,%edx
lea    0xb0(%rsp),%rdi
mov    %esi,%ebp
lea    0x7(%rsp),%rsi
call   1090 <strncat@plt>
mov    %ebp,%esi
mov    %r12d,%edx
mov    %ebx,%r12d
jmp    12c0 <ejecutarComando+0x130>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl 0xb0(%rsp,%rax,1),%ecx
add    $0xc6,%cl
cmp    $0xf5,%cl
jbe    1a65 <ejecutarComando+0x8d5>
add    $0x1,%rax
cmp    %rax,%r13
jne    1790 <ejecutarComando+0x600>
cmpl   $0x1,0xc(%rsp)
jne    17e5 <ejecutarComando+0x655>
mov    $0x1f4,%edx
lea    0x6a0(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
call   1080 <memset@plt>
mov    %rbp,%rdi
lea    0xb0(%rsp),%rsi
call   1040 <strcpy@plt>
mov    %ebx,%edx
movl   $0x1,0x60(%rsp)
xorps  %xmm0,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%r14d
movl   $0x1,0x8(%rsp)
mov    0x18(%rsp),%r13
jmp    12c0 <ejecutarComando+0x130>
cmpb   $0x22,0xb0(%rsp)
22
jne    1aad <ejecutarComando+0x91d>
lea    0xb0(%rsp),%rax
cmpb   $0x22,-0x1(%r13,%rax,1)
jne    1aad <ejecutarComando+0x91d>
mov    $0x3e8,%edx
lea    0xc90(%rsp),%r14
mov    %r14,%rdi
xor    %esi,%esi
call   1080 <memset@plt>
add    $0xfffffffffffffffe,%r13
je     186a <ejecutarComando+0x6da>
mov    %r14,%rdi
lea    0xb1(%rsp),%rsi
mov    %r13,%rdx
call   10a0 <memcpy@plt>
mov    0xc(%rsp),%eax
cmp    $0x3,%eax
je     1968 <ejecutarComando+0x7d8>
cmp    $0x4,%eax
jne    1999 <ejecutarComando+0x809>
mov    $0x1f4,%edx
lea    0x4a0(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
call   1080 <memset@plt>
movl   $0x1,0x58(%rsp)
jmp    1987 <ejecutarComando+0x7f7>
mov    %ebp,%esi
mov    0x18(%rsp),%r13
jmp    12c0 <ejecutarComando+0x130>
mov    $0x3e8,%edx
lea    0xb0(%rsp),%rdi
xor    %esi,%esi
call   1080 <memset@plt>
xor    %esi,%esi
add    $0xffffffff,%r12d
mov    $0x4,%r14d
mov    $0x1,%edx
movl   $0x3,0xc(%rsp)
movl   $0x3,0x8(%rsp)
jmp    12c0 <ejecutarComando+0x130>
mov    %bpl,0x7(%rsp)
mov    %edx,%ebx
mov    $0x1,%edx
lea    0xb0(%rsp),%rdi
mov    %esi,%ebp
lea    0x7(%rsp),%rsi
call   1090 <strncat@plt>
mov    %ebp,%esi
mov    %ebx,%edx
movl   $0x1,0x8(%rsp)
jmp    12c0 <ejecutarComando+0x130>
mov    %esi,0x54(%rsp)
mov    %edx,0x10(%rsp)
lea    0xb0(%rsp),%rbx
mov    %rbx,%rdi
call   1060 <strlen@plt>
mov    0x64(%rsp),%ecx
movl   $0x2,0x8(%rsp)
cmp    %rcx,%rax
ja     195b <ejecutarComando+0x7cb>
mov    %bpl,0x7(%rsp)
mov    $0x1,%edx
mov    %rbx,%rdi
lea    0x7(%rsp),%rsi
call   1090 <strncat@plt>
mov    0x10(%rsp),%edx
mov    0x54(%rsp),%esi
jmp    12c0 <ejecutarComando+0x130>
mov    $0x3e8,%edx
lea    0x8a0(%rsp),%rbp
mov    %rbp,%rdi
xor    %esi,%esi
call   1080 <memset@plt>
movl   $0x1,0x5c(%rsp)
mov    %rbp,%rdi
mov    0x18(%rsp),%r13
mov    %r14,%rsi
call   1040 <strcpy@plt>
jmp    199e <ejecutarComando+0x80e>
mov    0x18(%rsp),%r13
mov    %ebx,%edx
xorps  %xmm0,%xmm0
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
movl   $0x3,0x8(%rsp)
mov    $0x3,%r14d
jmp    12c0 <ejecutarComando+0x130>
mov    0x14(%rsp),%eax
movzbl %al,%eax
mov    %eax,0x14(%rsp)
mov    0x18(%rsp),%r13
xorps  %xmm0,%xmm0
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movw   $0x0,0x50(%rsp)
xor    %esi,%esi
mov    $0x3,%r14d
movl   $0x2,0x8(%rsp)
jmp    12c0 <ejecutarComando+0x130>
mov    %ebx,%r12d
jmp    12c0 <ejecutarComando+0x130>
xor    %ebx,%ebx
cmp    $0x1,%edx
jne    1ac7 <ejecutarComando+0x937>
cmpl   $0x1,0x60(%rsp)
jne    1a7d <ejecutarComando+0x8ed>
cmpl   $0x1,0x5c(%rsp)
jne    1a8d <ejecutarComando+0x8fd>
cmpl   $0x1,0x58(%rsp)
jne    1aa4 <ejecutarComando+0x914>
movsbl 0x14(%rsp),%esi
xor    %ebx,%ebx
lea    0x6a0(%rsp),%rdi
lea    0x8a0(%rsp),%rdx
lea    0x4a0(%rsp),%rcx
xor    %eax,%eax
call   10b0 <mkdisk@plt>
jmp    1ac7 <ejecutarComando+0x937>
lea    0x651(%rip),%rdi
jmp    1a6c <ejecutarComando+0x8dc>
lea    0x611(%rip),%rdi
lea    0xb0(%rsp),%rsi
xor    %eax,%eax
call   1070 <printf@plt>
jmp    1ac2 <ejecutarComando+0x932>
lea    0x648(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
jmp    1ac2 <ejecutarComando+0x932>
lea    0x654(%rip),%rdi
jmp    1abd <ejecutarComando+0x92d>
lea    0x58e(%rip),%rdi
lea    0x70(%rsp),%rsi
jmp    1a74 <ejecutarComando+0x8e4>
lea    0x658(%rip),%rdi
jmp    1abd <ejecutarComando+0x92d>
lea    0x5e4(%rip),%rdi
jmp    1a6c <ejecutarComando+0x8dc>
lea    0x661(%rip),%rdi
call   1050 <puts@plt>
mov    $0xffffffff,%ebx
mov    %ebx,%eax
add    $0x1078,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [7 x i8] c"mkdisk\00"
@.str.1 = [7 x i8] c"rmdisk\00"
@.str.2 = [6 x i8] c"fdisk\00"
@.str.3 = [6 x i8] c"mount\00"
@.str.4 = [7 x i8] c"umount\00"
@.str.5 = [50 x i8] c"No se reconoce '%s' como un instrucci\C3\B3n valida.\0A\00"
@.str.6 = [8 x i8] c"-size::\00"
@.str.7 = [8 x i8] c"+unit::\00"
@.str.8 = [8 x i8] c"-path::\00"
@.str.9 = [8 x i8] c"-name::\00"
@.str.10 = [19 x i8] c"PARAMETRO ERRONEO\0A\00"
@.str.11 = [27 x i8] c"VALOR NUMERICO ERRONEO %s\0A\00"
@.str.12 = [28 x i8] c"VALOR DE CADENA ERRONEO %s\0A\00"
@.str.13 = [24 x i8] c"VALOR CHAR ERRONEO %s \0A\00"
@.str.14 = [28 x i8] c"Falta parametro '-name::'.\0A\00"
@.str.15 = [28 x i8] c"Falta parametro '-path::'.\0A\00"
@.str.16 = [28 x i8] c"Falta parametro '-size::'\0A.\00"
define i32 @ejecutarComando(i8* %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca [50 x i8]
%12 = alloca [50 x i8]
%13 = alloca [1000 x i8]
%14 = alloca i8
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca [500 x i8]
%38 = alloca i8
%39 = alloca [1000 x i8]
%40 = alloca [500 x i8]
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca [1000 x i8]
%46 = alloca i32
%47 = alloca i32
store i8* %0, i8** %3
store i32 1, i32* %4
store i32 1, i32* %5
store i32 2, i32* %6
store i32 3, i32* %7
store i32 4, i32* %8
store i32 0, i32* %9
store i32 -1, i32* %10
store i8 0, i8* %14
%48 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%49 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%50 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
store i32 0, i32* %15
store i32 0, i32* %16
store i32 1, i32* %17
store i32 2, i32* %18
store i32 3, i32* %19
store i32 4, i32* %20
store i32 5, i32* %21
store i32 0, i32* %22
store i32 1, i32* %23
store i32 2, i32* %24
store i32 3, i32* %25
store i32 0, i32* %26
store i32 1, i32* %27
store i32 2, i32* %28
store i32 3, i32* %29
store i32 4, i32* %30
store i32 0, i32* %31
store i32 0, i32* %32
store i32 0, i32* %33
store i32 0, i32* %34
store i32 0, i32* %35
store i32 0, i32* %36
store i8 109, i8* %38
%51 = getelementptr inbounds [500 x i8], [500 x i8]* %37, i64 0, i64 0
%52 = getelementptr inbounds [1000 x i8], [1000 x i8]* %39, i64 0, i64 0
%53 = getelementptr inbounds [500 x i8], [500 x i8]* %40, i64 0, i64 0
store i32 1, i32* %4
store i32 0, i32* %15
store i32 0, i32* %41
br label %54
54: ; preds = %500, %1
%55 = load i32, i32* %41
%56 = sext i32 %55 to i64
%57 = load i8*, i8** %3
%58 = call i64 @strlen(i8* %57)
%59 = icmp ule i64 %56, %58
br i1 %59, label %60, label %503
60: ; preds = %54
%61 = load i8*, i8** %3
%62 = load i32, i32* %41
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds i8, i8* %61, i64 %63
%65 = load i8, i8* %64
%66 = sext i8 %65 to i32
%67 = icmp ne i32 %66, 32
br i1 %67, label %68, label %238
68: ; preds = %60
%69 = load i8*, i8** %3
%70 = load i32, i32* %41
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds i8, i8* %69, i64 %71
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp ne i32 %74, 9
br i1 %75, label %76, label %238
76: ; preds = %68
%77 = load i8*, i8** %3
%78 = load i32, i32* %41
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds i8, i8* %77, i64 %79
%81 = load i8, i8* %80
%82 = sext i8 %81 to i32
%83 = icmp ne i32 %82, 10
br i1 %83, label %84, label %238
84: ; preds = %76
%85 = load i32, i32* %41
%86 = sext i32 %85 to i64
%87 = load i8*, i8** %3
%88 = call i64 @strlen(i8* %87)
%89 = icmp ne i64 %86, %88
br i1 %89, label %90, label %238
90: ; preds = %84
%91 = load i32, i32* %31
%92 = icmp slt i32 %91, 2
br i1 %92, label %93, label %238
93: ; preds = %90
%94 = load i32, i32* %4
%95 = icmp eq i32 %94, 1
br i1 %95, label %96, label %99
96: ; preds = %93
store i32 2, i32* %4
%97 = load i32, i32* %41
%98 = add nsw i32 %97, -1
store i32 %98, i32* %41
br label %237
99: ; preds = %93
%100 = load i32, i32* %4
%101 = icmp eq i32 %100, 2
br i1 %101, label %102, label %110
102: ; preds = %99
%103 = load i8*, i8** %3
%104 = load i32, i32* %41
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds i8, i8* %103, i64 %105
%107 = load i8, i8* %106
store i8 %107, i8* %14
%108 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%109 = call i8* @strncat(i8* %108, i8* %14, i64 1)
br label %236
110: ; preds = %99
%111 = load i32, i32* %4
%112 = icmp eq i32 %111, 3
br i1 %112, label %113, label %132
113: ; preds = %110
%114 = load i8*, i8** %3
%115 = load i32, i32* %41
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i8, i8* %114, i64 %116
%118 = load i8, i8* %117
%119 = sext i8 %118 to i32
%120 = icmp eq i32 %119, 58
br i1 %120, label %121, label %124
121: ; preds = %113
%122 = load i32, i32* %31
%123 = add nsw i32 %122, 1
store i32 %123, i32* %31
br label %124
124: ; preds = %121, %113
%125 = load i8*, i8** %3
%126 = load i32, i32* %41
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds i8, i8* %125, i64 %127
%129 = load i8, i8* %128
store i8 %129, i8* %14
%130 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%131 = call i8* @strncat(i8* %130, i8* %14, i64 1)
br label %235
132: ; preds = %110
%133 = load i32, i32* %4
%134 = icmp eq i32 %133, 4
br i1 %134, label %135, label %234
135: ; preds = %132
%136 = load i32, i32* %22
%137 = icmp eq i32 %136, 3
br i1 %137, label %138, label %198
138: ; preds = %135
store i32 0, i32* %42
%139 = load i32, i32* %41
store i32 %139, i32* %43
br label %140
140: ; preds = %194, %138
%141 = load i32, i32* %43
%142 = sext i32 %141 to i64
%143 = load i8*, i8** %3
%144 = call i64 @strlen(i8* %143)
%145 = icmp ult i64 %142, %144
br i1 %145, label %146, label %197
146: ; preds = %140
%147 = load i8*, i8** %3
%148 = load i32, i32* %43
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds i8, i8* %147, i64 %149
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = icmp eq i32 %152, 34
br i1 %153, label %154, label %157
154: ; preds = %146
%155 = load i32, i32* %42
%156 = add nsw i32 %155, 1
store i32 %156, i32* %42
br label %157
157: ; preds = %154, %146
%158 = load i32, i32* %42
%159 = icmp slt i32 %158, 2
br i1 %159, label %160, label %168
160: ; preds = %157
%161 = load i8*, i8** %3
%162 = load i32, i32* %43
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds i8, i8* %161, i64 %163
%165 = load i8, i8* %164
store i8 %165, i8* %14
%166 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%167 = call i8* @strncat(i8* %166, i8* %14, i64 1)
br label %180
168: ; preds = %157
%169 = load i32, i32* %42
%170 = icmp eq i32 %169, 2
br i1 %170, label %171, label %179
171: ; preds = %168
%172 = load i8*, i8** %3
%173 = load i32, i32* %43
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds i8, i8* %172, i64 %174
%176 = load i8, i8* %175
store i8 %176, i8* %14
%177 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%178 = call i8* @strncat(i8* %177, i8* %14, i64 1)
br label %197
179: ; preds = %168
br label %180
180: ; preds = %179, %160
%181 = load i32, i32* %43
%182 = sext i32 %181 to i64
%183 = load i8*, i8** %3
%184 = call i64 @strlen(i8* %183)
%185 = sub i64 %184, 1
%186 = icmp eq i64 %182, %185
br i1 %186, label %187, label %191
187: ; preds = %180
%188 = load i32, i32* %42
%189 = icmp slt i32 %188, 2
br i1 %189, label %190, label %191
190: ; preds = %187
br label %197
191: ; preds = %187, %180
%192 = load i32, i32* %41
%193 = add nsw i32 %192, 1
store i32 %193, i32* %41
br label %194
194: ; preds = %191
%195 = load i32, i32* %43
%196 = add nsw i32 %195, 1
store i32 %196, i32* %43
br label %140
197: ; preds = %190, %171, %140
br label %233
198: ; preds = %135
%199 = load i32, i32* %22
%200 = icmp eq i32 %199, 1
br i1 %200, label %201, label %209
201: ; preds = %198
%202 = load i8*, i8** %3
%203 = load i32, i32* %41
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds i8, i8* %202, i64 %204
%206 = load i8, i8* %205
store i8 %206, i8* %14
%207 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%208 = call i8* @strncat(i8* %207, i8* %14, i64 1)
br label %232
209: ; preds = %198
%210 = load i32, i32* %22
%211 = icmp eq i32 %210, 2
br i1 %211, label %212, label %231
212: ; preds = %209
%213 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%214 = call i64 @strlen(i8* %213)
%215 = load i32, i32* %32
%216 = sext i32 %215 to i64
%217 = icmp ule i64 %214, %216
br i1 %217, label %218, label %226
218: ; preds = %212
%219 = load i8*, i8** %3
%220 = load i32, i32* %41
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds i8, i8* %219, i64 %221
%223 = load i8, i8* %222
store i8 %223, i8* %14
%224 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%225 = call i8* @strncat(i8* %224, i8* %14, i64 1)
br label %230
226: ; preds = %212
%227 = load i32, i32* %31
%228 = icmp eq i32 %227, 3
%229 = zext i1 %228 to i32
br label %230
230: ; preds = %226, %218
br label %231
231: ; preds = %230, %209
br label %232
232: ; preds = %231, %201
br label %233
233: ; preds = %232, %197
br label %234
234: ; preds = %233, %132
br label %235
235: ; preds = %234, %124
br label %236
236: ; preds = %235, %102
br label %237
237: ; preds = %236, %96
br label %499
238: ; preds = %90, %84, %76, %68, %60
%239 = load i32, i32* %4
%240 = icmp eq i32 %239, 2
br i1 %240, label %241, label %283
241: ; preds = %238
%242 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%243 = call i64 @strlen(i8* %242)
%244 = icmp ugt i64 %243, 0
br i1 %244, label %245, label %283
245: ; preds = %241
%246 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%247 = call i32 @strcasecmp(i8* %246, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0))
%248 = icmp eq i32 %247, 0
br i1 %248, label %249, label %251
249: ; preds = %245
store i32 3, i32* %4
store i32 0, i32* %31
%250 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
store i32 1, i32* %15
br label %282
251: ; preds = %245
%252 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%253 = call i32 @strcasecmp(i8* %252, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%254 = icmp eq i32 %253, 0
br i1 %254, label %255, label %257
255: ; preds = %251
store i32 3, i32* %4
store i32 0, i32* %31
%256 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
store i32 2, i32* %15
br label %281
257: ; preds = %251
%258 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%259 = call i32 @strcasecmp(i8* %258, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%260 = icmp eq i32 %259, 0
br i1 %260, label %261, label %263
261: ; preds = %257
store i32 3, i32* %4
store i32 0, i32* %31
%262 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
store i32 3, i32* %15
br label %280
263: ; preds = %257
%264 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%265 = call i32 @strcasecmp(i8* %264, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%266 = icmp eq i32 %265, 0
br i1 %266, label %267, label %269
267: ; preds = %263
store i32 3, i32* %4
store i32 0, i32* %31
%268 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
store i32 4, i32* %15
br label %279
269: ; preds = %263
%270 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%271 = call i32 @strcasecmp(i8* %270, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
%272 = icmp eq i32 %271, 0
br i1 %272, label %273, label %275
273: ; preds = %269
store i32 3, i32* %4
store i32 0, i32* %31
%274 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
store i32 5, i32* %15
br label %278
275: ; preds = %269
store i32 0, i32* %15
%276 = getelementptr inbounds [50 x i8], [50 x i8]* %11, i64 0, i64 0
%277 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([50 x i8], [50 x i8]* @.str.5, i64 0, i64 0), i8* %276)
store i32 -1, i32* %2
br label %530
278: ; preds = %273
br label %279
279: ; preds = %278, %267
br label %280
280: ; preds = %279, %261
br label %281
281: ; preds = %280, %255
br label %282
282: ; preds = %281, %249
br label %498
283: ; preds = %241, %238
%284 = load i32, i32* %4
%285 = icmp eq i32 %284, 3
br i1 %285, label %286, label %332
286: ; preds = %283
%287 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%288 = call i64 @strlen(i8* %287)
%289 = icmp ugt i64 %288, 0
br i1 %289, label %290, label %332
290: ; preds = %286
%291 = load i32, i32* %15
%292 = icmp eq i32 %291, 1
br i1 %292, label %293, label %331
293: ; preds = %290
%294 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%295 = call i32 @strcasecmp(i8* %294, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0))
%296 = icmp eq i32 %295, 0
br i1 %296, label %297, label %301
297: ; preds = %293
store i32 4, i32* %4
store i32 0, i32* %31
store i32 1, i32* %26
store i32 1, i32* %22
%298 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%299 = load i32, i32* %41
%300 = add nsw i32 %299, -1
store i32 %300, i32* %41
br label %330
301: ; preds = %293
%302 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%303 = call i32 @strcasecmp(i8* %302, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%304 = icmp eq i32 %303, 0
br i1 %304, label %305, label %309
305: ; preds = %301
store i32 4, i32* %4
store i32 0, i32* %31
store i32 2, i32* %26
store i32 2, i32* %22
store i32 1, i32* %32
%306 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%307 = load i32, i32* %41
%308 = add nsw i32 %307, -1
store i32 %308, i32* %41
br label %329
309: ; preds = %301
%310 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%311 = call i32 @strcasecmp(i8* %310, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0))
%312 = icmp eq i32 %311, 0
br i1 %312, label %313, label %317
313: ; preds = %309
store i32 4, i32* %4
store i32 0, i32* %31
store i32 3, i32* %26
store i32 3, i32* %22
%314 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%315 = load i32, i32* %41
%316 = add nsw i32 %315, -1
store i32 %316, i32* %41
br label %328
317: ; preds = %309
%318 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
%319 = call i32 @strcasecmp(i8* %318, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
%320 = icmp eq i32 %319, 0
br i1 %320, label %321, label %325
321: ; preds = %317
store i32 4, i32* %4
store i32 0, i32* %31
store i32 4, i32* %26
store i32 3, i32* %22
%322 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%323 = load i32, i32* %41
%324 = add nsw i32 %323, -1
store i32 %324, i32* %41
br label %327
325: ; preds = %317
%326 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.10, i64 0, i64 0))
store i32 -1, i32* %2
br label %530
327: ; preds = %321
br label %328
328: ; preds = %327, %313
br label %329
329: ; preds = %328, %305
br label %330
330: ; preds = %329, %297
br label %331
331: ; preds = %330, %290
br label %497
332: ; preds = %286, %283
%333 = load i32, i32* %4
%334 = icmp eq i32 %333, 4
br i1 %334, label %335, label %496
335: ; preds = %332
%336 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%337 = call i64 @strlen(i8* %336)
%338 = icmp ugt i64 %337, 0
br i1 %338, label %339, label %496
339: ; preds = %335
%340 = load i32, i32* %22
%341 = icmp eq i32 %340, 1
br i1 %341, label %342, label %380
342: ; preds = %339
store i32 0, i32* %44
br label %343
343: ; preds = %367, %342
%344 = load i32, i32* %44
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%347 = call i64 @strlen(i8* %346)
%348 = icmp ult i64 %345, %347
br i1 %348, label %349, label %370
349: ; preds = %343
%350 = load i32, i32* %44
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %351
%353 = load i8, i8* %352
%354 = sext i8 %353 to i32
%355 = icmp slt i32 %354, 48
br i1 %355, label %363, label %356
356: ; preds = %349
%357 = load i32, i32* %44
%358 = sext i32 %357 to i64
%359 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %358
%360 = load i8, i8* %359
%361 = sext i8 %360 to i32
%362 = icmp sgt i32 %361, 57
br i1 %362, label %363, label %366
363: ; preds = %356, %349
%364 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%365 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.11, i64 0, i64 0), i8* %364)
store i32 -1, i32* %2
br label %530
366: ; preds = %356
br label %367
367: ; preds = %366
%368 = load i32, i32* %44
%369 = add nsw i32 %368, 1
store i32 %369, i32* %44
br label %343
370: ; preds = %343
%371 = load i32, i32* %26
%372 = icmp eq i32 %371, 1
br i1 %372, label %373, label %378
373: ; preds = %370
%374 = getelementptr inbounds [500 x i8], [500 x i8]* %37, i64 0, i64 0
%375 = getelementptr inbounds [500 x i8], [500 x i8]* %37, i64 0, i64 0
%376 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%377 = call i8* @strcpy(i8* %375, i8* %376)
store i32 1, i32* %33
br label %378
378: ; preds = %373, %370
store i32 3, i32* %4
store i32 0, i32* %31
%379 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
br label %495
380: ; preds = %339
%381 = load i32, i32* %22
%382 = icmp eq i32 %381, 3
br i1 %382, label %383, label %440
383: ; preds = %380
%384 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%385 = load i8, i8* %384
%386 = sext i8 %385 to i32
%387 = icmp ne i32 %386, 34
br i1 %387, label %396, label %388
388: ; preds = %383
%389 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%390 = call i64 @strlen(i8* %389)
%391 = sub i64 %390, 1
%392 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %391
%393 = load i8, i8* %392
%394 = sext i8 %393 to i32
%395 = icmp ne i32 %394, 34
br i1 %395, label %396, label %399
396: ; preds = %388, %383
%397 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%398 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.12, i64 0, i64 0), i8* %397)
store i32 -1, i32* %2
br label %530
399: ; preds = %388
%400 = getelementptr inbounds [1000 x i8], [1000 x i8]* %45, i64 0, i64 0
store i32 0, i32* %46
br label %401
401: ; preds = %417, %399
%402 = load i32, i32* %46
%403 = sext i32 %402 to i64
%404 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%405 = call i64 @strlen(i8* %404)
%406 = sub i64 %405, 2
%407 = icmp ult i64 %403, %406
br i1 %407, label %408, label %420
408: ; preds = %401
%409 = load i32, i32* %46
%410 = add nsw i32 %409, 1
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %411
%413 = load i8, i8* %412
%414 = load i32, i32* %46
%415 = sext i32 %414 to i64
%416 = getelementptr inbounds [1000 x i8], [1000 x i8]* %45, i64 0, i64 %415
store i8 %413, i8* %416
br label %417
417: ; preds = %408
%418 = load i32, i32* %46
%419 = add nsw i32 %418, 1
store i32 %419, i32* %46
br label %401
420: ; preds = %401
%421 = load i32, i32* %26
%422 = icmp eq i32 %421, 4
br i1 %422, label %423, label %428
423: ; preds = %420
%424 = getelementptr inbounds [500 x i8], [500 x i8]* %40, i64 0, i64 0
%425 = getelementptr inbounds [500 x i8], [500 x i8]* %40, i64 0, i64 0
%426 = getelementptr inbounds [1000 x i8], [1000 x i8]* %45, i64 0, i64 0
%427 = call i8* @strcpy(i8* %425, i8* %426)
store i32 1, i32* %36
br label %437
428: ; preds = %420
%429 = load i32, i32* %26
%430 = icmp eq i32 %429, 3
br i1 %430, label %431, label %436
431: ; preds = %428
%432 = getelementptr inbounds [1000 x i8], [1000 x i8]* %39, i64 0, i64 0
%433 = getelementptr inbounds [1000 x i8], [1000 x i8]* %39, i64 0, i64 0
%434 = getelementptr inbounds [1000 x i8], [1000 x i8]* %45, i64 0, i64 0
%435 = call i8* @strcpy(i8* %433, i8* %434)
store i32 1, i32* %35
br label %436
436: ; preds = %431, %428
br label %437
437: ; preds = %436, %423
br label %438
438: ; preds = %437
store i32 3, i32* %4
store i32 0, i32* %31
%439 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
br label %494
440: ; preds = %380
%441 = load i32, i32* %22
%442 = icmp eq i32 %441, 2
br i1 %442, label %443, label %493
443: ; preds = %440
store i32 0, i32* %47
br label %444
444: ; preds = %482, %443
%445 = load i32, i32* %47
%446 = sext i32 %445 to i64
%447 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%448 = call i64 @strlen(i8* %447)
%449 = icmp ult i64 %446, %448
br i1 %449, label %450, label %485
450: ; preds = %444
%451 = load i32, i32* %47
%452 = sext i32 %451 to i64
%453 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %452
%454 = load i8, i8* %453
%455 = sext i8 %454 to i32
%456 = icmp sge i32 %455, 65
br i1 %456, label %457, label %464
457: ; preds = %450
%458 = load i32, i32* %47
%459 = sext i32 %458 to i64
%460 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %459
%461 = load i8, i8* %460
%462 = sext i8 %461 to i32
%463 = icmp sle i32 %462, 90
br i1 %463, label %481, label %464
464: ; preds = %457, %450
%465 = load i32, i32* %47
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %466
%468 = load i8, i8* %467
%469 = sext i8 %468 to i32
%470 = icmp sge i32 %469, 97
br i1 %470, label %471, label %478
471: ; preds = %464
%472 = load i32, i32* %47
%473 = sext i32 %472 to i64
%474 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 %473
%475 = load i8, i8* %474
%476 = sext i8 %475 to i32
%477 = icmp sle i32 %476, 122
br i1 %477, label %481, label %478
478: ; preds = %471, %464
%479 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%480 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.13, i64 0, i64 0), i8* %479)
store i32 -1, i32* %2
br label %530
481: ; preds = %471, %457
br label %482
482: ; preds = %481
%483 = load i32, i32* %47
%484 = add nsw i32 %483, 1
store i32 %484, i32* %47
br label %444
485: ; preds = %444
%486 = load i32, i32* %26
%487 = icmp eq i32 %486, 2
br i1 %487, label %488, label %491
488: ; preds = %485
%489 = getelementptr inbounds [1000 x i8], [1000 x i8]* %13, i64 0, i64 0
%490 = load i8, i8* %489
store i8 %490, i8* %38
store i32 1, i32* %34
br label %491
491: ; preds = %488, %485
store i32 3, i32* %4
store i32 0, i32* %31
%492 = getelementptr inbounds [50 x i8], [50 x i8]* %12, i64 0, i64 0
br label %493
493: ; preds = %491, %440
br label %494
494: ; preds = %493, %438
br label %495
495: ; preds = %494, %378
br label %496
496: ; preds = %495, %335, %332
br label %497
497: ; preds = %496, %331
br label %498
498: ; preds = %497, %282
br label %499
499: ; preds = %498, %237
br label %500
500: ; preds = %499
%501 = load i32, i32* %41
%502 = add nsw i32 %501, 1
store i32 %502, i32* %41
br label %54
503: ; preds = %54
%504 = load i32, i32* %15
%505 = icmp eq i32 %504, 1
br i1 %505, label %506, label %529
506: ; preds = %503
%507 = load i32, i32* %33
%508 = icmp eq i32 %507, 1
br i1 %508, label %509, label %527
509: ; preds = %506
%510 = load i32, i32* %35
%511 = icmp eq i32 %510, 1
br i1 %511, label %512, label %525
512: ; preds = %509
%513 = load i32, i32* %36
%514 = icmp eq i32 %513, 1
br i1 %514, label %515, label %523
515: ; preds = %512
%516 = getelementptr inbounds [500 x i8], [500 x i8]* %37, i64 0, i64 0
%517 = load i8, i8* %38
%518 = sext i8 %517 to i32
%519 = getelementptr inbounds [1000 x i8], [1000 x i8]* %39, i64 0, i64 0
%520 = getelementptr inbounds [500 x i8], [500 x i8]* %40, i64 0, i64 0
%521 = call i32 (i8*, i32, i8*, i8*, ...) bitcast (i32 (...)* @mkdisk to i32 (i8*, i32, i8*, i8*, ...)*)(i8* %516, i32 %518, i8* %519, i8* %520)
store i32 0, i32* %4
%522 = load i32, i32* %4
store i32 %522, i32* %2
br label %530
523: ; preds = %512
%524 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.14, i64 0, i64 0))
store i32 -1, i32* %2
br label %530
525: ; preds = %509
%526 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.15, i64 0, i64 0))
store i32 -1, i32* %2
br label %530
527: ; preds = %506
%528 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
store i32 -1, i32* %2
br label %530
529: ; preds = %503
store i32 0, i32* %2
br label %530
530: ; preds = %529, %527, %525, %523, %515, %478, %396, %363, %325, %275
%531 = load i32, i32* %2
ret i32 %531
}

LLVM IR (-O2):
@.str = [7 x i8] c"mkdisk\00"
@.str.1 = [7 x i8] c"rmdisk\00"
@.str.2 = [6 x i8] c"fdisk\00"
@.str.3 = [6 x i8] c"mount\00"
@.str.4 = [7 x i8] c"umount\00"
@.str.5 = [50 x i8] c"No se reconoce '%s' como un instrucci\C3\B3n valida.\0A\00"
@.str.6 = [8 x i8] c"-size::\00"
@.str.7 = [8 x i8] c"+unit::\00"
@.str.8 = [8 x i8] c"-path::\00"
@.str.9 = [8 x i8] c"-name::\00"
@.str.11 = [27 x i8] c"VALOR NUMERICO ERRONEO %s\0A\00"
@.str.12 = [28 x i8] c"VALOR DE CADENA ERRONEO %s\0A\00"
@.str.13 = [24 x i8] c"VALOR CHAR ERRONEO %s \0A\00"
@.str.16 = [28 x i8] c"Falta parametro '-size::'\0A.\00"
@str = [27 x i8] c"Falta parametro '-path::'.\00"
@str.17 = [27 x i8] c"Falta parametro '-name::'.\00"
@str.18 = [18 x i8] c"PARAMETRO ERRONEO\00"
define i32 @ejecutarComando(i8* nocapture %0) {
%2 = alloca [50 x i8]
%3 = alloca [50 x i8]
%4 = alloca [1000 x i8]
%5 = alloca i8
%6 = alloca [500 x i8]
%7 = alloca [1000 x i8]
%8 = alloca [500 x i8]
%9 = alloca [1000 x i8]
%10 = getelementptr inbounds [1000 x i8], [1000 x i8]* %9, i64 0, i64 0
%11 = getelementptr inbounds [50 x i8], [50 x i8]* %2, i64 0, i64 0
%12 = getelementptr inbounds [50 x i8], [50 x i8]* %3, i64 0, i64 0
%13 = getelementptr inbounds [1000 x i8], [1000 x i8]* %4, i64 0, i64 0
%14 = getelementptr inbounds [500 x i8], [500 x i8]* %6, i64 0, i64 0
%15 = getelementptr inbounds [1000 x i8], [1000 x i8]* %7, i64 0, i64 0
%16 = getelementptr inbounds [500 x i8], [500 x i8]* %8, i64 0, i64 0
%17 = call i64 @strlen(i8* dereferenceable(1) %0)
%18 = getelementptr inbounds [1000 x i8], [1000 x i8]* %9, i64 0, i64 0
%19 = add i64 %17, -1
%20 = getelementptr inbounds [1000 x i8], [1000 x i8]* %4, i64 0, i64 1
br label %21
21: ; preds = %1, %205
%22 = phi i64 [ 0, %1 ], [ %218, %205 ]
%23 = phi i32 [ 0, %1 ], [ %217, %205 ]
%24 = phi i8 [ 109, %1 ], [ %215, %205 ]
%25 = phi i32 [ 0, %1 ], [ %214, %205 ]
%26 = phi i32 [ 0, %1 ], [ %213, %205 ]
%27 = phi i32 [ 0, %1 ], [ %212, %205 ]
%28 = phi i32 [ 0, %1 ], [ %211, %205 ]
%29 = phi i32 [ 0, %1 ], [ %210, %205 ]
%30 = phi i32 [ 1, %1 ], [ %209, %205 ]
%31 = phi i32 [ 0, %1 ], [ %208, %205 ]
%32 = phi i32 [ 0, %1 ], [ %207, %205 ]
%33 = phi i32 [ 0, %1 ], [ %206, %205 ]
%34 = getelementptr inbounds i8, i8* %0, i64 %22
%35 = load i8, i8* %34
switch i8 %35, label %36 [
i8 32, label %82
i8 9, label %82
i8 10, label %82
]
36: ; preds = %21
%37 = icmp ne i64 %17, %22
%38 = icmp slt i32 %29, 2
%39 = select i1 %37, i1 %38, i1 false
br i1 %39, label %40, label %82
40: ; preds = %36
switch i32 %30, label %205 [
i32 1, label %41
i32 2, label %43
i32 3, label %45
i32 4, label %50
]
41: ; preds = %40
%42 = add nsw i32 %23, -1
br label %205
43: ; preds = %40
store i8 %35, i8* %5
%44 = call i8* @strncat(i8* %11, i8* %5, i64 1)
br label %205
45: ; preds = %40
%46 = icmp eq i8 %35, 58
%47 = zext i1 %46 to i32
%48 = add nsw i32 %29, %47
store i8 %35, i8* %5
%49 = call i8* @strncat(i8* %12, i8* %5, i64 1)
br label %205
50: ; preds = %40
switch i32 %32, label %205 [
i32 3, label %51
i32 1, label %74
i32 2, label %76
]
51: ; preds = %50
%52 = sext i32 %23 to i64
%53 = icmp ugt i64 %17, %52
br i1 %53, label %54, label %205
54: ; preds = %51, %71
%55 = phi i64 [ %72, %71 ], [ %52, %51 ]
%56 = phi i32 [ %61, %71 ], [ 0, %51 ]
%57 = getelementptr inbounds i8, i8* %0, i64 %55
%58 = load i8, i8* %57
%59 = icmp eq i8 %58, 34
%60 = zext i1 %59 to i32
%61 = add nuw nsw i32 %56, %60
%62 = icmp ult i32 %61, 2
br i1 %62, label %68, label %63
63: ; preds = %54
%64 = icmp eq i32 %61, 2
br i1 %64, label %65, label %71
65: ; preds = %63
%66 = trunc i64 %55 to i32
store i8 %58, i8* %5
%67 = call i8* @strncat(i8* %13, i8* %5, i64 1)
br label %205
68: ; preds = %54
store i8 %58, i8* %5
%69 = call i8* @strncat(i8* %13, i8* %5, i64 1)
%70 = icmp eq i64 %19, %55
br i1 %70, label %202, label %71
71: ; preds = %63, %68
%72 = add i64 %55, 1
%73 = icmp ugt i64 %17, %72
br i1 %73, label %54, label %202
74: ; preds = %50
store i8 %35, i8* %5
%75 = call i8* @strncat(i8* %13, i8* %5, i64 1)
br label %205
76: ; preds = %50
%77 = call i64 @strlen(i8* %13)
%78 = zext i32 %28 to i64
%79 = icmp ugt i64 %77, %78
br i1 %79, label %205, label %80
80: ; preds = %76
store i8 %35, i8* %5
%81 = call i8* @strncat(i8* %13, i8* %5, i64 1)
br label %205
82: ; preds = %21, %21, %21, %36
%83 = icmp ne i32 %30, 2
%84 = load i8, i8* %11
%85 = icmp eq i8 %84, 0
%86 = select i1 %83, i1 true, i1 %85
br i1 %86, label %109, label %87
87: ; preds = %82
%88 = call i32 @strcasecmp(i8* %11, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i64 0, i64 0))
%89 = icmp eq i32 %88, 0
br i1 %89, label %90, label %91
90: ; preds = %87
br label %205
91: ; preds = %87
%92 = call i32 @strcasecmp(i8* %11, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%93 = icmp eq i32 %92, 0
br i1 %93, label %94, label %95
94: ; preds = %91
br label %205
95: ; preds = %91
%96 = call i32 @strcasecmp(i8* %11, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0))
%97 = icmp eq i32 %96, 0
br i1 %97, label %98, label %99
98: ; preds = %95
br label %205
99: ; preds = %95
%100 = call i32 @strcasecmp(i8* %11, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%101 = icmp eq i32 %100, 0
br i1 %101, label %102, label %103
102: ; preds = %99
br label %205
103: ; preds = %99
%104 = call i32 @strcasecmp(i8* %11, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i64 0, i64 0))
%105 = icmp eq i32 %104, 0
br i1 %105, label %106, label %107
106: ; preds = %103
br label %205
107: ; preds = %103
%108 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @.str.5, i64 0, i64 0), i8* %11)
br label %237
109: ; preds = %82
%110 = icmp ne i32 %30, 3
%111 = load i8, i8* %12
%112 = icmp eq i8 %111, 0
%113 = select i1 %110, i1 true, i1 %112
br i1 %113, label %138, label %114
114: ; preds = %109
%115 = icmp eq i32 %31, 1
br i1 %115, label %116, label %205
116: ; preds = %114
%117 = call i32 @strcasecmp(i8* %12, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0))
%118 = icmp eq i32 %117, 0
br i1 %118, label %119, label %121
119: ; preds = %116
%120 = add nsw i32 %23, -1
br label %205
121: ; preds = %116
%122 = call i32 @strcasecmp(i8* %12, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%123 = icmp eq i32 %122, 0
br i1 %123, label %124, label %126
124: ; preds = %121
%125 = add nsw i32 %23, -1
br label %205
126: ; preds = %121
%127 = call i32 @strcasecmp(i8* %12, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0))
%128 = icmp eq i32 %127, 0
br i1 %128, label %129, label %131
129: ; preds = %126
%130 = add nsw i32 %23, -1
br label %205
131: ; preds = %126
%132 = call i32 @strcasecmp(i8* %12, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
%133 = icmp eq i32 %132, 0
br i1 %133, label %134, label %136
134: ; preds = %131
%135 = add nsw i32 %23, -1
br label %205
136: ; preds = %131
%137 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.18, i64 0, i64 0))
br label %237
138: ; preds = %109
%139 = icmp eq i32 %30, 4
br i1 %139, label %140, label %205
140: ; preds = %138
%141 = call i64 @strlen(i8* %13)
%142 = icmp eq i64 %141, 0
br i1 %142, label %205, label %143
143: ; preds = %140
switch i32 %32, label %205 [
i32 1, label %146
i32 3, label %161
i32 2, label %188
]
144: ; preds = %146
%145 = icmp eq i64 %152, %141
br i1 %145, label %155, label %146
146: ; preds = %143, %144
%147 = phi i64 [ %152, %144 ], [ 0, %143 ]
%148 = getelementptr inbounds [1000 x i8], [1000 x i8]* %4, i64 0, i64 %147
%149 = load i8, i8* %148
%150 = add i8 %149, -58
%151 = icmp ult i8 %150, -10
%152 = add nuw i64 %147, 1
br i1 %151, label %153, label %144
153: ; preds = %146
%154 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.11, i64 0, i64 0), i8* %13)
br label %237
155: ; preds = %144
%156 = icmp eq i32 %33, 1
br i1 %156, label %157, label %159
157: ; preds = %155
%158 = call i8* @strcpy(i8* %14, i8* %13)
br label %159
159: ; preds = %157, %155
%160 = phi i32 [ 1, %157 ], [ %27, %155 ]
br label %205
161: ; preds = %143
%162 = load i8, i8* %13
%163 = icmp eq i8 %162, 34
br i1 %163, label %164, label %169
164: ; preds = %161
%165 = add i64 %141, -1
%166 = getelementptr inbounds [1000 x i8], [1000 x i8]* %4, i64 0, i64 %165
%167 = load i8, i8* %166
%168 = icmp eq i8 %167, 34
br i1 %168, label %171, label %169
169: ; preds = %164, %161
%170 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.12, i64 0, i64 0), i8* %13)
br label %237
171: ; preds = %164
%172 = add i64 %141, -2
%173 = icmp eq i64 %172, 0
br i1 %173, label %175, label %174
174: ; preds = %171
br label %175
175: ; preds = %174, %171
switch i32 %33, label %183 [
i32 4, label %176
i32 3, label %177
]
176: ; preds = %175
br label %178
177: ; preds = %175
br label %178
178: ; preds = %176, %177
%179 = phi i8* [ %15, %177 ], [ %16, %176 ]
%180 = phi i32 [ 1, %177 ], [ %26, %176 ]
%181 = phi i32 [ %25, %177 ], [ 1, %176 ]
%182 = call i8* @strcpy(i8* %179, i8* %18)
br label %183
183: ; preds = %178, %175
%184 = phi i32 [ %26, %175 ], [ %180, %178 ]
%185 = phi i32 [ %25, %175 ], [ %181, %178 ]
br label %205
186: ; preds = %188
%187 = icmp eq i64 %195, %141
br i1 %187, label %198, label %188
188: ; preds = %143, %186
%189 = phi i64 [ %195, %186 ], [ 0, %143 ]
%190 = getelementptr inbounds [1000 x i8], [1000 x i8]* %4, i64 0, i64 %189
%191 = load i8, i8* %190
%192 = and i8 %191, -33
%193 = add i8 %192, -65
%194 = icmp ult i8 %193, 26
%195 = add nuw i64 %189, 1
br i1 %194, label %186, label %196
196: ; preds = %188
%197 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.13, i64 0, i64 0), i8* %13)
br label %237
198: ; preds = %186
%199 = icmp eq i32 %33, 2
%200 = load i8, i8* %13
%201 = select i1 %199, i8 %200, i8 %24
br label %205
202: ; preds = %68, %71
%203 = phi i64 [ %72, %71 ], [ %55, %68 ]
%204 = trunc i64 %203 to i32
br label %205
205: ; preds = %202, %51, %143, %76, %50, %65, %40, %43, %74, %80, %45, %41, %119, %129, %134, %124, %114, %159, %198, %183, %140, %138, %90, %98, %106, %102, %94
%206 = phi i32 [ %33, %41 ], [ %33, %43 ], [ %33, %45 ], [ %33, %74 ], [ %33, %80 ], [ %33, %90 ], [ %33, %94 ], [ %33, %98 ], [ %33, %102 ], [ %33, %106 ], [ 1, %119 ], [ 2, %124 ], [ 3, %129 ], [ 4, %134 ], [ %33, %114 ], [ %33, %159 ], [ %33, %183 ], [ %33, %198 ], [ %33, %140 ], [ %33, %138 ], [ %33, %40 ], [ %33, %65 ], [ %33, %50 ], [ %33, %76 ], [ %33, %143 ], [ %33, %51 ], [ %33, %202 ]
%207 = phi i32 [ %32, %41 ], [ %32, %43 ], [ %32, %45 ], [ 1, %74 ], [ 2, %80 ], [ %32, %90 ], [ %32, %94 ], [ %32, %98 ], [ %32, %102 ], [ %32, %106 ], [ 1, %119 ], [ 2, %124 ], [ 3, %129 ], [ 3, %134 ], [ %32, %114 ], [ 1, %159 ], [ 3, %183 ], [ 2, %198 ], [ %32, %140 ], [ %32, %138 ], [ %32, %40 ], [ 3, %65 ], [ %32, %50 ], [ 2, %76 ], [ %32, %143 ], [ 3, %51 ], [ 3, %202 ]
%208 = phi i32 [ %31, %41 ], [ %31, %43 ], [ %31, %45 ], [ %31, %74 ], [ %31, %80 ], [ 1, %90 ], [ 2, %94 ], [ 3, %98 ], [ 4, %102 ], [ 5, %106 ], [ 1, %119 ], [ 1, %124 ], [ 1, %129 ], [ 1, %134 ], [ %31, %114 ], [ %31, %159 ], [ %31, %183 ], [ %31, %198 ], [ %31, %140 ], [ %31, %138 ], [ %31, %40 ], [ %31, %65 ], [ %31, %50 ], [ %31, %76 ], [ %31, %143 ], [ %31, %51 ], [ %31, %202 ]
%209 = phi i32 [ 2, %41 ], [ 2, %43 ], [ 3, %45 ], [ 4, %74 ], [ 4, %80 ], [ 3, %90 ], [ 3, %94 ], [ 3, %98 ], [ 3, %102 ], [ 3, %106 ], [ 4, %119 ], [ 4, %124 ], [ 4, %129 ], [ 4, %134 ], [ 3, %114 ], [ 3, %159 ], [ 3, %183 ], [ 3, %198 ], [ 4, %140 ], [ %30, %138 ], [ %30, %40 ], [ 4, %65 ], [ 4, %50 ], [ 4, %76 ], [ 4, %143 ], [ 4, %51 ], [ 4, %202 ]
%210 = phi i32 [ %29, %41 ], [ %29, %43 ], [ %48, %45 ], [ %29, %74 ], [ %29, %80 ], [ 0, %90 ], [ 0, %94 ], [ 0, %98 ], [ 0, %102 ], [ 0, %106 ], [ 0, %119 ], [ 0, %124 ], [ 0, %129 ], [ 0, %134 ], [ %29, %114 ], [ 0, %159 ], [ 0, %183 ], [ 0, %198 ], [ %29, %140 ], [ %29, %138 ], [ %29, %40 ], [ %29, %65 ], [ %29, %50 ], [ %29, %76 ], [ %29, %143 ], [ %29, %51 ], [ %29, %202 ]
%211 = phi i32 [ %28, %41 ], [ %28, %43 ], [ %28, %45 ], [ %28, %74 ], [ %28, %80 ], [ %28, %90 ], [ %28, %94 ], [ %28, %98 ], [ %28, %102 ], [ %28, %106 ], [ %28, %119 ], [ 1, %124 ], [ %28, %129 ], [ %28, %134 ], [ %28, %114 ], [ %28, %159 ], [ %28, %183 ], [ %28, %198 ], [ %28, %140 ], [ %28, %138 ], [ %28, %40 ], [ %28, %65 ], [ %28, %50 ], [ %28, %76 ], [ %28, %143 ], [ %28, %51 ], [ %28, %202 ]
%212 = phi i32 [ %27, %41 ], [ %27, %43 ], [ %27, %45 ], [ %27, %74 ], [ %27, %80 ], [ %27, %90 ], [ %27, %94 ], [ %27, %98 ], [ %27, %102 ], [ %27, %106 ], [ %27, %119 ], [ %27, %124 ], [ %27, %129 ], [ %27, %134 ], [ %27, %114 ], [ %160, %159 ], [ %27, %183 ], [ %27, %198 ], [ %27, %140 ], [ %27, %138 ], [ %27, %40 ], [ %27, %65 ], [ %27, %50 ], [ %27, %76 ], [ %27, %143 ], [ %27, %51 ], [ %27, %202 ]
%213 = phi i32 [ %26, %41 ], [ %26, %43 ], [ %26, %45 ], [ %26, %74 ], [ %26, %80 ], [ %26, %90 ], [ %26, %94 ], [ %26, %98 ], [ %26, %102 ], [ %26, %106 ], [ %26, %119 ], [ %26, %124 ], [ %26, %129 ], [ %26, %134 ], [ %26, %114 ], [ %26, %159 ], [ %184, %183 ], [ %26, %198 ], [ %26, %140 ], [ %26, %138 ], [ %26, %40 ], [ %26, %65 ], [ %26, %50 ], [ %26, %76 ], [ %26, %143 ], [ %26, %51 ], [ %26, %202 ]
%214 = phi i32 [ %25, %41 ], [ %25, %43 ], [ %25, %45 ], [ %25, %74 ], [ %25, %80 ], [ %25, %90 ], [ %25, %94 ], [ %25, %98 ], [ %25, %102 ], [ %25, %106 ], [ %25, %119 ], [ %25, %124 ], [ %25, %129 ], [ %25, %134 ], [ %25, %114 ], [ %25, %159 ], [ %185, %183 ], [ %25, %198 ], [ %25, %140 ], [ %25, %138 ], [ %25, %40 ], [ %25, %65 ], [ %25, %50 ], [ %25, %76 ], [ %25, %143 ], [ %25, %51 ], [ %25, %202 ]
%215 = phi i8 [ %24, %41 ], [ %24, %43 ], [ %24, %45 ], [ %24, %74 ], [ %24, %80 ], [ %24, %90 ], [ %24, %94 ], [ %24, %98 ], [ %24, %102 ], [ %24, %106 ], [ %24, %119 ], [ %24, %124 ], [ %24, %129 ], [ %24, %134 ], [ %24, %114 ], [ %24, %159 ], [ %24, %183 ], [ %201, %198 ], [ %24, %140 ], [ %24, %138 ], [ %24, %40 ], [ %24, %65 ], [ %24, %50 ], [ %24, %76 ], [ %24, %143 ], [ %24, %51 ], [ %24, %202 ]
%216 = phi i32 [ %42, %41 ], [ %23, %43 ], [ %23, %45 ], [ %23, %74 ], [ %23, %80 ], [ %23, %90 ], [ %23, %94 ], [ %23, %98 ], [ %23, %102 ], [ %23, %106 ], [ %120, %119 ], [ %125, %124 ], [ %130, %129 ], [ %135, %134 ], [ %23, %114 ], [ %23, %159 ], [ %23, %183 ], [ %23, %198 ], [ %23, %140 ], [ %23, %138 ], [ %23, %40 ], [ %66, %65 ], [ %23, %50 ], [ %23, %76 ], [ %23, %143 ], [ %23, %51 ], [ %204, %202 ]
%217 = add nsw i32 %216, 1
%218 = sext i32 %217 to i64
%219 = icmp ult i64 %17, %218
br i1 %219, label %220, label %21
220: ; preds = %205
%221 = icmp eq i32 %208, 1
br i1 %221, label %222, label %237
222: ; preds = %220
%223 = icmp eq i32 %212, 1
br i1 %223, label %224, label %235
224: ; preds = %222
%225 = icmp eq i32 %213, 1
br i1 %225, label %226, label %233
226: ; preds = %224
%227 = icmp eq i32 %214, 1
br i1 %227, label %228, label %231
228: ; preds = %226
%229 = sext i8 %215 to i32
%230 = call i32 (i8*, i32, i8*, i8*, ...) bitcast (i32 (...)* @mkdisk to i32 (i8*, i32, i8*, i8*, ...)*)(i8* %14, i32 %229, i8* %15, i8* %16)
br label %237
231: ; preds = %226
%232 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str.17, i64 0, i64 0))
br label %237
233: ; preds = %224
%234 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @str, i64 0, i64 0))
br label %237
235: ; preds = %222
%236 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str.16, i64 0, i64 0))
br label %237
237: ; preds = %196, %153, %169, %136, %107, %220, %235, %233, %231, %228
%238 = phi i32 [ 0, %228 ], [ -1, %231 ], [ -1, %233 ], [ -1, %235 ], [ 0, %220 ], [ -1, %107 ], [ -1, %136 ], [ -1, %169 ], [ -1, %153 ], [ -1, %196 ]
ret i32 %238
}