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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ free(char **);
char **malloc(int);
int /*<<< orphan*/ printf(char *, ...);
int redis_do(char *, char, unsigned int, unsigned int, char **,
             int /*<<< orphan*/ *, int /*<<< orphan*/ *);
int /*<<< orphan*/ stderr;
scalar_t__ strcmp(char *, char *);
int strlen(char *);
scalar_t__ strncmp(char *, char *, int);
int redis_cmd(int argc, char **argv) {
  unsigned int item = 1, flags = 0, items = argc - 1;
  if (items > 0)
    for (; item < argc; items--) {
      if (strncmp(argv[item], "-env", 4) == 0) {
        item++;
        flags |= 1;
      } else if (strncmp(argv[item], "-show", 5) == 0) {
        item++;
        flags |= 2;
      } else if (strncmp(argv[item], "-keysonly", 9) == 0) {
        item++;
        flags |= 8;
      } else if (strncmp(argv[item], "-keys", 5) == 0) {
        item++;
        flags |= 4;
      } else
        break;
    }
  if (items < 1) {
    printf("Missing command!\nUse %s CMD [options] [query]\n", argv[0]);
    printf("- hget	  [options] HASH [[field [field...]]\n");
    printf("- hset	  [options] HASH [[field value [field value...]]\n");
    printf("- hdel	  [options] HASH [field]\n");
    printf("- del 	  [options] ITEM\n");
    printf("- publish [options] QUEUE ITEM\n");
    return (1);
  }
  char *cmd = argv[item];
  items--;
  item++;
  if (strcmp("hget", cmd) == 0) {
    if (items < 1) {
      printf("You at least need to give a hash!\n");
      return (1);
    }
    if (!(1 & flags))
      flags |= 2;
    if (items < 2)
      return (redis_do("HGETALL", '*', 128 | flags, items, &argv[item], NULL,
                       NULL));
    if (items > 2)
      return (redis_do("HMGET", '*', flags, items, &argv[item], NULL, NULL));
    return (redis_do("HGET", '$', flags, items, &argv[item], NULL, NULL));
  }
  if (strcmp("hset", cmd) == 0) {
    if (items < 3) {
      printf("Missing hash/key/value's\n");
      return (1);
    }
    unsigned int center = (items / 2);
    if (strncmp(argv[item + center], "-vals", 5) == 0) {
      int rc;
      unsigned int valc = 0;
      char **vals;
      if ((vals = malloc((sizeof(void *) * items) + sizeof(void *))) == NULL)
        return (-1);
      vals[valc++] = argv[item];
      for (int i = 1; i < center; i++) {
        if (argv[item + i][strlen(argv[item + i]) - 1] == ',')
          argv[item + i][strlen(argv[item + i]) - 1] = 0;
        if (argv[center + item + i][strlen(argv[center + item + i]) - 1] == ',')
          argv[center + item + i][strlen(argv[center + item + i]) - 1] = 0;
        if (argv[item + i][strlen(argv[item + i]) - 1] == '\'')
          argv[item + i][strlen(argv[item + i]) - 1] = 0;
        if (argv[center + item + i][strlen(argv[center + item + i]) - 1] ==
            '\'')
          argv[center + item + i][strlen(argv[center + item + i]) - 1] = 0;
        if (argv[item + i][0] == '\'')
          vals[valc++] = &argv[item + i][1];
        else
          vals[valc++] = argv[item + i];
        if (argv[item + i + center][0] == '\'')
          vals[valc++] = &argv[item + i + center][1];
        else
          vals[valc++] = argv[item + i + center];
      }
      if (center > 2)
        rc = redis_do("HMSET", '+', flags, valc, vals, NULL, NULL);
      else
        rc = redis_do("HSET", ':', flags, valc, vals, NULL, NULL);
      free(vals);
      return (rc);
    }
    if (items > 4)
      return (redis_do("HMSET", '+', flags, items, &argv[item], NULL, NULL));
    return (redis_do("HSET", ':', flags, items, &argv[item], NULL, NULL));
  }
  if (strcmp("hdel", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"hash key\"");
      return (1);
    }
    return (redis_do("HDEL", ':', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("del", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"item\"");
      return (1);
    }
    return (redis_do("DEL", ':', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("lpush", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"list item\"");
      return (1);
    }
    return (redis_do("LPUSH", ':', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("rpush", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"list item\"");
      return (1);
    }
    return (redis_do("RPUSH", ':', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("lpop", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"list\"");
      return (1);
    }
    return (redis_do("LPOP", '$', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("rpop", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"list\"");
      return (1);
    }
    return (redis_do("RPOP", '$', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("exists", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"item\"");
      return (1);
    }
    return (
        redis_do("EXISTS", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  if (strcmp("hexists", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"hash key\"");
      return (1);
    }
    return (
        redis_do("HEXISTS", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  if (strcmp("ttl", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"item\"");
      return (1);
    }
    return (redis_do("TTL", ':', flags | 36, items, &argv[item], NULL, NULL));
  };
  if (strcmp("expire", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"item timeout\"");
      return (1);
    }
    return (
        redis_do("EXPIRE", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  if (strcmp("publish", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"channel data\"");
      return (1);
    }
    return (
        redis_do("PUBLISH", ':', flags | 48, items, &argv[item], NULL, NULL));
  };
  if (strcmp("ltrim", cmd) == 0) {
    if (items < 3) {
      printf("format: %s %s\n", argv[0], "\"list from to\"");
      return (1);
    }
    return (redis_do("LTRIM", '+', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("lindex", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"list index\"");
      return (1);
    }
    return (redis_do("LINDEX", '$', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("llen", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"list\"");
      return (1);
    }
    return (redis_do("LLEN", ':', flags | 36, items, &argv[item], NULL, NULL));
  };
  if (strcmp("sadd", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"set item\"");
      return (1);
    }
    return (redis_do("SADD", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  if (strcmp("sdel", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"set item\"");
      return (1);
    }
    return (redis_do("SREM", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  if (strcmp("sexists", cmd) == 0) {
    if (items < 2) {
      printf("format: %s %s\n", argv[0], "\"set item\"");
      return (1);
    }
    return (
        redis_do("SISMEMBER", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  if (strcmp("sget", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"set\"");
      return (1);
    }
    return (
        redis_do("SMEMBERS", '*', flags | 0, items, &argv[item], NULL, NULL));
  };
  if (strcmp("slen", cmd) == 0) {
    if (items < 1) {
      printf("format: %s %s\n", argv[0], "\"set\"");
      return (1);
    }
    return (redis_do("SCARD", ':', flags | 36, items, &argv[item], NULL, NULL));
  };
  if (strcmp("smove", cmd) == 0) {
    if (items < 3) {
      printf("format: %s %s\n", argv[0], "\"from-set to-set item\"");
      return (1);
    }
    return (redis_do("SMOVE", ':', flags | 32, items, &argv[item], NULL, NULL));
  };
  fprintf(stderr, "Invalid redis command\n");
  return (1);
}


x86 assembly (clang, -O0):
<redis_cmd>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x1,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jbe    12e4 <redis_cmd+0x164>
jmp    11b8 <redis_cmd+0x38>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jae    12df <redis_cmd+0x15f>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    (%rax,%rcx,8),%rdi
lea    0x1e2a(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    1201 <redis_cmd+0x81>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%eax
or     $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    12cc <redis_cmd+0x14c>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    (%rax,%rcx,8),%rdi
lea    0x1df2(%rip),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    123e <redis_cmd+0xbe>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%eax
or     $0x2,%eax
mov    %eax,-0x18(%rbp)
jmp    12c7 <redis_cmd+0x147>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    (%rax,%rcx,8),%rdi
lea    0x1dbb(%rip),%rsi
mov    $0x9,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    127b <redis_cmd+0xfb>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%eax
or     $0x8,%eax
mov    %eax,-0x18(%rbp)
jmp    12c2 <redis_cmd+0x142>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    (%rax,%rcx,8),%rdi
lea    0x1d88(%rip),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    12b8 <redis_cmd+0x138>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%eax
or     $0x4,%eax
mov    %eax,-0x18(%rbp)
jmp    12bd <redis_cmd+0x13d>
jmp    12df <redis_cmd+0x15f>
jmp    12c2 <redis_cmd+0x142>
jmp    12c7 <redis_cmd+0x147>
jmp    12cc <redis_cmd+0x14c>
jmp    12d1 <redis_cmd+0x151>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    11b8 <redis_cmd+0x38>
jmp    12e4 <redis_cmd+0x164>
cmpl   $0x1,-0x1c(%rbp)
jae    1355 <redis_cmd+0x1d5>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1d1f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d40(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d5f(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d8a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1d9d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0x1da8(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x28(%rbp),%rsi
lea    0x1d89(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1494 <redis_cmd+0x314>
cmpl   $0x1,-0x1c(%rbp)
jae    13b4 <redis_cmd+0x234>
lea    0x1d6e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
jne    13cc <redis_cmd+0x24c>
mov    -0x18(%rbp),%eax
or     $0x2,%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x2,-0x1c(%rbp)
jae    1416 <redis_cmd+0x296>
mov    -0x18(%rbp),%edx
or     $0x80,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1d3b(%rip),%rdi
mov    $0x2a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
cmpl   $0x2,-0x1c(%rbp)
jbe    145a <redis_cmd+0x2da>
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1cff(%rip),%rdi
mov    $0x2a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1ccb(%rip),%rdi
mov    $0x24,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1ca6(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1967 <redis_cmd+0x7e7>
cmpl   $0x3,-0x1c(%rbp)
jae    14d2 <redis_cmd+0x352>
lea    0x1c8b(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x1c(%rbp),%eax
shr    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x2c(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
lea    0x1c72(%rip),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    18e9 <redis_cmd+0x769>
movl   $0x0,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
shl    $0x3,%rax
add    $0x8,%rax
mov    %eax,%edi
call   1090 <malloc@plt>
mov    %rax,-0x40(%rbp)
cmp    $0x0,%rax
jne    1539 <redis_cmd+0x3b9>
movl   $0xffffffff,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
mov    (%rax,%rcx,8),%rdx
mov    -0x40(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x34(%rbp)
mov    %ecx,%ecx
mov    %rdx,(%rax,%rcx,8)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jae    1870 <redis_cmd+0x6f0>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x50(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jne    15e7 <redis_cmd+0x467>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x60(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2c,%eax
jne    166e <redis_cmd+0x4ee>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x68(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x68(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x70(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x70(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    16e9 <redis_cmd+0x569>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x78(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x78(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x80(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    1776 <redis_cmd+0x5f6>
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x88(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdi
call   1050 <strlen@plt>
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
sub    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
movsbl (%rax),%eax
cmp    $0x27,%eax
jne    17c0 <redis_cmd+0x640>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdx
add    $0x1,%rdx
mov    -0x40(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x34(%rbp)
mov    %ecx,%ecx
mov    %rdx,(%rax,%rcx,8)
jmp    17e5 <redis_cmd+0x665>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdx
mov    -0x40(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x34(%rbp)
mov    %ecx,%ecx
mov    %rdx,(%rax,%rcx,8)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    -0x2c(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rax
movsbl (%rax),%eax
cmp    $0x27,%eax
jne    1835 <redis_cmd+0x6b5>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    -0x2c(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdx
add    $0x1,%rdx
mov    -0x40(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x34(%rbp)
mov    %ecx,%ecx
mov    %rdx,(%rax,%rcx,8)
jmp    185d <redis_cmd+0x6dd>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    -0x2c(%rbp),%ecx
mov    %ecx,%ecx
mov    (%rax,%rcx,8),%rdx
mov    -0x40(%rbp),%rax
mov    -0x34(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x34(%rbp)
mov    %ecx,%ecx
mov    %rdx,(%rax,%rcx,8)
jmp    1862 <redis_cmd+0x6e2>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1560 <redis_cmd+0x3e0>
cmpl   $0x2,-0x2c(%rbp)
jbe    18aa <redis_cmd+0x72a>
mov    -0x18(%rbp),%edx
mov    -0x34(%rbp),%ecx
mov    -0x40(%rbp),%r8
lea    0x18df(%rip),%rdi
mov    $0x2b,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x30(%rbp)
jmp    18d5 <redis_cmd+0x755>
mov    -0x18(%rbp),%edx
mov    -0x34(%rbp),%ecx
mov    -0x40(%rbp),%r8
lea    0x18b5(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x30(%rbp)
mov    -0x40(%rbp),%rdi
call   1030 <free@plt>
mov    -0x30(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
cmpl   $0x4,-0x1c(%rbp)
jbe    192d <redis_cmd+0x7ad>
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x185c(%rip),%rdi
mov    $0x2b,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1828(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1803(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    19f0 <redis_cmd+0x870>
cmpl   $0x2,-0x1c(%rbp)
jae    19b3 <redis_cmd+0x833>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x17e1(%rip),%rdi
lea    0x17e9(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x17c3(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x177b(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1a79 <redis_cmd+0x8f9>
cmpl   $0x1,-0x1c(%rbp)
jae    1a3c <redis_cmd+0x8bc>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1758(%rip),%rdi
lea    0x1770(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x173b(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x171c(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1b02 <redis_cmd+0x982>
cmpl   $0x2,-0x1c(%rbp)
jae    1ac5 <redis_cmd+0x945>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x16cf(%rip),%rdi
lea    0x16f4(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x16cf(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x16ab(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1b8b <redis_cmd+0xa0b>
cmpl   $0x2,-0x1c(%rbp)
jae    1b4e <redis_cmd+0x9ce>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1646(%rip),%rdi
lea    0x166b(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1652(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x162e(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1c14 <redis_cmd+0xa94>
cmpl   $0x1,-0x1c(%rbp)
jae    1bd7 <redis_cmd+0xa57>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x15bd(%rip),%rdi
lea    0x1605(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x15db(%rip),%rdi
mov    $0x24,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x15b6(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1c9d <redis_cmd+0xb1d>
cmpl   $0x1,-0x1c(%rbp)
jae    1c60 <redis_cmd+0xae0>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1534(%rip),%rdi
lea    0x157c(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x155c(%rip),%rdi
mov    $0x24,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1538(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1d26 <redis_cmd+0xba6>
cmpl   $0x1,-0x1c(%rbp)
jae    1ce9 <redis_cmd+0xb69>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x14ab(%rip),%rdi
lea    0x14c3(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x14e1(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x14ae(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1daf <redis_cmd+0xc2f>
cmpl   $0x2,-0x1c(%rbp)
jae    1d72 <redis_cmd+0xbf2>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1422(%rip),%rdi
lea    0x142a(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1457(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1435(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1e38 <redis_cmd+0xcb8>
cmpl   $0x1,-0x1c(%rbp)
jae    1dfb <redis_cmd+0xc7b>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1399(%rip),%rdi
lea    0x13b1(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x24,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x13da(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x13b4(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1ec1 <redis_cmd+0xd41>
cmpl   $0x2,-0x1c(%rbp)
jae    1e84 <redis_cmd+0xd04>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1310(%rip),%rdi
lea    0x138d(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x136b(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1348(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1f4a <redis_cmd+0xdca>
cmpl   $0x2,-0x1c(%rbp)
jae    1f0d <redis_cmd+0xd8d>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1287(%rip),%rdi
lea    0x1322(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x30,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1300(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x12de(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    1fd3 <redis_cmd+0xe53>
cmpl   $0x3,-0x1c(%rbp)
jae    1f96 <redis_cmd+0xe16>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x11fe(%rip),%rdi
lea    0x12b6(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1294(%rip),%rdi
mov    $0x2b,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1270(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    205c <redis_cmd+0xedc>
cmpl   $0x2,-0x1c(%rbp)
jae    201f <redis_cmd+0xe9f>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1175(%rip),%rdi
lea    0x1249(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1225(%rip),%rdi
mov    $0x24,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1202(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    20e5 <redis_cmd+0xf65>
cmpl   $0x1,-0x1c(%rbp)
jae    20a8 <redis_cmd+0xf28>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x10ec(%rip),%rdi
lea    0x1134(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x24,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x11a8(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1183(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    216e <redis_cmd+0xfee>
cmpl   $0x2,-0x1c(%rbp)
jae    2131 <redis_cmd+0xfb1>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0x1063(%rip),%rdi
lea    0x115a(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1134(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x110f(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    21f7 <redis_cmd+0x1077>
cmpl   $0x2,-0x1c(%rbp)
jae    21ba <redis_cmd+0x103a>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xfda(%rip),%rdi
lea    0x10d1(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x10b5(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1090(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    2280 <redis_cmd+0x1100>
cmpl   $0x2,-0x1c(%rbp)
jae    2243 <redis_cmd+0x10c3>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xf51(%rip),%rdi
lea    0x1048(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0x1039(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0x1019(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    2309 <redis_cmd+0x1189>
cmpl   $0x1,-0x1c(%rbp)
jae    22cc <redis_cmd+0x114c>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xec8(%rip),%rdi
lea    0xff0(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x0,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0xfc5(%rip),%rdi
mov    $0x2a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0xfa4(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    2392 <redis_cmd+0x1212>
cmpl   $0x1,-0x1c(%rbp)
jae    2355 <redis_cmd+0x11d5>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xe3f(%rip),%rdi
lea    0xf67(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x24,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0xf4a(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x28(%rbp),%rsi
lea    0xf26(%rip),%rdi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    241b <redis_cmd+0x129b>
cmpl   $0x3,-0x1c(%rbp)
jae    23de <redis_cmd+0x125e>
mov    -0x10(%rbp),%rax
mov    (%rax),%rsi
lea    0xdb6(%rip),%rdi
lea    0xefe(%rip),%rdx
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    -0x18(%rbp),%edx
or     $0x20,%edx
mov    -0x1c(%rbp),%ecx
mov    -0x10(%rbp),%r8
mov    -0x14(%rbp),%eax
shl    $0x3,%rax
add    %rax,%r8
lea    0xee4(%rip),%rdi
mov    $0x3a,%esi
xor    %eax,%eax
mov    %eax,%r9d
movq   $0x0,(%rsp)
call   10a0 <redis_do@plt>
mov    %eax,-0x4(%rbp)
jmp    2437 <redis_cmd+0x12b7>
mov    0x2bbe(%rip),%rax
mov    (%rax),%edi
lea    0xebb(%rip),%rsi
call   1080 <fprintf@plt>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<redis_cmd>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rsi,%r15
mov    %edi,%r13d
add    $0xffffffff,%r13d
je     1522 <redis_cmd+0x392>
cmp    $0x2,%edi
jb     1274 <redis_cmd+0xe4>
mov    %edi,%r13d
xor    %ebx,%ebx
mov    $0x1,%ebp
lea    0xe38(%rip),%r14
lea    0xe36(%rip),%r12
jmp    11f4 <redis_cmd+0x64>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    $0x1,%ecx
or     %ecx,%ebx
add    $0x1,%rbp
cmp    %rbp,%r13
je     1522 <redis_cmd+0x392>
mov    (%r15,%rbp,8),%rdi
mov    %r14,%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     11e0 <redis_cmd+0x50>
mov    (%r15,%rbp,8),%rdi
mov    %r12,%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1260 <redis_cmd+0xd0>
mov    (%r15,%rbp,8),%rdi
lea    0xde0(%rip),%rsi
mov    $0x9,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     126a <redis_cmd+0xda>
mov    (%r15,%rbp,8),%rdi
lea    0xdd0(%rip),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
mov    $0x4,%ecx
test   %rax,%rax
je     11e5 <redis_cmd+0x55>
jmp    1516 <redis_cmd+0x386>
xchg   %ax,%ax
mov    $0x2,%ecx
jmp    11e5 <redis_cmd+0x55>
mov    $0x8,%ecx
jmp    11e5 <redis_cmd+0x55>
mov    $0x1,%ebp
xor    %ebx,%ebx
test   %r13d,%r13d
je     1522 <redis_cmd+0x392>
mov    %ebp,%eax
mov    (%r15,%rax,8),%r12
lea    -0x1(%r13),%r14d
lea    0x1(%rbp),%eax
mov    %rax,0x8(%rsp)
lea    0xdad(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     14c0 <redis_cmd+0x330>
lea    0xdad(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1585 <redis_cmd+0x3f5>
lea    0xdab(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1594 <redis_cmd+0x404>
lea    0xd94(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1614 <redis_cmd+0x484>
lea    0xda6(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     16a4 <redis_cmd+0x514>
lea    0xda6(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1846 <redis_cmd+0x6b6>
lea    0xd9a(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1862 <redis_cmd+0x6d2>
lea    0xd93(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     18ac <redis_cmd+0x71c>
lea    0xd86(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     193a <redis_cmd+0x7aa>
lea    0xd6d(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1963 <redis_cmd+0x7d3>
lea    0xd65(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1991 <redis_cmd+0x801>
lea    0xd55(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     19d0 <redis_cmd+0x840>
lea    0xd5a(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     19ec <redis_cmd+0x85c>
lea    0xd61(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1a2c <redis_cmd+0x89c>
lea    0xd64(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1a6c <redis_cmd+0x8dc>
lea    0xd67(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1aa1 <redis_cmd+0x911>
lea    0xd59(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1b03 <redis_cmd+0x973>
lea    0xd56(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1b32 <redis_cmd+0x9a2>
lea    0xd48(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1b5c <redis_cmd+0x9cc>
lea    0xd42(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1b78 <redis_cmd+0x9e8>
lea    0xd3e(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1bc2 <redis_cmd+0xa32>
lea    0xd31(%rip),%rdi
mov    %r12,%rsi
call   1080 <strcmp@plt>
test   %rax,%rax
je     1c01 <redis_cmd+0xa71>
mov    0x2b33(%rip),%rax
mov    (%rax),%edi
lea    0xd33(%rip),%rsi
call   1090 <fprintf@plt>
jmp    156f <redis_cmd+0x3df>
test   %r14d,%r14d
je     15b4 <redis_cmd+0x424>
lea    (%rbx,%rbx,1),%edx
not    %edx
and    $0x2,%edx
or     %ebx,%edx
cmp    $0x3,%r13d
je     163e <redis_cmd+0x4ae>
cmp    $0x2,%r13d
mov    0x8(%rsp),%rax
jne    1664 <redis_cmd+0x4d4>
or     $0x80,%edx
mov    %eax,%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0xb48(%rip),%rdi
mov    $0x2a,%esi
mov    $0x1,%ecx
jmp    18d6 <redis_cmd+0x746>
sub    %ebp,%r13d
test   %r13d,%r13d
jne    1284 <redis_cmd+0xf4>
mov    (%r15),%rsi
lea    0xaef(%rip),%rdi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xd01(%rip),%rdi
call   1050 <puts@plt>
lea    0xd21(%rip),%rdi
call   1050 <puts@plt>
lea    0xd4d(%rip),%rdi
call   1050 <puts@plt>
lea    0xd61(%rip),%rdi
call   1050 <puts@plt>
lea    0xd6d(%rip),%rdi
call   1050 <puts@plt>
mov    $0x1,%ebx
mov    %ebx,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
cmp    $0x2,%r14d
ja     15bd <redis_cmd+0x42d>
lea    0xc6e(%rip),%rdi
jmp    156a <redis_cmd+0x3da>
cmp    $0x1,%r14d
ja     1683 <redis_cmd+0x4f3>
mov    (%r15),%rsi
lea    0xad5(%rip),%rdi
lea    0xadd(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
lea    0xc5e(%rip),%rdi
jmp    156a <redis_cmd+0x3da>
mov    %r14d,%r13d
shr    %r13d
mov    0x8(%rsp),%r12
lea    (%r12,%r13,1),%eax
mov    (%r15,%rax,8),%rdi
lea    0xa90(%rip),%rsi
mov    $0x5,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     16cf <redis_cmd+0x53f>
mov    %r12d,%eax
lea    (%r15,%rax,8),%r8
cmp    $0x5,%r14d
jb     182d <redis_cmd+0x69d>
movq   $0x0,(%rsp)
lea    0xa63(%rip),%rdi
mov    $0x2b,%esi
jmp    18d1 <redis_cmd+0x741>
test   %r14d,%r14d
je     19ba <redis_cmd+0x82a>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0xa64(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0xa08(%rip),%rdi
mov    $0x24,%esi
mov    $0x2,%ecx
jmp    18d6 <redis_cmd+0x746>
mov    %eax,%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x9de(%rip),%rdi
mov    $0x2a,%esi
jmp    18d3 <redis_cmd+0x743>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x9fd(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
cmp    $0x1,%r14d
jbe    184c <redis_cmd+0x6bc>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x9f0(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
mov    %r13,0x10(%rsp)
lea    0x8(,%r14,8),%edi
call   10a0 <malloc@plt>
test   %rax,%rax
je     18a2 <redis_cmd+0x712>
mov    %r12d,%ecx
mov    (%r15,%rcx,8),%rcx
mov    %rcx,(%rax)
mov    $0x1,%r13d
cmp    $0x4,%r14d
jb     1904 <redis_cmd+0x774>
mov    %r14,0x18(%rsp)
mov    0x10(%rsp),%r14
cmp    $0x3,%r14d
mov    $0x2,%ecx
cmovae %r14d,%ecx
add    $0x2,%ebp
add    %rcx,%rcx
add    $0xfffffffffffffffe,%rcx
mov    %rcx,0x8(%rsp)
xor    %r13d,%r13d
mov    %rax,0x20(%rsp)
jmp    177e <redis_cmd+0x5ee>
mov    (%r15,%r12,8),%rax
xor    %ecx,%ecx
cmpb   $0x27,(%rax)
sete   %cl
add    %rax,%rcx
mov    0x20(%rsp),%rax
mov    %rcx,0x8(%rax,%r13,8)
mov    0x10(%rsp),%r14
lea    (%r14,%r12,1),%ecx
mov    (%r15,%rcx,8),%rdx
xor    %ecx,%ecx
cmpb   $0x27,(%rdx)
sete   %cl
add    %rdx,%rcx
mov    %rcx,0x10(%rax,%r13,8)
add    $0x2,%r13
lea    0x1(%r12),%ebp
cmp    %r13,0x8(%rsp)
je     18e3 <redis_cmd+0x753>
mov    %ebp,%r12d
mov    (%r15,%r12,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
cmpb   $0x2c,-0x1(%rax,%rbp,1)
jne    17a9 <redis_cmd+0x619>
mov    (%r15,%r12,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
movb   $0x0,-0x1(%rax,%rbp,1)
add    %r12d,%r14d
mov    (%r15,%r14,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
cmpb   $0x2c,-0x1(%rax,%rbp,1)
jne    17d4 <redis_cmd+0x644>
mov    (%r15,%r14,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
movb   $0x0,-0x1(%rax,%rbp,1)
mov    (%r15,%r12,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
cmpb   $0x27,-0x1(%rax,%rbp,1)
jne    17fc <redis_cmd+0x66c>
mov    (%r15,%r12,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
movb   $0x0,-0x1(%rax,%rbp,1)
mov    (%r15,%r14,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
cmpb   $0x27,-0x1(%rax,%rbp,1)
jne    1734 <redis_cmd+0x5a4>
mov    (%r15,%r14,8),%rbp
mov    %rbp,%rdi
call   1060 <strlen@plt>
cltq
movb   $0x0,-0x1(%rax,%rbp,1)
jmp    1734 <redis_cmd+0x5a4>
movq   $0x0,(%rsp)
lea    0x837(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
cmp    $0x1,%r14d
ja     1884 <redis_cmd+0x6f4>
mov    (%r15),%rsi
lea    0x827(%rip),%rdi
lea    0x84c(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
test   %r14d,%r14d
je     1aca <redis_cmd+0x93a>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x851(%rip),%rdi
jmp    18cc <redis_cmd+0x73c>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x826(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
mov    $0xffffffff,%ebx
jmp    1574 <redis_cmd+0x3e4>
test   %r14d,%r14d
je     1aca <redis_cmd+0x93a>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x811(%rip),%rdi
mov    $0x24,%esi
mov    %ebx,%edx
mov    %r14d,%ecx
xor    %r9d,%r9d
call   10b0 <redis_do@plt>
jmp    1576 <redis_cmd+0x3e6>
add    $0x1,%r13
cmpl   $0x5,0x18(%rsp)
jbe    1904 <redis_cmd+0x774>
movq   $0x0,(%rsp)
lea    0x770(%rip),%rdi
mov    $0x2b,%esi
jmp    1918 <redis_cmd+0x788>
movq   $0x0,(%rsp)
lea    0x760(%rip),%rdi
mov    $0x3a,%esi
mov    %ebx,%edx
mov    %r13d,%ecx
mov    %rax,%rbp
mov    %rax,%r8
xor    %r9d,%r9d
call   10b0 <redis_do@plt>
mov    %eax,%ebx
mov    %rbp,%rdi
call   1030 <free@plt>
jmp    1574 <redis_cmd+0x3e4>
test   %r14d,%r14d
je     19ba <redis_cmd+0x82a>
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x792(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
cmp    $0x1,%r14d
jbe    159e <redis_cmd+0x40e>
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x763(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
test   %r14d,%r14d
je     19ba <redis_cmd+0x82a>
or     $0x24,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x746(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
mov    (%r15),%rsi
lea    0x6b9(%rip),%rdi
lea    0x6d1(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
cmp    $0x1,%r14d
ja     1a08 <redis_cmd+0x878>
mov    (%r15),%rsi
lea    0x69d(%rip),%rdi
lea    0x71a(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
cmp    $0x1,%r14d
ja     1a48 <redis_cmd+0x8b8>
mov    (%r15),%rsi
lea    0x681(%rip),%rdi
lea    0x71c(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x6ee(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
cmp    $0x2,%r14d
ja     1a85 <redis_cmd+0x8f5>
mov    (%r15),%rsi
lea    0x641(%rip),%rdi
lea    0x6f9(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
or     $0x30,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x6cc(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
cmp    $0x1,%r14d
ja     1ae7 <redis_cmd+0x957>
mov    (%r15),%rsi
lea    0x601(%rip),%rdi
lea    0x6d5(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x6af(%rip),%rdi
jmp    160a <redis_cmd+0x47a>
test   %r14d,%r14d
je     1aca <redis_cmd+0x93a>
or     $0x24,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x6b1(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
mov    (%r15),%rsi
lea    0x5a9(%rip),%rdi
lea    0x5f1(%rip),%rdx
xor    %eax,%eax
call   1070 <printf@plt>
jmp    156f <redis_cmd+0x3df>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x667(%rip),%rdi
jmp    18cc <redis_cmd+0x73c>
cmp    $0x1,%r14d
jbe    1b62 <redis_cmd+0x9d2>
mov    %r14,%rcx
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x660(%rip),%rdi
mov    $0x3a,%esi
mov    %ebx,%edx
jmp    18d6 <redis_cmd+0x746>
cmp    $0x1,%r14d
jbe    1b62 <redis_cmd+0x9d2>
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x63e(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
cmp    $0x1,%r14d
ja     1b9e <redis_cmd+0xa0e>
mov    (%r15),%rsi
lea    0x511(%rip),%rdi
lea    0x608(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
test   %r14d,%r14d
je     1beb <redis_cmd+0xa5b>
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x61e(%rip),%rdi
mov    $0x2a,%esi
jmp    18d1 <redis_cmd+0x741>
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x5e5(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
test   %r14d,%r14d
je     1beb <redis_cmd+0xa5b>
or     $0x24,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x5df(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>
mov    (%r15),%rsi
lea    0x488(%rip),%rdi
lea    0x5b0(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
cmp    $0x2,%r14d
ja     1c1d <redis_cmd+0xa8d>
mov    (%r15),%rsi
lea    0x46c(%rip),%rdi
lea    0x5b4(%rip),%rdx
jmp    1adb <redis_cmd+0x94b>
or     $0x20,%ebx
mov    0x8(%rsp),%eax
lea    (%r15,%rax,8),%r8
movq   $0x0,(%rsp)
lea    0x5ac(%rip),%rdi
mov    $0x3a,%esi
jmp    18d1 <redis_cmd+0x741>

LLVM IR (-O0):
@.str = [5 x i8] c"-env\00"
@.str.1 = [6 x i8] c"-show\00"
@.str.2 = [10 x i8] c"-keysonly\00"
@.str.3 = [6 x i8] c"-keys\00"
@.str.4 = [47 x i8] c"Missing command!\0AUse %s CMD [options] [query]\0A\00"
@.str.5 = [45 x i8] c"- hget\09 [options] HASH [[field [field...]]\0A\00"
@.str.6 = [57 x i8] c"- hset\09 [options] HASH [[field value [field value...]]\0A\00"
@.str.7 = [33 x i8] c"- hdel\09 [options] HASH [field]\0A\00"
@.str.8 = [25 x i8] c"- del \09 [options] ITEM\0A\00"
@.str.9 = [32 x i8] c"- publish [options] QUEUE ITEM\0A\00"
@.str.10 = [5 x i8] c"hget\00"
@.str.11 = [35 x i8] c"You at least need to give a hash!\0A\00"
@.str.12 = [8 x i8] c"HGETALL\00"
@.str.13 = [6 x i8] c"HMGET\00"
@.str.14 = [5 x i8] c"HGET\00"
@.str.15 = [5 x i8] c"hset\00"
@.str.16 = [26 x i8] c"Missing hash/key/value's\0A\00"
@.str.17 = [6 x i8] c"-vals\00"
@.str.18 = [6 x i8] c"HMSET\00"
@.str.19 = [5 x i8] c"HSET\00"
@.str.20 = [5 x i8] c"hdel\00"
@.str.21 = [15 x i8] c"format: %s %s\0A\00"
@.str.22 = [11 x i8] c"\22hash key\22\00"
@.str.23 = [5 x i8] c"HDEL\00"
@.str.24 = [4 x i8] c"del\00"
@.str.25 = [7 x i8] c"\22item\22\00"
@.str.26 = [4 x i8] c"DEL\00"
@.str.27 = [6 x i8] c"lpush\00"
@.str.28 = [12 x i8] c"\22list item\22\00"
@.str.29 = [6 x i8] c"LPUSH\00"
@.str.30 = [6 x i8] c"rpush\00"
@.str.31 = [6 x i8] c"RPUSH\00"
@.str.32 = [5 x i8] c"lpop\00"
@.str.33 = [7 x i8] c"\22list\22\00"
@.str.34 = [5 x i8] c"LPOP\00"
@.str.35 = [5 x i8] c"rpop\00"
@.str.36 = [5 x i8] c"RPOP\00"
@.str.37 = [7 x i8] c"exists\00"
@.str.38 = [7 x i8] c"EXISTS\00"
@.str.39 = [8 x i8] c"hexists\00"
@.str.40 = [8 x i8] c"HEXISTS\00"
@.str.41 = [4 x i8] c"ttl\00"
@.str.42 = [4 x i8] c"TTL\00"
@.str.43 = [7 x i8] c"expire\00"
@.str.44 = [15 x i8] c"\22item timeout\22\00"
@.str.45 = [7 x i8] c"EXPIRE\00"
@.str.46 = [8 x i8] c"publish\00"
@.str.47 = [15 x i8] c"\22channel data\22\00"
@.str.48 = [8 x i8] c"PUBLISH\00"
@.str.49 = [6 x i8] c"ltrim\00"
@.str.50 = [15 x i8] c"\22list from to\22\00"
@.str.51 = [6 x i8] c"LTRIM\00"
@.str.52 = [7 x i8] c"lindex\00"
@.str.53 = [13 x i8] c"\22list index\22\00"
@.str.54 = [7 x i8] c"LINDEX\00"
@.str.55 = [5 x i8] c"llen\00"
@.str.56 = [5 x i8] c"LLEN\00"
@.str.57 = [5 x i8] c"sadd\00"
@.str.58 = [11 x i8] c"\22set item\22\00"
@.str.59 = [5 x i8] c"SADD\00"
@.str.60 = [5 x i8] c"sdel\00"
@.str.61 = [5 x i8] c"SREM\00"
@.str.62 = [8 x i8] c"sexists\00"
@.str.63 = [10 x i8] c"SISMEMBER\00"
@.str.64 = [5 x i8] c"sget\00"
@.str.65 = [6 x i8] c"\22set\22\00"
@.str.66 = [9 x i8] c"SMEMBERS\00"
@.str.67 = [5 x i8] c"slen\00"
@.str.68 = [6 x i8] c"SCARD\00"
@.str.69 = [6 x i8] c"smove\00"
@.str.70 = [23 x i8] c"\22from-set to-set item\22\00"
@.str.71 = [6 x i8] c"SMOVE\00"
@stderr = global i32 0
@.str.72 = [23 x i8] c"Invalid redis command\0A\00"
define i32 @redis_cmd(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i8**
%14 = alloca i32
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 1, i32* %6
store i32 0, i32* %7
%15 = load i32, i32* %4
%16 = sub nsw i32 %15, 1
store i32 %16, i32* %8
%17 = load i32, i32* %8
%18 = icmp ugt i32 %17, 0
br i1 %18, label %19, label %85
19: ; preds = %2
br label %20
20: ; preds = %81, %19
%21 = load i32, i32* %6
%22 = load i32, i32* %4
%23 = icmp ult i32 %21, %22
br i1 %23, label %24, label %84
24: ; preds = %20
%25 = load i8**, i8*** %5
%26 = load i32, i32* %6
%27 = zext i32 %26 to i64
%28 = getelementptr inbounds i8*, i8** %25, i64 %27
%29 = load i8*, i8** %28
%30 = call i64 @strncmp(i8* %29, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 4)
%31 = icmp eq i64 %30, 0
br i1 %31, label %32, label %37
32: ; preds = %24
%33 = load i32, i32* %6
%34 = add i32 %33, 1
store i32 %34, i32* %6
%35 = load i32, i32* %7
%36 = or i32 %35, 1
store i32 %36, i32* %7
br label %80
37: ; preds = %24
%38 = load i8**, i8*** %5
%39 = load i32, i32* %6
%40 = zext i32 %39 to i64
%41 = getelementptr inbounds i8*, i8** %38, i64 %40
%42 = load i8*, i8** %41
%43 = call i64 @strncmp(i8* %42, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 5)
%44 = icmp eq i64 %43, 0
br i1 %44, label %45, label %50
45: ; preds = %37
%46 = load i32, i32* %6
%47 = add i32 %46, 1
store i32 %47, i32* %6
%48 = load i32, i32* %7
%49 = or i32 %48, 2
store i32 %49, i32* %7
br label %79
50: ; preds = %37
%51 = load i8**, i8*** %5
%52 = load i32, i32* %6
%53 = zext i32 %52 to i64
%54 = getelementptr inbounds i8*, i8** %51, i64 %53
%55 = load i8*, i8** %54
%56 = call i64 @strncmp(i8* %55, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i32 9)
%57 = icmp eq i64 %56, 0
br i1 %57, label %58, label %63
58: ; preds = %50
%59 = load i32, i32* %6
%60 = add i32 %59, 1
store i32 %60, i32* %6
%61 = load i32, i32* %7
%62 = or i32 %61, 8
store i32 %62, i32* %7
br label %78
63: ; preds = %50
%64 = load i8**, i8*** %5
%65 = load i32, i32* %6
%66 = zext i32 %65 to i64
%67 = getelementptr inbounds i8*, i8** %64, i64 %66
%68 = load i8*, i8** %67
%69 = call i64 @strncmp(i8* %68, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), i32 5)
%70 = icmp eq i64 %69, 0
br i1 %70, label %71, label %76
71: ; preds = %63
%72 = load i32, i32* %6
%73 = add i32 %72, 1
store i32 %73, i32* %6
%74 = load i32, i32* %7
%75 = or i32 %74, 4
store i32 %75, i32* %7
br label %77
76: ; preds = %63
br label %84
77: ; preds = %71
br label %78
78: ; preds = %77, %58
br label %79
79: ; preds = %78, %45
br label %80
80: ; preds = %79, %32
br label %81
81: ; preds = %80
%82 = load i32, i32* %8
%83 = add i32 %82, -1
store i32 %83, i32* %8
br label %20
84: ; preds = %76, %20
br label %85
85: ; preds = %84, %2
%86 = load i32, i32* %8
%87 = icmp ult i32 %86, 1
br i1 %87, label %88, label %98
88: ; preds = %85
%89 = load i8**, i8*** %5
%90 = getelementptr inbounds i8*, i8** %89, i64 0
%91 = load i8*, i8** %90
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.4, i64 0, i64 0), i8* %91)
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.5, i64 0, i64 0))
%94 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.6, i64 0, i64 0))
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.7, i64 0, i64 0))
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.8, i64 0, i64 0))
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.9, i64 0, i64 0))
store i32 1, i32* %3
br label %926
98: ; preds = %85
%99 = load i8**, i8*** %5
%100 = load i32, i32* %6
%101 = zext i32 %100 to i64
%102 = getelementptr inbounds i8*, i8** %99, i64 %101
%103 = load i8*, i8** %102
store i8* %103, i8** %9
%104 = load i32, i32* %8
%105 = add i32 %104, -1
store i32 %105, i32* %8
%106 = load i32, i32* %6
%107 = add i32 %106, 1
store i32 %107, i32* %6
%108 = load i8*, i8** %9
%109 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8* %108)
%110 = icmp eq i64 %109, 0
br i1 %110, label %111, label %154
111: ; preds = %98
%112 = load i32, i32* %8
%113 = icmp ult i32 %112, 1
br i1 %113, label %114, label %116
114: ; preds = %111
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.11, i64 0, i64 0))
store i32 1, i32* %3
br label %926
116: ; preds = %111
%117 = load i32, i32* %7
%118 = and i32 1, %117
%119 = icmp ne i32 %118, 0
br i1 %119, label %123, label %120
120: ; preds = %116
%121 = load i32, i32* %7
%122 = or i32 %121, 2
store i32 %122, i32* %7
br label %123
123: ; preds = %120, %116
%124 = load i32, i32* %8
%125 = icmp ult i32 %124, 2
br i1 %125, label %126, label %135
126: ; preds = %123
%127 = load i32, i32* %7
%128 = or i32 128, %127
%129 = load i32, i32* %8
%130 = load i8**, i8*** %5
%131 = load i32, i32* %6
%132 = zext i32 %131 to i64
%133 = getelementptr inbounds i8*, i8** %130, i64 %132
%134 = call i32 @redis_do(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0), i8 signext 42, i32 %128, i32 %129, i8** %133, i32* null, i32* null)
store i32 %134, i32* %3
br label %926
135: ; preds = %123
%136 = load i32, i32* %8
%137 = icmp ugt i32 %136, 2
br i1 %137, label %138, label %146
138: ; preds = %135
%139 = load i32, i32* %7
%140 = load i32, i32* %8
%141 = load i8**, i8*** %5
%142 = load i32, i32* %6
%143 = zext i32 %142 to i64
%144 = getelementptr inbounds i8*, i8** %141, i64 %143
%145 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8 signext 42, i32 %139, i32 %140, i8** %144, i32* null, i32* null)
store i32 %145, i32* %3
br label %926
146: ; preds = %135
%147 = load i32, i32* %7
%148 = load i32, i32* %8
%149 = load i8**, i8*** %5
%150 = load i32, i32* %6
%151 = zext i32 %150 to i64
%152 = getelementptr inbounds i8*, i8** %149, i64 %151
%153 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8 signext 36, i32 %147, i32 %148, i8** %152, i32* null, i32* null)
store i32 %153, i32* %3
br label %926
154: ; preds = %98
%155 = load i8*, i8** %9
%156 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8* %155)
%157 = icmp eq i64 %156, 0
br i1 %157, label %158, label %503
158: ; preds = %154
%159 = load i32, i32* %8
%160 = icmp ult i32 %159, 3
br i1 %160, label %161, label %163
161: ; preds = %158
%162 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.16, i64 0, i64 0))
store i32 1, i32* %3
br label %926
163: ; preds = %158
%164 = load i32, i32* %8
%165 = udiv i32 %164, 2
store i32 %165, i32* %10
%166 = load i8**, i8*** %5
%167 = load i32, i32* %6
%168 = load i32, i32* %10
%169 = add i32 %167, %168
%170 = zext i32 %169 to i64
%171 = getelementptr inbounds i8*, i8** %166, i64 %170
%172 = load i8*, i8** %171
%173 = call i64 @strncmp(i8* %172, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0), i32 5)
%174 = icmp eq i64 %173, 0
br i1 %174, label %175, label %484
175: ; preds = %163
store i32 0, i32* %12
%176 = load i32, i32* %8
%177 = zext i32 %176 to i64
%178 = mul i64 8, %177
%179 = add i64 %178, 8
%180 = trunc i64 %179 to i32
%181 = call i8** @malloc(i32 %180)
store i8** %181, i8*** %13
%182 = icmp eq i8** %181, null
br i1 %182, label %183, label %184
183: ; preds = %175
store i32 -1, i32* %3
br label %926
184: ; preds = %175
%185 = load i8**, i8*** %5
%186 = load i32, i32* %6
%187 = zext i32 %186 to i64
%188 = getelementptr inbounds i8*, i8** %185, i64 %187
%189 = load i8*, i8** %188
%190 = load i8**, i8*** %13
%191 = load i32, i32* %12
%192 = add i32 %191, 1
store i32 %192, i32* %12
%193 = zext i32 %191 to i64
%194 = getelementptr inbounds i8*, i8** %190, i64 %193
store i8* %189, i8** %194
store i32 1, i32* %14
br label %195
195: ; preds = %464, %184
%196 = load i32, i32* %14
%197 = load i32, i32* %10
%198 = icmp ult i32 %196, %197
br i1 %198, label %199, label %467
199: ; preds = %195
%200 = load i8**, i8*** %5
%201 = load i32, i32* %6
%202 = load i32, i32* %14
%203 = add i32 %201, %202
%204 = zext i32 %203 to i64
%205 = getelementptr inbounds i8*, i8** %200, i64 %204
%206 = load i8*, i8** %205
%207 = load i8**, i8*** %5
%208 = load i32, i32* %6
%209 = load i32, i32* %14
%210 = add i32 %208, %209
%211 = zext i32 %210 to i64
%212 = getelementptr inbounds i8*, i8** %207, i64 %211
%213 = load i8*, i8** %212
%214 = call i32 @strlen(i8* %213)
%215 = sub nsw i32 %214, 1
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds i8, i8* %206, i64 %216
%218 = load i8, i8* %217
%219 = sext i8 %218 to i32
%220 = icmp eq i32 %219, 44
br i1 %220, label %221, label %240
221: ; preds = %199
%222 = load i8**, i8*** %5
%223 = load i32, i32* %6
%224 = load i32, i32* %14
%225 = add i32 %223, %224
%226 = zext i32 %225 to i64
%227 = getelementptr inbounds i8*, i8** %222, i64 %226
%228 = load i8*, i8** %227
%229 = load i8**, i8*** %5
%230 = load i32, i32* %6
%231 = load i32, i32* %14
%232 = add i32 %230, %231
%233 = zext i32 %232 to i64
%234 = getelementptr inbounds i8*, i8** %229, i64 %233
%235 = load i8*, i8** %234
%236 = call i32 @strlen(i8* %235)
%237 = sub nsw i32 %236, 1
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds i8, i8* %228, i64 %238
store i8 0, i8* %239
br label %240
240: ; preds = %221, %199
%241 = load i8**, i8*** %5
%242 = load i32, i32* %10
%243 = load i32, i32* %6
%244 = add i32 %242, %243
%245 = load i32, i32* %14
%246 = add i32 %244, %245
%247 = zext i32 %246 to i64
%248 = getelementptr inbounds i8*, i8** %241, i64 %247
%249 = load i8*, i8** %248
%250 = load i8**, i8*** %5
%251 = load i32, i32* %10
%252 = load i32, i32* %6
%253 = add i32 %251, %252
%254 = load i32, i32* %14
%255 = add i32 %253, %254
%256 = zext i32 %255 to i64
%257 = getelementptr inbounds i8*, i8** %250, i64 %256
%258 = load i8*, i8** %257
%259 = call i32 @strlen(i8* %258)
%260 = sub nsw i32 %259, 1
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds i8, i8* %249, i64 %261
%263 = load i8, i8* %262
%264 = sext i8 %263 to i32
%265 = icmp eq i32 %264, 44
br i1 %265, label %266, label %289
266: ; preds = %240
%267 = load i8**, i8*** %5
%268 = load i32, i32* %10
%269 = load i32, i32* %6
%270 = add i32 %268, %269
%271 = load i32, i32* %14
%272 = add i32 %270, %271
%273 = zext i32 %272 to i64
%274 = getelementptr inbounds i8*, i8** %267, i64 %273
%275 = load i8*, i8** %274
%276 = load i8**, i8*** %5
%277 = load i32, i32* %10
%278 = load i32, i32* %6
%279 = add i32 %277, %278
%280 = load i32, i32* %14
%281 = add i32 %279, %280
%282 = zext i32 %281 to i64
%283 = getelementptr inbounds i8*, i8** %276, i64 %282
%284 = load i8*, i8** %283
%285 = call i32 @strlen(i8* %284)
%286 = sub nsw i32 %285, 1
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds i8, i8* %275, i64 %287
store i8 0, i8* %288
br label %289
289: ; preds = %266, %240
%290 = load i8**, i8*** %5
%291 = load i32, i32* %6
%292 = load i32, i32* %14
%293 = add i32 %291, %292
%294 = zext i32 %293 to i64
%295 = getelementptr inbounds i8*, i8** %290, i64 %294
%296 = load i8*, i8** %295
%297 = load i8**, i8*** %5
%298 = load i32, i32* %6
%299 = load i32, i32* %14
%300 = add i32 %298, %299
%301 = zext i32 %300 to i64
%302 = getelementptr inbounds i8*, i8** %297, i64 %301
%303 = load i8*, i8** %302
%304 = call i32 @strlen(i8* %303)
%305 = sub nsw i32 %304, 1
%306 = sext i32 %305 to i64
%307 = getelementptr inbounds i8, i8* %296, i64 %306
%308 = load i8, i8* %307
%309 = sext i8 %308 to i32
%310 = icmp eq i32 %309, 39
br i1 %310, label %311, label %330
311: ; preds = %289
%312 = load i8**, i8*** %5
%313 = load i32, i32* %6
%314 = load i32, i32* %14
%315 = add i32 %313, %314
%316 = zext i32 %315 to i64
%317 = getelementptr inbounds i8*, i8** %312, i64 %316
%318 = load i8*, i8** %317
%319 = load i8**, i8*** %5
%320 = load i32, i32* %6
%321 = load i32, i32* %14
%322 = add i32 %320, %321
%323 = zext i32 %322 to i64
%324 = getelementptr inbounds i8*, i8** %319, i64 %323
%325 = load i8*, i8** %324
%326 = call i32 @strlen(i8* %325)
%327 = sub nsw i32 %326, 1
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds i8, i8* %318, i64 %328
store i8 0, i8* %329
br label %330
330: ; preds = %311, %289
%331 = load i8**, i8*** %5
%332 = load i32, i32* %10
%333 = load i32, i32* %6
%334 = add i32 %332, %333
%335 = load i32, i32* %14
%336 = add i32 %334, %335
%337 = zext i32 %336 to i64
%338 = getelementptr inbounds i8*, i8** %331, i64 %337
%339 = load i8*, i8** %338
%340 = load i8**, i8*** %5
%341 = load i32, i32* %10
%342 = load i32, i32* %6
%343 = add i32 %341, %342
%344 = load i32, i32* %14
%345 = add i32 %343, %344
%346 = zext i32 %345 to i64
%347 = getelementptr inbounds i8*, i8** %340, i64 %346
%348 = load i8*, i8** %347
%349 = call i32 @strlen(i8* %348)
%350 = sub nsw i32 %349, 1
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds i8, i8* %339, i64 %351
%353 = load i8, i8* %352
%354 = sext i8 %353 to i32
%355 = icmp eq i32 %354, 39
br i1 %355, label %356, label %379
356: ; preds = %330
%357 = load i8**, i8*** %5
%358 = load i32, i32* %10
%359 = load i32, i32* %6
%360 = add i32 %358, %359
%361 = load i32, i32* %14
%362 = add i32 %360, %361
%363 = zext i32 %362 to i64
%364 = getelementptr inbounds i8*, i8** %357, i64 %363
%365 = load i8*, i8** %364
%366 = load i8**, i8*** %5
%367 = load i32, i32* %10
%368 = load i32, i32* %6
%369 = add i32 %367, %368
%370 = load i32, i32* %14
%371 = add i32 %369, %370
%372 = zext i32 %371 to i64
%373 = getelementptr inbounds i8*, i8** %366, i64 %372
%374 = load i8*, i8** %373
%375 = call i32 @strlen(i8* %374)
%376 = sub nsw i32 %375, 1
%377 = sext i32 %376 to i64
%378 = getelementptr inbounds i8, i8* %365, i64 %377
store i8 0, i8* %378
br label %379
379: ; preds = %356, %330
%380 = load i8**, i8*** %5
%381 = load i32, i32* %6
%382 = load i32, i32* %14
%383 = add i32 %381, %382
%384 = zext i32 %383 to i64
%385 = getelementptr inbounds i8*, i8** %380, i64 %384
%386 = load i8*, i8** %385
%387 = getelementptr inbounds i8, i8* %386, i64 0
%388 = load i8, i8* %387
%389 = sext i8 %388 to i32
%390 = icmp eq i32 %389, 39
br i1 %390, label %391, label %405
391: ; preds = %379
%392 = load i8**, i8*** %5
%393 = load i32, i32* %6
%394 = load i32, i32* %14
%395 = add i32 %393, %394
%396 = zext i32 %395 to i64
%397 = getelementptr inbounds i8*, i8** %392, i64 %396
%398 = load i8*, i8** %397
%399 = getelementptr inbounds i8, i8* %398, i64 1
%400 = load i8**, i8*** %13
%401 = load i32, i32* %12
%402 = add i32 %401, 1
store i32 %402, i32* %12
%403 = zext i32 %401 to i64
%404 = getelementptr inbounds i8*, i8** %400, i64 %403
store i8* %399, i8** %404
br label %418
405: ; preds = %379
%406 = load i8**, i8*** %5
%407 = load i32, i32* %6
%408 = load i32, i32* %14
%409 = add i32 %407, %408
%410 = zext i32 %409 to i64
%411 = getelementptr inbounds i8*, i8** %406, i64 %410
%412 = load i8*, i8** %411
%413 = load i8**, i8*** %13
%414 = load i32, i32* %12
%415 = add i32 %414, 1
store i32 %415, i32* %12
%416 = zext i32 %414 to i64
%417 = getelementptr inbounds i8*, i8** %413, i64 %416
store i8* %412, i8** %417
br label %418
418: ; preds = %405, %391
%419 = load i8**, i8*** %5
%420 = load i32, i32* %6
%421 = load i32, i32* %14
%422 = add i32 %420, %421
%423 = load i32, i32* %10
%424 = add i32 %422, %423
%425 = zext i32 %424 to i64
%426 = getelementptr inbounds i8*, i8** %419, i64 %425
%427 = load i8*, i8** %426
%428 = getelementptr inbounds i8, i8* %427, i64 0
%429 = load i8, i8* %428
%430 = sext i8 %429 to i32
%431 = icmp eq i32 %430, 39
br i1 %431, label %432, label %448
432: ; preds = %418
%433 = load i8**, i8*** %5
%434 = load i32, i32* %6
%435 = load i32, i32* %14
%436 = add i32 %434, %435
%437 = load i32, i32* %10
%438 = add i32 %436, %437
%439 = zext i32 %438 to i64
%440 = getelementptr inbounds i8*, i8** %433, i64 %439
%441 = load i8*, i8** %440
%442 = getelementptr inbounds i8, i8* %441, i64 1
%443 = load i8**, i8*** %13
%444 = load i32, i32* %12
%445 = add i32 %444, 1
store i32 %445, i32* %12
%446 = zext i32 %444 to i64
%447 = getelementptr inbounds i8*, i8** %443, i64 %446
store i8* %442, i8** %447
br label %463
448: ; preds = %418
%449 = load i8**, i8*** %5
%450 = load i32, i32* %6
%451 = load i32, i32* %14
%452 = add i32 %450, %451
%453 = load i32, i32* %10
%454 = add i32 %452, %453
%455 = zext i32 %454 to i64
%456 = getelementptr inbounds i8*, i8** %449, i64 %455
%457 = load i8*, i8** %456
%458 = load i8**, i8*** %13
%459 = load i32, i32* %12
%460 = add i32 %459, 1
store i32 %460, i32* %12
%461 = zext i32 %459 to i64
%462 = getelementptr inbounds i8*, i8** %458, i64 %461
store i8* %457, i8** %462
br label %463
463: ; preds = %448, %432
br label %464
464: ; preds = %463
%465 = load i32, i32* %14
%466 = add nsw i32 %465, 1
store i32 %466, i32* %14
br label %195
467: ; preds = %195
%468 = load i32, i32* %10
%469 = icmp ugt i32 %468, 2
br i1 %469, label %470, label %475
470: ; preds = %467
%471 = load i32, i32* %7
%472 = load i32, i32* %12
%473 = load i8**, i8*** %13
%474 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8 signext 43, i32 %471, i32 %472, i8** %473, i32* null, i32* null)
store i32 %474, i32* %11
br label %480
475: ; preds = %467
%476 = load i32, i32* %7
%477 = load i32, i32* %12
%478 = load i8**, i8*** %13
%479 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), i8 signext 58, i32 %476, i32 %477, i8** %478, i32* null, i32* null)
store i32 %479, i32* %11
br label %480
480: ; preds = %475, %470
%481 = load i8**, i8*** %13
%482 = call i32 @free(i8** %481)
%483 = load i32, i32* %11
store i32 %483, i32* %3
br label %926
484: ; preds = %163
%485 = load i32, i32* %8
%486 = icmp ugt i32 %485, 4
br i1 %486, label %487, label %495
487: ; preds = %484
%488 = load i32, i32* %7
%489 = load i32, i32* %8
%490 = load i8**, i8*** %5
%491 = load i32, i32* %6
%492 = zext i32 %491 to i64
%493 = getelementptr inbounds i8*, i8** %490, i64 %492
%494 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8 signext 43, i32 %488, i32 %489, i8** %493, i32* null, i32* null)
store i32 %494, i32* %3
br label %926
495: ; preds = %484
%496 = load i32, i32* %7
%497 = load i32, i32* %8
%498 = load i8**, i8*** %5
%499 = load i32, i32* %6
%500 = zext i32 %499 to i64
%501 = getelementptr inbounds i8*, i8** %498, i64 %500
%502 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), i8 signext 58, i32 %496, i32 %497, i8** %501, i32* null, i32* null)
store i32 %502, i32* %3
br label %926
503: ; preds = %154
%504 = load i8*, i8** %9
%505 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i8* %504)
%506 = icmp eq i64 %505, 0
br i1 %506, label %507, label %524
507: ; preds = %503
%508 = load i32, i32* %8
%509 = icmp ult i32 %508, 2
br i1 %509, label %510, label %515
510: ; preds = %507
%511 = load i8**, i8*** %5
%512 = getelementptr inbounds i8*, i8** %511, i64 0
%513 = load i8*, i8** %512
%514 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %513, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
store i32 1, i32* %3
br label %926
515: ; preds = %507
%516 = load i32, i32* %7
%517 = or i32 %516, 0
%518 = load i32, i32* %8
%519 = load i8**, i8*** %5
%520 = load i32, i32* %6
%521 = zext i32 %520 to i64
%522 = getelementptr inbounds i8*, i8** %519, i64 %521
%523 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0), i8 signext 58, i32 %517, i32 %518, i8** %522, i32* null, i32* null)
store i32 %523, i32* %3
br label %926
524: ; preds = %503
%525 = load i8*, i8** %9
%526 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8* %525)
%527 = icmp eq i64 %526, 0
br i1 %527, label %528, label %545
528: ; preds = %524
%529 = load i32, i32* %8
%530 = icmp ult i32 %529, 1
br i1 %530, label %531, label %536
531: ; preds = %528
%532 = load i8**, i8*** %5
%533 = getelementptr inbounds i8*, i8** %532, i64 0
%534 = load i8*, i8** %533
%535 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %534, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.25, i64 0, i64 0))
store i32 1, i32* %3
br label %926
536: ; preds = %528
%537 = load i32, i32* %7
%538 = or i32 %537, 0
%539 = load i32, i32* %8
%540 = load i8**, i8*** %5
%541 = load i32, i32* %6
%542 = zext i32 %541 to i64
%543 = getelementptr inbounds i8*, i8** %540, i64 %542
%544 = call i32 @redis_do(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), i8 signext 58, i32 %538, i32 %539, i8** %543, i32* null, i32* null)
store i32 %544, i32* %3
br label %926
545: ; preds = %524
%546 = load i8*, i8** %9
%547 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i8* %546)
%548 = icmp eq i64 %547, 0
br i1 %548, label %549, label %566
549: ; preds = %545
%550 = load i32, i32* %8
%551 = icmp ult i32 %550, 2
br i1 %551, label %552, label %557
552: ; preds = %549
%553 = load i8**, i8*** %5
%554 = getelementptr inbounds i8*, i8** %553, i64 0
%555 = load i8*, i8** %554
%556 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %555, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.28, i64 0, i64 0))
store i32 1, i32* %3
br label %926
557: ; preds = %549
%558 = load i32, i32* %7
%559 = or i32 %558, 0
%560 = load i32, i32* %8
%561 = load i8**, i8*** %5
%562 = load i32, i32* %6
%563 = zext i32 %562 to i64
%564 = getelementptr inbounds i8*, i8** %561, i64 %563
%565 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0), i8 signext 58, i32 %559, i32 %560, i8** %564, i32* null, i32* null)
store i32 %565, i32* %3
br label %926
566: ; preds = %545
%567 = load i8*, i8** %9
%568 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.30, i64 0, i64 0), i8* %567)
%569 = icmp eq i64 %568, 0
br i1 %569, label %570, label %587
570: ; preds = %566
%571 = load i32, i32* %8
%572 = icmp ult i32 %571, 2
br i1 %572, label %573, label %578
573: ; preds = %570
%574 = load i8**, i8*** %5
%575 = getelementptr inbounds i8*, i8** %574, i64 0
%576 = load i8*, i8** %575
%577 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %576, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.28, i64 0, i64 0))
store i32 1, i32* %3
br label %926
578: ; preds = %570
%579 = load i32, i32* %7
%580 = or i32 %579, 0
%581 = load i32, i32* %8
%582 = load i8**, i8*** %5
%583 = load i32, i32* %6
%584 = zext i32 %583 to i64
%585 = getelementptr inbounds i8*, i8** %582, i64 %584
%586 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0), i8 signext 58, i32 %580, i32 %581, i8** %585, i32* null, i32* null)
store i32 %586, i32* %3
br label %926
587: ; preds = %566
%588 = load i8*, i8** %9
%589 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8* %588)
%590 = icmp eq i64 %589, 0
br i1 %590, label %591, label %608
591: ; preds = %587
%592 = load i32, i32* %8
%593 = icmp ult i32 %592, 1
br i1 %593, label %594, label %599
594: ; preds = %591
%595 = load i8**, i8*** %5
%596 = getelementptr inbounds i8*, i8** %595, i64 0
%597 = load i8*, i8** %596
%598 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %597, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
store i32 1, i32* %3
br label %926
599: ; preds = %591
%600 = load i32, i32* %7
%601 = or i32 %600, 0
%602 = load i32, i32* %8
%603 = load i8**, i8*** %5
%604 = load i32, i32* %6
%605 = zext i32 %604 to i64
%606 = getelementptr inbounds i8*, i8** %603, i64 %605
%607 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i8 signext 36, i32 %601, i32 %602, i8** %606, i32* null, i32* null)
store i32 %607, i32* %3
br label %926
608: ; preds = %587
%609 = load i8*, i8** %9
%610 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i64 0, i64 0), i8* %609)
%611 = icmp eq i64 %610, 0
br i1 %611, label %612, label %629
612: ; preds = %608
%613 = load i32, i32* %8
%614 = icmp ult i32 %613, 1
br i1 %614, label %615, label %620
615: ; preds = %612
%616 = load i8**, i8*** %5
%617 = getelementptr inbounds i8*, i8** %616, i64 0
%618 = load i8*, i8** %617
%619 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %618, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
store i32 1, i32* %3
br label %926
620: ; preds = %612
%621 = load i32, i32* %7
%622 = or i32 %621, 0
%623 = load i32, i32* %8
%624 = load i8**, i8*** %5
%625 = load i32, i32* %6
%626 = zext i32 %625 to i64
%627 = getelementptr inbounds i8*, i8** %624, i64 %626
%628 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8 signext 36, i32 %622, i32 %623, i8** %627, i32* null, i32* null)
store i32 %628, i32* %3
br label %926
629: ; preds = %608
%630 = load i8*, i8** %9
%631 = call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i8* %630)
%632 = icmp eq i64 %631, 0
br i1 %632, label %633, label %650
633: ; preds = %629
%634 = load i32, i32* %8
%635 = icmp ult i32 %634, 1
br i1 %635, label %636, label %641
636: ; preds = %633
%637 = load i8**, i8*** %5
%638 = getelementptr inbounds i8*, i8** %637, i64 0
%639 = load i8*, i8** %638
%640 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %639, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.25, i64 0, i64 0))
store i32 1, i32* %3
br label %926
641: ; preds = %633
%642 = load i32, i32* %7
%643 = or i32 %642, 32
%644 = load i32, i32* %8
%645 = load i8**, i8*** %5
%646 = load i32, i32* %6
%647 = zext i32 %646 to i64
%648 = getelementptr inbounds i8*, i8** %645, i64 %647
%649 = call i32 @redis_do(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8 signext 58, i32 %643, i32 %644, i8** %648, i32* null, i32* null)
store i32 %649, i32* %3
br label %926
650: ; preds = %629
%651 = load i8*, i8** %9
%652 = call i64 @strcmp(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.39, i64 0, i64 0), i8* %651)
%653 = icmp eq i64 %652, 0
br i1 %653, label %654, label %671
654: ; preds = %650
%655 = load i32, i32* %8
%656 = icmp ult i32 %655, 2
br i1 %656, label %657, label %662
657: ; preds = %654
%658 = load i8**, i8*** %5
%659 = getelementptr inbounds i8*, i8** %658, i64 0
%660 = load i8*, i8** %659
%661 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %660, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
store i32 1, i32* %3
br label %926
662: ; preds = %654
%663 = load i32, i32* %7
%664 = or i32 %663, 32
%665 = load i32, i32* %8
%666 = load i8**, i8*** %5
%667 = load i32, i32* %6
%668 = zext i32 %667 to i64
%669 = getelementptr inbounds i8*, i8** %666, i64 %668
%670 = call i32 @redis_do(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.40, i64 0, i64 0), i8 signext 58, i32 %664, i32 %665, i8** %669, i32* null, i32* null)
store i32 %670, i32* %3
br label %926
671: ; preds = %650
%672 = load i8*, i8** %9
%673 = call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.41, i64 0, i64 0), i8* %672)
%674 = icmp eq i64 %673, 0
br i1 %674, label %675, label %692
675: ; preds = %671
%676 = load i32, i32* %8
%677 = icmp ult i32 %676, 1
br i1 %677, label %678, label %683
678: ; preds = %675
%679 = load i8**, i8*** %5
%680 = getelementptr inbounds i8*, i8** %679, i64 0
%681 = load i8*, i8** %680
%682 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %681, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.25, i64 0, i64 0))
store i32 1, i32* %3
br label %926
683: ; preds = %675
%684 = load i32, i32* %7
%685 = or i32 %684, 36
%686 = load i32, i32* %8
%687 = load i8**, i8*** %5
%688 = load i32, i32* %6
%689 = zext i32 %688 to i64
%690 = getelementptr inbounds i8*, i8** %687, i64 %689
%691 = call i32 @redis_do(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.42, i64 0, i64 0), i8 signext 58, i32 %685, i32 %686, i8** %690, i32* null, i32* null)
store i32 %691, i32* %3
br label %926
692: ; preds = %671
%693 = load i8*, i8** %9
%694 = call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i64 0, i64 0), i8* %693)
%695 = icmp eq i64 %694, 0
br i1 %695, label %696, label %713
696: ; preds = %692
%697 = load i32, i32* %8
%698 = icmp ult i32 %697, 2
br i1 %698, label %699, label %704
699: ; preds = %696
%700 = load i8**, i8*** %5
%701 = getelementptr inbounds i8*, i8** %700, i64 0
%702 = load i8*, i8** %701
%703 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %702, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.44, i64 0, i64 0))
store i32 1, i32* %3
br label %926
704: ; preds = %696
%705 = load i32, i32* %7
%706 = or i32 %705, 32
%707 = load i32, i32* %8
%708 = load i8**, i8*** %5
%709 = load i32, i32* %6
%710 = zext i32 %709 to i64
%711 = getelementptr inbounds i8*, i8** %708, i64 %710
%712 = call i32 @redis_do(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.45, i64 0, i64 0), i8 signext 58, i32 %706, i32 %707, i8** %711, i32* null, i32* null)
store i32 %712, i32* %3
br label %926
713: ; preds = %692
%714 = load i8*, i8** %9
%715 = call i64 @strcmp(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.46, i64 0, i64 0), i8* %714)
%716 = icmp eq i64 %715, 0
br i1 %716, label %717, label %734
717: ; preds = %713
%718 = load i32, i32* %8
%719 = icmp ult i32 %718, 2
br i1 %719, label %720, label %725
720: ; preds = %717
%721 = load i8**, i8*** %5
%722 = getelementptr inbounds i8*, i8** %721, i64 0
%723 = load i8*, i8** %722
%724 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %723, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.47, i64 0, i64 0))
store i32 1, i32* %3
br label %926
725: ; preds = %717
%726 = load i32, i32* %7
%727 = or i32 %726, 48
%728 = load i32, i32* %8
%729 = load i8**, i8*** %5
%730 = load i32, i32* %6
%731 = zext i32 %730 to i64
%732 = getelementptr inbounds i8*, i8** %729, i64 %731
%733 = call i32 @redis_do(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i64 0, i64 0), i8 signext 58, i32 %727, i32 %728, i8** %732, i32* null, i32* null)
store i32 %733, i32* %3
br label %926
734: ; preds = %713
%735 = load i8*, i8** %9
%736 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.49, i64 0, i64 0), i8* %735)
%737 = icmp eq i64 %736, 0
br i1 %737, label %738, label %755
738: ; preds = %734
%739 = load i32, i32* %8
%740 = icmp ult i32 %739, 3
br i1 %740, label %741, label %746
741: ; preds = %738
%742 = load i8**, i8*** %5
%743 = getelementptr inbounds i8*, i8** %742, i64 0
%744 = load i8*, i8** %743
%745 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %744, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.50, i64 0, i64 0))
store i32 1, i32* %3
br label %926
746: ; preds = %738
%747 = load i32, i32* %7
%748 = or i32 %747, 0
%749 = load i32, i32* %8
%750 = load i8**, i8*** %5
%751 = load i32, i32* %6
%752 = zext i32 %751 to i64
%753 = getelementptr inbounds i8*, i8** %750, i64 %752
%754 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.51, i64 0, i64 0), i8 signext 43, i32 %748, i32 %749, i8** %753, i32* null, i32* null)
store i32 %754, i32* %3
br label %926
755: ; preds = %734
%756 = load i8*, i8** %9
%757 = call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.52, i64 0, i64 0), i8* %756)
%758 = icmp eq i64 %757, 0
br i1 %758, label %759, label %776
759: ; preds = %755
%760 = load i32, i32* %8
%761 = icmp ult i32 %760, 2
br i1 %761, label %762, label %767
762: ; preds = %759
%763 = load i8**, i8*** %5
%764 = getelementptr inbounds i8*, i8** %763, i64 0
%765 = load i8*, i8** %764
%766 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %765, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.53, i64 0, i64 0))
store i32 1, i32* %3
br label %926
767: ; preds = %759
%768 = load i32, i32* %7
%769 = or i32 %768, 0
%770 = load i32, i32* %8
%771 = load i8**, i8*** %5
%772 = load i32, i32* %6
%773 = zext i32 %772 to i64
%774 = getelementptr inbounds i8*, i8** %771, i64 %773
%775 = call i32 @redis_do(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.54, i64 0, i64 0), i8 signext 36, i32 %769, i32 %770, i8** %774, i32* null, i32* null)
store i32 %775, i32* %3
br label %926
776: ; preds = %755
%777 = load i8*, i8** %9
%778 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.55, i64 0, i64 0), i8* %777)
%779 = icmp eq i64 %778, 0
br i1 %779, label %780, label %797
780: ; preds = %776
%781 = load i32, i32* %8
%782 = icmp ult i32 %781, 1
br i1 %782, label %783, label %788
783: ; preds = %780
%784 = load i8**, i8*** %5
%785 = getelementptr inbounds i8*, i8** %784, i64 0
%786 = load i8*, i8** %785
%787 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %786, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
store i32 1, i32* %3
br label %926
788: ; preds = %780
%789 = load i32, i32* %7
%790 = or i32 %789, 36
%791 = load i32, i32* %8
%792 = load i8**, i8*** %5
%793 = load i32, i32* %6
%794 = zext i32 %793 to i64
%795 = getelementptr inbounds i8*, i8** %792, i64 %794
%796 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.56, i64 0, i64 0), i8 signext 58, i32 %790, i32 %791, i8** %795, i32* null, i32* null)
store i32 %796, i32* %3
br label %926
797: ; preds = %776
%798 = load i8*, i8** %9
%799 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.57, i64 0, i64 0), i8* %798)
%800 = icmp eq i64 %799, 0
br i1 %800, label %801, label %818
801: ; preds = %797
%802 = load i32, i32* %8
%803 = icmp ult i32 %802, 2
br i1 %803, label %804, label %809
804: ; preds = %801
%805 = load i8**, i8*** %5
%806 = getelementptr inbounds i8*, i8** %805, i64 0
%807 = load i8*, i8** %806
%808 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %807, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.58, i64 0, i64 0))
store i32 1, i32* %3
br label %926
809: ; preds = %801
%810 = load i32, i32* %7
%811 = or i32 %810, 32
%812 = load i32, i32* %8
%813 = load i8**, i8*** %5
%814 = load i32, i32* %6
%815 = zext i32 %814 to i64
%816 = getelementptr inbounds i8*, i8** %813, i64 %815
%817 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.59, i64 0, i64 0), i8 signext 58, i32 %811, i32 %812, i8** %816, i32* null, i32* null)
store i32 %817, i32* %3
br label %926
818: ; preds = %797
%819 = load i8*, i8** %9
%820 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.60, i64 0, i64 0), i8* %819)
%821 = icmp eq i64 %820, 0
br i1 %821, label %822, label %839
822: ; preds = %818
%823 = load i32, i32* %8
%824 = icmp ult i32 %823, 2
br i1 %824, label %825, label %830
825: ; preds = %822
%826 = load i8**, i8*** %5
%827 = getelementptr inbounds i8*, i8** %826, i64 0
%828 = load i8*, i8** %827
%829 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %828, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.58, i64 0, i64 0))
store i32 1, i32* %3
br label %926
830: ; preds = %822
%831 = load i32, i32* %7
%832 = or i32 %831, 32
%833 = load i32, i32* %8
%834 = load i8**, i8*** %5
%835 = load i32, i32* %6
%836 = zext i32 %835 to i64
%837 = getelementptr inbounds i8*, i8** %834, i64 %836
%838 = call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.61, i64 0, i64 0), i8 signext 58, i32 %832, i32 %833, i8** %837, i32* null, i32* null)
store i32 %838, i32* %3
br label %926
839: ; preds = %818
%840 = load i8*, i8** %9
%841 = call i64 @strcmp(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.62, i64 0, i64 0), i8* %840)
%842 = icmp eq i64 %841, 0
br i1 %842, label %843, label %860
843: ; preds = %839
%844 = load i32, i32* %8
%845 = icmp ult i32 %844, 2
br i1 %845, label %846, label %851
846: ; preds = %843
%847 = load i8**, i8*** %5
%848 = getelementptr inbounds i8*, i8** %847, i64 0
%849 = load i8*, i8** %848
%850 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %849, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.58, i64 0, i64 0))
store i32 1, i32* %3
br label %926
851: ; preds = %843
%852 = load i32, i32* %7
%853 = or i32 %852, 32
%854 = load i32, i32* %8
%855 = load i8**, i8*** %5
%856 = load i32, i32* %6
%857 = zext i32 %856 to i64
%858 = getelementptr inbounds i8*, i8** %855, i64 %857
%859 = call i32 @redis_do(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.63, i64 0, i64 0), i8 signext 58, i32 %853, i32 %854, i8** %858, i32* null, i32* null)
store i32 %859, i32* %3
br label %926
860: ; preds = %839
%861 = load i8*, i8** %9
%862 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.64, i64 0, i64 0), i8* %861)
%863 = icmp eq i64 %862, 0
br i1 %863, label %864, label %881
864: ; preds = %860
%865 = load i32, i32* %8
%866 = icmp ult i32 %865, 1
br i1 %866, label %867, label %872
867: ; preds = %864
%868 = load i8**, i8*** %5
%869 = getelementptr inbounds i8*, i8** %868, i64 0
%870 = load i8*, i8** %869
%871 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %870, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.65, i64 0, i64 0))
store i32 1, i32* %3
br label %926
872: ; preds = %864
%873 = load i32, i32* %7
%874 = or i32 %873, 0
%875 = load i32, i32* %8
%876 = load i8**, i8*** %5
%877 = load i32, i32* %6
%878 = zext i32 %877 to i64
%879 = getelementptr inbounds i8*, i8** %876, i64 %878
%880 = call i32 @redis_do(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.66, i64 0, i64 0), i8 signext 42, i32 %874, i32 %875, i8** %879, i32* null, i32* null)
store i32 %880, i32* %3
br label %926
881: ; preds = %860
%882 = load i8*, i8** %9
%883 = call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.67, i64 0, i64 0), i8* %882)
%884 = icmp eq i64 %883, 0
br i1 %884, label %885, label %902
885: ; preds = %881
%886 = load i32, i32* %8
%887 = icmp ult i32 %886, 1
br i1 %887, label %888, label %893
888: ; preds = %885
%889 = load i8**, i8*** %5
%890 = getelementptr inbounds i8*, i8** %889, i64 0
%891 = load i8*, i8** %890
%892 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %891, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.65, i64 0, i64 0))
store i32 1, i32* %3
br label %926
893: ; preds = %885
%894 = load i32, i32* %7
%895 = or i32 %894, 36
%896 = load i32, i32* %8
%897 = load i8**, i8*** %5
%898 = load i32, i32* %6
%899 = zext i32 %898 to i64
%900 = getelementptr inbounds i8*, i8** %897, i64 %899
%901 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.68, i64 0, i64 0), i8 signext 58, i32 %895, i32 %896, i8** %900, i32* null, i32* null)
store i32 %901, i32* %3
br label %926
902: ; preds = %881
%903 = load i8*, i8** %9
%904 = call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.69, i64 0, i64 0), i8* %903)
%905 = icmp eq i64 %904, 0
br i1 %905, label %906, label %923
906: ; preds = %902
%907 = load i32, i32* %8
%908 = icmp ult i32 %907, 3
br i1 %908, label %909, label %914
909: ; preds = %906
%910 = load i8**, i8*** %5
%911 = getelementptr inbounds i8*, i8** %910, i64 0
%912 = load i8*, i8** %911
%913 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %912, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.70, i64 0, i64 0))
store i32 1, i32* %3
br label %926
914: ; preds = %906
%915 = load i32, i32* %7
%916 = or i32 %915, 32
%917 = load i32, i32* %8
%918 = load i8**, i8*** %5
%919 = load i32, i32* %6
%920 = zext i32 %919 to i64
%921 = getelementptr inbounds i8*, i8** %918, i64 %920
%922 = call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.71, i64 0, i64 0), i8 signext 58, i32 %916, i32 %917, i8** %921, i32* null, i32* null)
store i32 %922, i32* %3
br label %926
923: ; preds = %902
%924 = load i32, i32* @stderr
%925 = call i32 @fprintf(i32 %924, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.72, i64 0, i64 0))
store i32 1, i32* %3
br label %926
926: ; preds = %923, %914, %909, %893, %888, %872, %867, %851, %846, %830, %825, %809, %804, %788, %783, %767, %762, %746, %741, %725, %720, %704, %699, %683, %678, %662, %657, %641, %636, %620, %615, %599, %594, %578, %573, %557, %552, %536, %531, %515, %510, %495, %487, %480, %183, %161, %146, %138, %126, %114, %88
%927 = load i32, i32* %3
ret i32 %927
}

LLVM IR (-O2):
@.str = [5 x i8] c"-env\00"
@.str.1 = [6 x i8] c"-show\00"
@.str.2 = [10 x i8] c"-keysonly\00"
@.str.3 = [6 x i8] c"-keys\00"
@.str.4 = [47 x i8] c"Missing command!\0AUse %s CMD [options] [query]\0A\00"
@.str.10 = [5 x i8] c"hget\00"
@.str.12 = [8 x i8] c"HGETALL\00"
@.str.13 = [6 x i8] c"HMGET\00"
@.str.14 = [5 x i8] c"HGET\00"
@.str.15 = [5 x i8] c"hset\00"
@.str.17 = [6 x i8] c"-vals\00"
@.str.18 = [6 x i8] c"HMSET\00"
@.str.19 = [5 x i8] c"HSET\00"
@.str.20 = [5 x i8] c"hdel\00"
@.str.21 = [15 x i8] c"format: %s %s\0A\00"
@.str.22 = [11 x i8] c"\22hash key\22\00"
@.str.23 = [5 x i8] c"HDEL\00"
@.str.24 = [4 x i8] c"del\00"
@.str.25 = [7 x i8] c"\22item\22\00"
@.str.26 = [4 x i8] c"DEL\00"
@.str.27 = [6 x i8] c"lpush\00"
@.str.28 = [12 x i8] c"\22list item\22\00"
@.str.29 = [6 x i8] c"LPUSH\00"
@.str.30 = [6 x i8] c"rpush\00"
@.str.31 = [6 x i8] c"RPUSH\00"
@.str.32 = [5 x i8] c"lpop\00"
@.str.33 = [7 x i8] c"\22list\22\00"
@.str.34 = [5 x i8] c"LPOP\00"
@.str.35 = [5 x i8] c"rpop\00"
@.str.36 = [5 x i8] c"RPOP\00"
@.str.37 = [7 x i8] c"exists\00"
@.str.38 = [7 x i8] c"EXISTS\00"
@.str.39 = [8 x i8] c"hexists\00"
@.str.40 = [8 x i8] c"HEXISTS\00"
@.str.41 = [4 x i8] c"ttl\00"
@.str.42 = [4 x i8] c"TTL\00"
@.str.43 = [7 x i8] c"expire\00"
@.str.44 = [15 x i8] c"\22item timeout\22\00"
@.str.45 = [7 x i8] c"EXPIRE\00"
@.str.46 = [8 x i8] c"publish\00"
@.str.47 = [15 x i8] c"\22channel data\22\00"
@.str.48 = [8 x i8] c"PUBLISH\00"
@.str.49 = [6 x i8] c"ltrim\00"
@.str.50 = [15 x i8] c"\22list from to\22\00"
@.str.51 = [6 x i8] c"LTRIM\00"
@.str.52 = [7 x i8] c"lindex\00"
@.str.53 = [13 x i8] c"\22list index\22\00"
@.str.54 = [7 x i8] c"LINDEX\00"
@.str.55 = [5 x i8] c"llen\00"
@.str.56 = [5 x i8] c"LLEN\00"
@.str.57 = [5 x i8] c"sadd\00"
@.str.58 = [11 x i8] c"\22set item\22\00"
@.str.59 = [5 x i8] c"SADD\00"
@.str.60 = [5 x i8] c"sdel\00"
@.str.61 = [5 x i8] c"SREM\00"
@.str.62 = [8 x i8] c"sexists\00"
@.str.63 = [10 x i8] c"SISMEMBER\00"
@.str.64 = [5 x i8] c"sget\00"
@.str.65 = [6 x i8] c"\22set\22\00"
@.str.66 = [9 x i8] c"SMEMBERS\00"
@.str.67 = [5 x i8] c"slen\00"
@.str.68 = [6 x i8] c"SCARD\00"
@.str.69 = [6 x i8] c"smove\00"
@.str.70 = [23 x i8] c"\22from-set to-set item\22\00"
@.str.71 = [6 x i8] c"SMOVE\00"
@stderr = global i32 0
@.str.72 = [23 x i8] c"Invalid redis command\0A\00"
@str = [25 x i8] c"Missing hash/key/value's\00"
@str.73 = [34 x i8] c"You at least need to give a hash!\00"
@str.74 = [44 x i8] c"- hget\09 [options] HASH [[field [field...]]\00"
@str.75 = [56 x i8] c"- hset\09 [options] HASH [[field value [field value...]]\00"
@str.76 = [32 x i8] c"- hdel\09 [options] HASH [field]\00"
@str.77 = [24 x i8] c"- del \09 [options] ITEM\00"
@str.78 = [31 x i8] c"- publish [options] QUEUE ITEM\00"
define i32 @redis_cmd(i32 %0, i8** %1) {
%3 = add nsw i32 %0, -1
%4 = icmp eq i32 %3, 0
br i1 %4, label %42, label %5
5: ; preds = %2
%6 = icmp ugt i32 %0, 1
br i1 %6, label %7, label %37
7: ; preds = %5
%8 = zext i32 %0 to i64
br label %9
9: ; preds = %7, %29
%10 = phi i64 [ 1, %7 ], [ %32, %29 ]
%11 = phi i32 [ 0, %7 ], [ %31, %29 ]
%12 = phi i32 [ %3, %7 ], [ %33, %29 ]
%13 = getelementptr inbounds i8*, i8** %1, i64 %10
%14 = load i8*, i8** %13
%15 = tail call i64 @strncmp(i8* %14, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 4)
%16 = icmp eq i64 %15, 0
br i1 %16, label %29, label %17
17: ; preds = %9
%18 = load i8*, i8** %13
%19 = tail call i64 @strncmp(i8* %18, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i64 0, i64 0), i32 5)
%20 = icmp eq i64 %19, 0
br i1 %20, label %29, label %21
21: ; preds = %17
%22 = load i8*, i8** %13
%23 = tail call i64 @strncmp(i8* %22, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0), i32 9)
%24 = icmp eq i64 %23, 0
br i1 %24, label %29, label %25
25: ; preds = %21
%26 = load i8*, i8** %13
%27 = tail call i64 @strncmp(i8* %26, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0), i32 5)
%28 = icmp eq i64 %27, 0
br i1 %28, label %29, label %35
29: ; preds = %25, %21, %17, %9
%30 = phi i32 [ 1, %9 ], [ 2, %17 ], [ 8, %21 ], [ 4, %25 ]
%31 = or i32 %11, %30
%32 = add nuw nsw i64 %10, 1
%33 = add i32 %12, -1
%34 = icmp eq i64 %32, %8
br i1 %34, label %42, label %9
35: ; preds = %25
%36 = trunc i64 %10 to i32
br label %37
37: ; preds = %35, %5
%38 = phi i32 [ %3, %5 ], [ %12, %35 ]
%39 = phi i32 [ 0, %5 ], [ %11, %35 ]
%40 = phi i32 [ 1, %5 ], [ %36, %35 ]
%41 = icmp eq i32 %38, 0
br i1 %41, label %42, label %50
42: ; preds = %29, %2, %37
%43 = load i8*, i8** %1
%44 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @.str.4, i64 0, i64 0), i8* %43)
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.74, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.75, i64 0, i64 0))
%47 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.76, i64 0, i64 0))
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.77, i64 0, i64 0))
%49 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([31 x i8], [31 x i8]* @str.78, i64 0, i64 0))
br label %466
50: ; preds = %37
%51 = zext i32 %40 to i64
%52 = getelementptr inbounds i8*, i8** %1, i64 %51
%53 = load i8*, i8** %52
%54 = add i32 %38, -1
%55 = add i32 %40, 1
%56 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i8* %53)
%57 = icmp eq i64 %56, 0
br i1 %57, label %58, label %80
58: ; preds = %50
%59 = icmp eq i32 %54, 0
br i1 %59, label %60, label %62
60: ; preds = %58
%61 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @str.73, i64 0, i64 0))
br label %466
62: ; preds = %58
%63 = shl i32 %39, 1
%64 = and i32 %63, 2
%65 = xor i32 %64, 2
%66 = or i32 %65, %39
switch i32 %38, label %72 [
i32 2, label %67
i32 3, label %76
]
67: ; preds = %62
%68 = or i32 %66, 128
%69 = zext i32 %55 to i64
%70 = getelementptr inbounds i8*, i8** %1, i64 %69
%71 = tail call i32 @redis_do(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0), i8 signext 42, i32 %68, i32 1, i8** %70, i32* null, i32* null)
br label %466
72: ; preds = %62
%73 = zext i32 %55 to i64
%74 = getelementptr inbounds i8*, i8** %1, i64 %73
%75 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), i8 signext 42, i32 %66, i32 %54, i8** %74, i32* null, i32* null)
br label %466
76: ; preds = %62
%77 = zext i32 %55 to i64
%78 = getelementptr inbounds i8*, i8** %1, i64 %77
%79 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i8 signext 36, i32 %66, i32 2, i8** %78, i32* null, i32* null)
br label %466
80: ; preds = %50
%81 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i8* %53)
%82 = icmp eq i64 %81, 0
br i1 %82, label %83, label %212
83: ; preds = %80
%84 = icmp ult i32 %54, 3
br i1 %84, label %85, label %87
85: ; preds = %83
%86 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @str, i64 0, i64 0))
br label %466
87: ; preds = %83
%88 = lshr i32 %54, 1
%89 = add i32 %55, %88
%90 = zext i32 %89 to i64
%91 = getelementptr inbounds i8*, i8** %1, i64 %90
%92 = load i8*, i8** %91
%93 = tail call i64 @strncmp(i8* %92, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.17, i64 0, i64 0), i32 5)
%94 = icmp eq i64 %93, 0
br i1 %94, label %95, label %204
95: ; preds = %87
%96 = shl i32 %54, 3
%97 = add i32 %96, 8
%98 = tail call i8** @malloc(i32 %97)
%99 = icmp eq i8** %98, null
br i1 %99, label %466, label %100
100: ; preds = %95
%101 = zext i32 %55 to i64
%102 = getelementptr inbounds i8*, i8** %1, i64 %101
%103 = load i8*, i8** %102
store i8* %103, i8** %98
%104 = icmp ugt i32 %54, 3
br i1 %104, label %105, label %198
105: ; preds = %100
%106 = call i32 @llvm.umax.i32(i32 %88, i32 2)
%107 = zext i32 %106 to i64
br label %111
108: ; preds = %176
%109 = trunc i64 %193 to i32
%110 = icmp ugt i32 %54, 5
br i1 %110, label %196, label %198
111: ; preds = %105, %176
%112 = phi i64 [ 1, %105 ], [ %193, %176 ]
%113 = phi i64 [ 1, %105 ], [ %194, %176 ]
%114 = trunc i64 %113 to i32
%115 = add i32 %55, %114
%116 = zext i32 %115 to i64
%117 = getelementptr inbounds i8*, i8** %1, i64 %116
%118 = load i8*, i8** %117
%119 = tail call i32 @strlen(i8* %118)
%120 = add nsw i32 %119, -1
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds i8, i8* %118, i64 %121
%123 = load i8, i8* %122
%124 = icmp eq i8 %123, 44
br i1 %124, label %125, label %131
125: ; preds = %111
%126 = load i8*, i8** %117
%127 = tail call i32 @strlen(i8* %126)
%128 = add nsw i32 %127, -1
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds i8, i8* %126, i64 %129
store i8 0, i8* %130
br label %131
131: ; preds = %125, %111
%132 = add i32 %89, %114
%133 = zext i32 %132 to i64
%134 = getelementptr inbounds i8*, i8** %1, i64 %133
%135 = load i8*, i8** %134
%136 = tail call i32 @strlen(i8* %135)
%137 = add nsw i32 %136, -1
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds i8, i8* %135, i64 %138
%140 = load i8, i8* %139
%141 = icmp eq i8 %140, 44
br i1 %141, label %142, label %148
142: ; preds = %131
%143 = load i8*, i8** %134
%144 = tail call i32 @strlen(i8* %143)
%145 = add nsw i32 %144, -1
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds i8, i8* %143, i64 %146
store i8 0, i8* %147
br label %148
148: ; preds = %142, %131
%149 = load i8*, i8** %117
%150 = tail call i32 @strlen(i8* %149)
%151 = add nsw i32 %150, -1
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds i8, i8* %149, i64 %152
%154 = load i8, i8* %153
%155 = icmp eq i8 %154, 39
br i1 %155, label %156, label %162
156: ; preds = %148
%157 = load i8*, i8** %117
%158 = tail call i32 @strlen(i8* %157)
%159 = add nsw i32 %158, -1
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds i8, i8* %157, i64 %160
store i8 0, i8* %161
br label %162
162: ; preds = %156, %148
%163 = load i8*, i8** %134
%164 = tail call i32 @strlen(i8* %163)
%165 = add nsw i32 %164, -1
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds i8, i8* %163, i64 %166
%168 = load i8, i8* %167
%169 = icmp eq i8 %168, 39
br i1 %169, label %170, label %176
170: ; preds = %162
%171 = load i8*, i8** %134
%172 = tail call i32 @strlen(i8* %171)
%173 = add nsw i32 %172, -1
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds i8, i8* %171, i64 %174
store i8 0, i8* %175
br label %176
176: ; preds = %170, %162
%177 = load i8*, i8** %117
%178 = load i8, i8* %177
%179 = icmp eq i8 %178, 39
%180 = zext i1 %179 to i64
%181 = getelementptr i8, i8* %177, i64 %180
%182 = getelementptr inbounds i8*, i8** %98, i64 %112
store i8* %181, i8** %182
%183 = add nuw nsw i64 %112, 1
%184 = add i32 %115, %88
%185 = zext i32 %184 to i64
%186 = getelementptr inbounds i8*, i8** %1, i64 %185
%187 = load i8*, i8** %186
%188 = load i8, i8* %187
%189 = icmp eq i8 %188, 39
%190 = zext i1 %189 to i64
%191 = getelementptr i8, i8* %187, i64 %190
%192 = getelementptr inbounds i8*, i8** %98, i64 %183
store i8* %191, i8** %192
%193 = add nuw nsw i64 %112, 2
%194 = add nuw nsw i64 %113, 1
%195 = icmp eq i64 %194, %107
br i1 %195, label %108, label %111
196: ; preds = %108
%197 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8 signext 43, i32 %39, i32 %109, i8** %98, i32* null, i32* null)
br label %201
198: ; preds = %100, %108
%199 = phi i32 [ %109, %108 ], [ 1, %100 ]
%200 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), i8 signext 58, i32 %39, i32 %199, i8** %98, i32* null, i32* null)
br label %201
201: ; preds = %198, %196
%202 = phi i32 [ %197, %196 ], [ %200, %198 ]
%203 = tail call i32 @free(i8** %98)
br label %466
204: ; preds = %87
%205 = icmp ugt i32 %54, 4
%206 = zext i32 %55 to i64
%207 = getelementptr inbounds i8*, i8** %1, i64 %206
br i1 %205, label %208, label %210
208: ; preds = %204
%209 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), i8 signext 43, i32 %39, i32 %54, i8** %207, i32* null, i32* null)
br label %466
210: ; preds = %204
%211 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.19, i64 0, i64 0), i8 signext 58, i32 %39, i32 %54, i8** %207, i32* null, i32* null)
br label %466
212: ; preds = %80
%213 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i8* %53)
%214 = icmp eq i64 %213, 0
br i1 %214, label %215, label %224
215: ; preds = %212
%216 = icmp ult i32 %54, 2
br i1 %216, label %217, label %220
217: ; preds = %215
%218 = load i8*, i8** %1
%219 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %218, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
br label %466
220: ; preds = %215
%221 = zext i32 %55 to i64
%222 = getelementptr inbounds i8*, i8** %1, i64 %221
%223 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0), i8 signext 58, i32 %39, i32 %54, i8** %222, i32* null, i32* null)
br label %466
224: ; preds = %212
%225 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0), i8* %53)
%226 = icmp eq i64 %225, 0
br i1 %226, label %227, label %236
227: ; preds = %224
%228 = icmp eq i32 %54, 0
br i1 %228, label %229, label %232
229: ; preds = %227
%230 = load i8*, i8** %1
%231 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %230, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.25, i64 0, i64 0))
br label %466
232: ; preds = %227
%233 = zext i32 %55 to i64
%234 = getelementptr inbounds i8*, i8** %1, i64 %233
%235 = tail call i32 @redis_do(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0), i8 signext 58, i32 %39, i32 %54, i8** %234, i32* null, i32* null)
br label %466
236: ; preds = %224
%237 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.27, i64 0, i64 0), i8* %53)
%238 = icmp eq i64 %237, 0
br i1 %238, label %239, label %248
239: ; preds = %236
%240 = icmp ult i32 %54, 2
br i1 %240, label %241, label %244
241: ; preds = %239
%242 = load i8*, i8** %1
%243 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %242, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.28, i64 0, i64 0))
br label %466
244: ; preds = %239
%245 = zext i32 %55 to i64
%246 = getelementptr inbounds i8*, i8** %1, i64 %245
%247 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0), i8 signext 58, i32 %39, i32 %54, i8** %246, i32* null, i32* null)
br label %466
248: ; preds = %236
%249 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.30, i64 0, i64 0), i8* %53)
%250 = icmp eq i64 %249, 0
br i1 %250, label %251, label %260
251: ; preds = %248
%252 = icmp ult i32 %54, 2
br i1 %252, label %253, label %256
253: ; preds = %251
%254 = load i8*, i8** %1
%255 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %254, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.28, i64 0, i64 0))
br label %466
256: ; preds = %251
%257 = zext i32 %55 to i64
%258 = getelementptr inbounds i8*, i8** %1, i64 %257
%259 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0), i8 signext 58, i32 %39, i32 %54, i8** %258, i32* null, i32* null)
br label %466
260: ; preds = %248
%261 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.32, i64 0, i64 0), i8* %53)
%262 = icmp eq i64 %261, 0
br i1 %262, label %263, label %272
263: ; preds = %260
%264 = icmp eq i32 %54, 0
br i1 %264, label %265, label %268
265: ; preds = %263
%266 = load i8*, i8** %1
%267 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %266, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
br label %466
268: ; preds = %263
%269 = zext i32 %55 to i64
%270 = getelementptr inbounds i8*, i8** %1, i64 %269
%271 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i8 signext 36, i32 %39, i32 %54, i8** %270, i32* null, i32* null)
br label %466
272: ; preds = %260
%273 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.35, i64 0, i64 0), i8* %53)
%274 = icmp eq i64 %273, 0
br i1 %274, label %275, label %284
275: ; preds = %272
%276 = icmp eq i32 %54, 0
br i1 %276, label %277, label %280
277: ; preds = %275
%278 = load i8*, i8** %1
%279 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %278, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
br label %466
280: ; preds = %275
%281 = zext i32 %55 to i64
%282 = getelementptr inbounds i8*, i8** %1, i64 %281
%283 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.36, i64 0, i64 0), i8 signext 36, i32 %39, i32 %54, i8** %282, i32* null, i32* null)
br label %466
284: ; preds = %272
%285 = tail call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.37, i64 0, i64 0), i8* %53)
%286 = icmp eq i64 %285, 0
br i1 %286, label %287, label %297
287: ; preds = %284
%288 = icmp eq i32 %54, 0
br i1 %288, label %289, label %292
289: ; preds = %287
%290 = load i8*, i8** %1
%291 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %290, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.25, i64 0, i64 0))
br label %466
292: ; preds = %287
%293 = or i32 %39, 32
%294 = zext i32 %55 to i64
%295 = getelementptr inbounds i8*, i8** %1, i64 %294
%296 = tail call i32 @redis_do(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.38, i64 0, i64 0), i8 signext 58, i32 %293, i32 %54, i8** %295, i32* null, i32* null)
br label %466
297: ; preds = %284
%298 = tail call i64 @strcmp(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.39, i64 0, i64 0), i8* %53)
%299 = icmp eq i64 %298, 0
br i1 %299, label %300, label %310
300: ; preds = %297
%301 = icmp ult i32 %54, 2
br i1 %301, label %302, label %305
302: ; preds = %300
%303 = load i8*, i8** %1
%304 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %303, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
br label %466
305: ; preds = %300
%306 = or i32 %39, 32
%307 = zext i32 %55 to i64
%308 = getelementptr inbounds i8*, i8** %1, i64 %307
%309 = tail call i32 @redis_do(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.40, i64 0, i64 0), i8 signext 58, i32 %306, i32 %54, i8** %308, i32* null, i32* null)
br label %466
310: ; preds = %297
%311 = tail call i64 @strcmp(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.41, i64 0, i64 0), i8* %53)
%312 = icmp eq i64 %311, 0
br i1 %312, label %313, label %323
313: ; preds = %310
%314 = icmp eq i32 %54, 0
br i1 %314, label %315, label %318
315: ; preds = %313
%316 = load i8*, i8** %1
%317 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %316, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.25, i64 0, i64 0))
br label %466
318: ; preds = %313
%319 = or i32 %39, 36
%320 = zext i32 %55 to i64
%321 = getelementptr inbounds i8*, i8** %1, i64 %320
%322 = tail call i32 @redis_do(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.42, i64 0, i64 0), i8 signext 58, i32 %319, i32 %54, i8** %321, i32* null, i32* null)
br label %466
323: ; preds = %310
%324 = tail call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.43, i64 0, i64 0), i8* %53)
%325 = icmp eq i64 %324, 0
br i1 %325, label %326, label %336
326: ; preds = %323
%327 = icmp ult i32 %54, 2
br i1 %327, label %328, label %331
328: ; preds = %326
%329 = load i8*, i8** %1
%330 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %329, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.44, i64 0, i64 0))
br label %466
331: ; preds = %326
%332 = or i32 %39, 32
%333 = zext i32 %55 to i64
%334 = getelementptr inbounds i8*, i8** %1, i64 %333
%335 = tail call i32 @redis_do(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.45, i64 0, i64 0), i8 signext 58, i32 %332, i32 %54, i8** %334, i32* null, i32* null)
br label %466
336: ; preds = %323
%337 = tail call i64 @strcmp(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.46, i64 0, i64 0), i8* %53)
%338 = icmp eq i64 %337, 0
br i1 %338, label %339, label %349
339: ; preds = %336
%340 = icmp ult i32 %54, 2
br i1 %340, label %341, label %344
341: ; preds = %339
%342 = load i8*, i8** %1
%343 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %342, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.47, i64 0, i64 0))
br label %466
344: ; preds = %339
%345 = or i32 %39, 48
%346 = zext i32 %55 to i64
%347 = getelementptr inbounds i8*, i8** %1, i64 %346
%348 = tail call i32 @redis_do(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.48, i64 0, i64 0), i8 signext 58, i32 %345, i32 %54, i8** %347, i32* null, i32* null)
br label %466
349: ; preds = %336
%350 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.49, i64 0, i64 0), i8* %53)
%351 = icmp eq i64 %350, 0
br i1 %351, label %352, label %361
352: ; preds = %349
%353 = icmp ult i32 %54, 3
br i1 %353, label %354, label %357
354: ; preds = %352
%355 = load i8*, i8** %1
%356 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %355, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.50, i64 0, i64 0))
br label %466
357: ; preds = %352
%358 = zext i32 %55 to i64
%359 = getelementptr inbounds i8*, i8** %1, i64 %358
%360 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.51, i64 0, i64 0), i8 signext 43, i32 %39, i32 %54, i8** %359, i32* null, i32* null)
br label %466
361: ; preds = %349
%362 = tail call i64 @strcmp(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.52, i64 0, i64 0), i8* %53)
%363 = icmp eq i64 %362, 0
br i1 %363, label %364, label %373
364: ; preds = %361
%365 = icmp ult i32 %54, 2
br i1 %365, label %366, label %369
366: ; preds = %364
%367 = load i8*, i8** %1
%368 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %367, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.53, i64 0, i64 0))
br label %466
369: ; preds = %364
%370 = zext i32 %55 to i64
%371 = getelementptr inbounds i8*, i8** %1, i64 %370
%372 = tail call i32 @redis_do(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.54, i64 0, i64 0), i8 signext 36, i32 %39, i32 %54, i8** %371, i32* null, i32* null)
br label %466
373: ; preds = %361
%374 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.55, i64 0, i64 0), i8* %53)
%375 = icmp eq i64 %374, 0
br i1 %375, label %376, label %386
376: ; preds = %373
%377 = icmp eq i32 %54, 0
br i1 %377, label %378, label %381
378: ; preds = %376
%379 = load i8*, i8** %1
%380 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %379, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.33, i64 0, i64 0))
br label %466
381: ; preds = %376
%382 = or i32 %39, 36
%383 = zext i32 %55 to i64
%384 = getelementptr inbounds i8*, i8** %1, i64 %383
%385 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.56, i64 0, i64 0), i8 signext 58, i32 %382, i32 %54, i8** %384, i32* null, i32* null)
br label %466
386: ; preds = %373
%387 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.57, i64 0, i64 0), i8* %53)
%388 = icmp eq i64 %387, 0
br i1 %388, label %389, label %399
389: ; preds = %386
%390 = icmp ult i32 %54, 2
br i1 %390, label %391, label %394
391: ; preds = %389
%392 = load i8*, i8** %1
%393 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %392, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.58, i64 0, i64 0))
br label %466
394: ; preds = %389
%395 = or i32 %39, 32
%396 = zext i32 %55 to i64
%397 = getelementptr inbounds i8*, i8** %1, i64 %396
%398 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.59, i64 0, i64 0), i8 signext 58, i32 %395, i32 %54, i8** %397, i32* null, i32* null)
br label %466
399: ; preds = %386
%400 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.60, i64 0, i64 0), i8* %53)
%401 = icmp eq i64 %400, 0
br i1 %401, label %402, label %412
402: ; preds = %399
%403 = icmp ult i32 %54, 2
br i1 %403, label %404, label %407
404: ; preds = %402
%405 = load i8*, i8** %1
%406 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %405, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.58, i64 0, i64 0))
br label %466
407: ; preds = %402
%408 = or i32 %39, 32
%409 = zext i32 %55 to i64
%410 = getelementptr inbounds i8*, i8** %1, i64 %409
%411 = tail call i32 @redis_do(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.61, i64 0, i64 0), i8 signext 58, i32 %408, i32 %54, i8** %410, i32* null, i32* null)
br label %466
412: ; preds = %399
%413 = tail call i64 @strcmp(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.62, i64 0, i64 0), i8* %53)
%414 = icmp eq i64 %413, 0
br i1 %414, label %415, label %425
415: ; preds = %412
%416 = icmp ult i32 %54, 2
br i1 %416, label %417, label %420
417: ; preds = %415
%418 = load i8*, i8** %1
%419 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %418, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.58, i64 0, i64 0))
br label %466
420: ; preds = %415
%421 = or i32 %39, 32
%422 = zext i32 %55 to i64
%423 = getelementptr inbounds i8*, i8** %1, i64 %422
%424 = tail call i32 @redis_do(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.63, i64 0, i64 0), i8 signext 58, i32 %421, i32 %54, i8** %423, i32* null, i32* null)
br label %466
425: ; preds = %412
%426 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.64, i64 0, i64 0), i8* %53)
%427 = icmp eq i64 %426, 0
br i1 %427, label %428, label %437
428: ; preds = %425
%429 = icmp eq i32 %54, 0
br i1 %429, label %430, label %433
430: ; preds = %428
%431 = load i8*, i8** %1
%432 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %431, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.65, i64 0, i64 0))
br label %466
433: ; preds = %428
%434 = zext i32 %55 to i64
%435 = getelementptr inbounds i8*, i8** %1, i64 %434
%436 = tail call i32 @redis_do(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.66, i64 0, i64 0), i8 signext 42, i32 %39, i32 %54, i8** %435, i32* null, i32* null)
br label %466
437: ; preds = %425
%438 = tail call i64 @strcmp(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.67, i64 0, i64 0), i8* %53)
%439 = icmp eq i64 %438, 0
br i1 %439, label %440, label %450
440: ; preds = %437
%441 = icmp eq i32 %54, 0
br i1 %441, label %442, label %445
442: ; preds = %440
%443 = load i8*, i8** %1
%444 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %443, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.65, i64 0, i64 0))
br label %466
445: ; preds = %440
%446 = or i32 %39, 36
%447 = zext i32 %55 to i64
%448 = getelementptr inbounds i8*, i8** %1, i64 %447
%449 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.68, i64 0, i64 0), i8 signext 58, i32 %446, i32 %54, i8** %448, i32* null, i32* null)
br label %466
450: ; preds = %437
%451 = tail call i64 @strcmp(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.69, i64 0, i64 0), i8* %53)
%452 = icmp eq i64 %451, 0
br i1 %452, label %453, label %463
453: ; preds = %450
%454 = icmp ult i32 %54, 3
br i1 %454, label %455, label %458
455: ; preds = %453
%456 = load i8*, i8** %1
%457 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), i8* %456, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.70, i64 0, i64 0))
br label %466
458: ; preds = %453
%459 = or i32 %39, 32
%460 = zext i32 %55 to i64
%461 = getelementptr inbounds i8*, i8** %1, i64 %460
%462 = tail call i32 @redis_do(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.71, i64 0, i64 0), i8 signext 58, i32 %459, i32 %54, i8** %461, i32* null, i32* null)
br label %466
463: ; preds = %450
%464 = load i32, i32* @stderr
%465 = tail call i32 @fprintf(i32 %464, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.72, i64 0, i64 0))
br label %466
466: ; preds = %60, %67, %72, %76, %85, %217, %220, %229, %232, %241, %244, %253, %256, %265, %268, %277, %280, %289, %292, %302, %305, %315, %318, %328, %331, %341, %344, %354, %357, %366, %369, %378, %381, %391, %394, %404, %407, %417, %420, %430, %433, %442, %445, %455, %458, %463, %201, %95, %210, %208, %42
%467 = phi i32 [ 1, %42 ], [ 1, %60 ], [ %71, %67 ], [ %75, %72 ], [ %79, %76 ], [ 1, %85 ], [ 1, %217 ], [ %223, %220 ], [ 1, %229 ], [ %235, %232 ], [ 1, %241 ], [ %247, %244 ], [ 1, %253 ], [ %259, %256 ], [ 1, %265 ], [ %271, %268 ], [ 1, %277 ], [ %283, %280 ], [ 1, %289 ], [ %296, %292 ], [ 1, %302 ], [ %309, %305 ], [ 1, %315 ], [ %322, %318 ], [ 1, %328 ], [ %335, %331 ], [ 1, %341 ], [ %348, %344 ], [ 1, %354 ], [ %360, %357 ], [ 1, %366 ], [ %372, %369 ], [ 1, %378 ], [ %385, %381 ], [ 1, %391 ], [ %398, %394 ], [ 1, %404 ], [ %411, %407 ], [ 1, %417 ], [ %424, %420 ], [ 1, %430 ], [ %436, %433 ], [ 1, %442 ], [ %449, %445 ], [ 1, %455 ], [ %462, %458 ], [ 1, %463 ], [ %209, %208 ], [ %211, %210 ], [ %202, %201 ], [ -1, %95 ]
ret i32 %467
}