#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 */
size_t sdslen(char *);
size_t strlen(char *);
int /*<<< orphan*/ strncasecmp(char *, char *, int);
int checkCmdValidAndGetTotalLen(int cmdtype, int argtype, int argc, char **argv,
                                size_t *argvlen) {
  size_t len;
  int totlen, j;
  switch (cmdtype) {
  case 1:
    if (argc != 6 && argc != 7) {
      return -1;
    }
    if (argc == 7 && ((argtype == 0 ? sdslen(argv[5])
                                    : (argvlen == NULL ? strlen(argv[5])
                                                       : argvlen[5])) != 7 ||
                      strncasecmp(argv[5], "noreply", 7))) {
      return -1;
    }
    totlen = 0;
    for (j = 0; j < argc - 1; j++) {
      totlen +=
          (argtype == 0 ? sdslen(argv[j])
                        : (argvlen == NULL ? strlen(argv[j]) : argvlen[j])) +
          1;
    }
    totlen += 2 +
              (argtype == 0 ? sdslen(argv[argc - 1])
                            : (argvlen == NULL ? strlen(argv[argc - 1])
                                               : argvlen[argc - 1])) +
              2;
    break;
  case 2:
    if (argc != 7 && argc != 8) {
      return -1;
    }
    if (argc == 8 && ((argtype == 0 ? sdslen(argv[6])
                                    : (argvlen == NULL ? strlen(argv[6])
                                                       : argvlen[6])) != 7 ||
                      strncasecmp(argv[6], "noreply", 7))) {
      return -1;
    }
    totlen = 0;
    for (j = 0; j < argc - 1; j++) {
      totlen +=
          (argtype == 0 ? sdslen(argv[j])
                        : (argvlen == NULL ? strlen(argv[j]) : argvlen[j])) +
          1;
    }
    totlen += 2 +
              (argtype == 0 ? sdslen(argv[argc - 1])
                            : (argvlen == NULL ? strlen(argv[argc - 1])
                                               : argvlen[argc - 1])) +
              2;
    break;
  case 4:
    if (argc != 3) {
      return -1;
    }
    totlen = (argtype == 0 ? sdslen(argv[0])
                           : (argvlen == NULL ? strlen(argv[0]) : argvlen[0])) +
             1 +
             (argtype == 0 ? sdslen(argv[1])
                           : (argvlen == NULL ? strlen(argv[1]) : argvlen[1])) +
             1 +
             (argtype == 0 ? sdslen(argv[2])
                           : (argvlen == NULL ? strlen(argv[2]) : argvlen[2])) +
             2;
    break;
  case 3:
    if (argc <= 1) {
      return -1;
    }
    totlen = 0;
    for (j = 0; j < argc - 1; j++) {
      totlen +=
          (argtype == 0 ? sdslen(argv[j])
                        : (argvlen == NULL ? strlen(argv[j]) : argvlen[j])) +
          1;
    }
    totlen += (argtype == 0 ? sdslen(argv[argc - 1])
                            : (argvlen == NULL ? strlen(argv[argc - 1])
                                               : argvlen[argc - 1])) +
              2;
    break;
  case 5:
    if (argc != 2 && argc != 3) {
      return -1;
    }
    totlen = (argtype == 0 ? sdslen(argv[0])
                           : (argvlen == NULL ? strlen(argv[0]) : argvlen[0])) +
             1 +
             (argtype == 0 ? sdslen(argv[1])
                           : (argvlen == NULL ? strlen(argv[1]) : argvlen[1]));
    if (argc == 3) {
      if (strncasecmp(argv[2], "noreply", 7)) {
        return -1;
      }
      totlen +=
          1 + (argtype == 0 ? sdslen(argv[2])
                            : (argvlen == NULL ? strlen(argv[2]) : argvlen[2]));
    }
    totlen += 2;
    break;
  default:
    totlen = -1;
    break;
  }
  return totlen;
}


x86 assembly (clang, -O0):
<checkCmdValidAndGetTotalLen>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x4,%eax
ja     1a11 <checkCmdValidAndGetTotalLen+0x8e1>
mov    -0x38(%rbp),%rax
lea    0xe94(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpl   $0x6,-0x10(%rbp)
je     1195 <checkCmdValidAndGetTotalLen+0x65>
cmpl   $0x7,-0x10(%rbp)
je     1195 <checkCmdValidAndGetTotalLen+0x65>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
cmpl   $0x7,-0x10(%rbp)
jne    1230 <checkCmdValidAndGetTotalLen+0x100>
cmpl   $0x0,-0xc(%rbp)
jne    11bf <checkCmdValidAndGetTotalLen+0x8f>
mov    -0x18(%rbp),%rax
mov    0x28(%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x40(%rbp)
jmp    11f4 <checkCmdValidAndGetTotalLen+0xc4>
cmpq   $0x0,-0x20(%rbp)
jne    11e0 <checkCmdValidAndGetTotalLen+0xb0>
mov    -0x18(%rbp),%rax
mov    0x28(%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x48(%rbp)
jmp    11ec <checkCmdValidAndGetTotalLen+0xbc>
mov    -0x20(%rbp),%rax
mov    0x28(%rax),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    $0x7,%rax
jne    1224 <checkCmdValidAndGetTotalLen+0xf4>
mov    -0x18(%rbp),%rax
mov    0x28(%rax),%rdi
lea    0xe03(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncasecmp@plt>
cmp    $0x0,%eax
je     1230 <checkCmdValidAndGetTotalLen+0x100>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    12d0 <checkCmdValidAndGetTotalLen+0x1a0>
cmpl   $0x0,-0xc(%rbp)
jne    1273 <checkCmdValidAndGetTotalLen+0x143>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x50(%rbp)
jmp    12b0 <checkCmdValidAndGetTotalLen+0x180>
cmpq   $0x0,-0x20(%rbp)
jne    1298 <checkCmdValidAndGetTotalLen+0x168>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x58(%rbp)
jmp    12a8 <checkCmdValidAndGetTotalLen+0x178>
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rcx
add    $0x1,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    123e <checkCmdValidAndGetTotalLen+0x10e>
cmpl   $0x0,-0xc(%rbp)
jne    12f9 <checkCmdValidAndGetTotalLen+0x1c9>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x60(%rbp)
jmp    1340 <checkCmdValidAndGetTotalLen+0x210>
cmpq   $0x0,-0x20(%rbp)
jne    1323 <checkCmdValidAndGetTotalLen+0x1f3>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x68(%rbp)
jmp    1338 <checkCmdValidAndGetTotalLen+0x208>
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rcx
add    $0x2,%rcx
add    $0x2,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
jmp    1a18 <checkCmdValidAndGetTotalLen+0x8e8>
cmpl   $0x7,-0x10(%rbp)
je     137b <checkCmdValidAndGetTotalLen+0x24b>
cmpl   $0x8,-0x10(%rbp)
je     137b <checkCmdValidAndGetTotalLen+0x24b>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
cmpl   $0x8,-0x10(%rbp)
jne    1416 <checkCmdValidAndGetTotalLen+0x2e6>
cmpl   $0x0,-0xc(%rbp)
jne    13a5 <checkCmdValidAndGetTotalLen+0x275>
mov    -0x18(%rbp),%rax
mov    0x30(%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x70(%rbp)
jmp    13da <checkCmdValidAndGetTotalLen+0x2aa>
cmpq   $0x0,-0x20(%rbp)
jne    13c6 <checkCmdValidAndGetTotalLen+0x296>
mov    -0x18(%rbp),%rax
mov    0x30(%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x78(%rbp)
jmp    13d2 <checkCmdValidAndGetTotalLen+0x2a2>
mov    -0x20(%rbp),%rax
mov    0x30(%rax),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
cmp    $0x7,%rax
jne    140a <checkCmdValidAndGetTotalLen+0x2da>
mov    -0x18(%rbp),%rax
mov    0x30(%rax),%rdi
lea    0xc1d(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncasecmp@plt>
cmp    $0x0,%eax
je     1416 <checkCmdValidAndGetTotalLen+0x2e6>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    14bf <checkCmdValidAndGetTotalLen+0x38f>
cmpl   $0x0,-0xc(%rbp)
jne    1459 <checkCmdValidAndGetTotalLen+0x329>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x80(%rbp)
jmp    149f <checkCmdValidAndGetTotalLen+0x36f>
cmpq   $0x0,-0x20(%rbp)
jne    1481 <checkCmdValidAndGetTotalLen+0x351>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x88(%rbp)
jmp    1494 <checkCmdValidAndGetTotalLen+0x364>
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rcx
add    $0x1,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1424 <checkCmdValidAndGetTotalLen+0x2f4>
cmpl   $0x0,-0xc(%rbp)
jne    14eb <checkCmdValidAndGetTotalLen+0x3bb>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x90(%rbp)
jmp    153e <checkCmdValidAndGetTotalLen+0x40e>
cmpq   $0x0,-0x20(%rbp)
jne    1518 <checkCmdValidAndGetTotalLen+0x3e8>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x98(%rbp)
jmp    1530 <checkCmdValidAndGetTotalLen+0x400>
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rcx
add    $0x2,%rcx
add    $0x2,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
jmp    1a18 <checkCmdValidAndGetTotalLen+0x8e8>
cmpl   $0x3,-0x10(%rbp)
je     1572 <checkCmdValidAndGetTotalLen+0x442>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
cmpl   $0x0,-0xc(%rbp)
jne    1594 <checkCmdValidAndGetTotalLen+0x464>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0xa0(%rbp)
jmp    15d3 <checkCmdValidAndGetTotalLen+0x4a3>
cmpq   $0x0,-0x20(%rbp)
jne    15b7 <checkCmdValidAndGetTotalLen+0x487>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0xa8(%rbp)
jmp    15c5 <checkCmdValidAndGetTotalLen+0x495>
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0xb0(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    1608 <checkCmdValidAndGetTotalLen+0x4d8>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0xb8(%rbp)
jmp    1649 <checkCmdValidAndGetTotalLen+0x519>
cmpq   $0x0,-0x20(%rbp)
jne    162c <checkCmdValidAndGetTotalLen+0x4fc>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0xc0(%rbp)
jmp    163b <checkCmdValidAndGetTotalLen+0x50b>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb0(%rbp),%rax
mov    -0xb8(%rbp),%rcx
add    %rcx,%rax
add    $0x1,%rax
mov    %rax,-0xc8(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    1688 <checkCmdValidAndGetTotalLen+0x558>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0xd0(%rbp)
jmp    16c9 <checkCmdValidAndGetTotalLen+0x599>
cmpq   $0x0,-0x20(%rbp)
jne    16ac <checkCmdValidAndGetTotalLen+0x57c>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0xd8(%rbp)
jmp    16bb <checkCmdValidAndGetTotalLen+0x58b>
mov    -0x20(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0xc8(%rbp),%rax
mov    -0xd0(%rbp),%rcx
add    %rcx,%rax
add    $0x2,%rax
mov    %eax,-0x2c(%rbp)
jmp    1a18 <checkCmdValidAndGetTotalLen+0x8e8>
cmpl   $0x1,-0x10(%rbp)
jg     16fc <checkCmdValidAndGetTotalLen+0x5cc>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    17ae <checkCmdValidAndGetTotalLen+0x67e>
cmpl   $0x0,-0xc(%rbp)
jne    1742 <checkCmdValidAndGetTotalLen+0x612>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0xe0(%rbp)
jmp    178b <checkCmdValidAndGetTotalLen+0x65b>
cmpq   $0x0,-0x20(%rbp)
jne    176a <checkCmdValidAndGetTotalLen+0x63a>
mov    -0x18(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <strlen@plt>
mov    %rax,-0xe8(%rbp)
jmp    177d <checkCmdValidAndGetTotalLen+0x64d>
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rcx
add    $0x1,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    170a <checkCmdValidAndGetTotalLen+0x5da>
cmpl   $0x0,-0xc(%rbp)
jne    17da <checkCmdValidAndGetTotalLen+0x6aa>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0xf0(%rbp)
jmp    182d <checkCmdValidAndGetTotalLen+0x6fd>
cmpq   $0x0,-0x20(%rbp)
jne    1807 <checkCmdValidAndGetTotalLen+0x6d7>
mov    -0x18(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <strlen@plt>
mov    %rax,-0xf8(%rbp)
jmp    181f <checkCmdValidAndGetTotalLen+0x6ef>
mov    -0x20(%rbp),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rcx
add    $0x2,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
jmp    1a18 <checkCmdValidAndGetTotalLen+0x8e8>
cmpl   $0x2,-0x10(%rbp)
je     1867 <checkCmdValidAndGetTotalLen+0x737>
cmpl   $0x3,-0x10(%rbp)
je     1867 <checkCmdValidAndGetTotalLen+0x737>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
cmpl   $0x0,-0xc(%rbp)
jne    1889 <checkCmdValidAndGetTotalLen+0x759>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x100(%rbp)
jmp    18c8 <checkCmdValidAndGetTotalLen+0x798>
cmpq   $0x0,-0x20(%rbp)
jne    18ac <checkCmdValidAndGetTotalLen+0x77c>
mov    -0x18(%rbp),%rax
mov    (%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x108(%rbp)
jmp    18ba <checkCmdValidAndGetTotalLen+0x78a>
mov    -0x20(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x110(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    18fd <checkCmdValidAndGetTotalLen+0x7cd>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x118(%rbp)
jmp    193e <checkCmdValidAndGetTotalLen+0x80e>
cmpq   $0x0,-0x20(%rbp)
jne    1921 <checkCmdValidAndGetTotalLen+0x7f1>
mov    -0x18(%rbp),%rax
mov    0x8(%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x120(%rbp)
jmp    1930 <checkCmdValidAndGetTotalLen+0x800>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    -0x110(%rbp),%rax
mov    -0x118(%rbp),%rcx
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
cmpl   $0x3,-0x10(%rbp)
jne    1a03 <checkCmdValidAndGetTotalLen+0x8d3>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
lea    0x6a9(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncasecmp@plt>
cmp    $0x0,%eax
je     198a <checkCmdValidAndGetTotalLen+0x85a>
movl   $0xffffffff,-0x4(%rbp)
jmp    1a1e <checkCmdValidAndGetTotalLen+0x8ee>
cmpl   $0x0,-0xc(%rbp)
jne    19ad <checkCmdValidAndGetTotalLen+0x87d>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1050 <sdslen@plt>
mov    %rax,-0x128(%rbp)
jmp    19ee <checkCmdValidAndGetTotalLen+0x8be>
cmpq   $0x0,-0x20(%rbp)
jne    19d1 <checkCmdValidAndGetTotalLen+0x8a1>
mov    -0x18(%rbp),%rax
mov    0x10(%rax),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x130(%rbp)
jmp    19e0 <checkCmdValidAndGetTotalLen+0x8b0>
mov    -0x20(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x128(%rbp)
mov    -0x128(%rbp),%rcx
add    $0x1,%rcx
movslq -0x2c(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x2c(%rbp)
jmp    1a18 <checkCmdValidAndGetTotalLen+0x8e8>
movl   $0xffffffff,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<checkCmdValidAndGetTotalLen>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0xffffffff,%r15d
add    $0xffffffff,%edi
cmp    $0x4,%edi
ja     1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    %rcx,%r14
mov    %edx,%r12d
mov    %esi,%r13d
lea    0xea3(%rip),%rax
movslq (%rax,%rdi,4),%rcx
add    %rax,%rcx
mov    %r8,(%rsp)
jmp    *%rcx
mov    %r12d,%eax
and    $0xfffffffe,%eax
cmp    $0x6,%eax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
cmp    $0x7,%r12d
jne    13ce <checkCmdValidAndGetTotalLen+0x29e>
test   %r13d,%r13d
je     1381 <checkCmdValidAndGetTotalLen+0x251>
test   %r8,%r8
je     139a <checkCmdValidAndGetTotalLen+0x26a>
mov    0x28(%r8),%rax
jmp    13a3 <checkCmdValidAndGetTotalLen+0x273>
lea    -0x9(%r12),%eax
cmp    $0xfffffffe,%eax
jb     1524 <checkCmdValidAndGetTotalLen+0x3f4>
cmp    $0x8,%r12d
jne    147a <checkCmdValidAndGetTotalLen+0x34a>
test   %r13d,%r13d
je     138c <checkCmdValidAndGetTotalLen+0x25c>
test   %r8,%r8
je     1446 <checkCmdValidAndGetTotalLen+0x316>
mov    0x30(%r8),%rax
jmp    144f <checkCmdValidAndGetTotalLen+0x31f>
cmp    $0x2,%r12d
jl     1524 <checkCmdValidAndGetTotalLen+0x3f4>
add    $0xffffffff,%r12d
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    1215 <checkCmdValidAndGetTotalLen+0xe5>
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%r14,%rbp,8),%rdi
call   1050 <sdslen@plt>
mov    (%rsp),%r8
lea    (%rbx,%rax,1),%r15
add    $0x1,%r15
add    $0x1,%rbp
movslq %r15d,%rbx
cmp    %rbp,%r12
je     129c <checkCmdValidAndGetTotalLen+0x16c>
test   %r13d,%r13d
je     11f0 <checkCmdValidAndGetTotalLen+0xc0>
test   %r8,%r8
je     1230 <checkCmdValidAndGetTotalLen+0x100>
mov    (%r8,%rbp,8),%rax
jmp    11fd <checkCmdValidAndGetTotalLen+0xcd>
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%r14,%rbp,8),%rdi
call   1030 <strlen@plt>
jmp    11f9 <checkCmdValidAndGetTotalLen+0xc9>
cmp    $0x3,%r12d
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
test   %r13d,%r13d
je     12a5 <checkCmdValidAndGetTotalLen+0x175>
test   %r8,%r8
je     12ec <checkCmdValidAndGetTotalLen+0x1bc>
mov    (%r8),%rax
mov    0x8(%r8),%rcx
lea    (%rax,%rcx,1),%rbx
add    $0x1,%rbx
mov    0x10(%r8),%rax
lea    (%rbx,%rax,1),%r15d
add    $0x3,%r15d
jmp    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    %r12d,%eax
and    $0xfffffffe,%eax
cmp    $0x2,%eax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
test   %r13d,%r13d
je     12d6 <checkCmdValidAndGetTotalLen+0x1a6>
test   %r8,%r8
je     131d <checkCmdValidAndGetTotalLen+0x1ed>
mov    (%r8),%rbp
mov    0x8(%r8),%rax
jmp    1331 <checkCmdValidAndGetTotalLen+0x201>
add    $0x2,%r15
jmp    14d3 <checkCmdValidAndGetTotalLen+0x3a3>
mov    (%r14),%rdi
call   1050 <sdslen@plt>
mov    %rax,%rbx
mov    0x8(%r14),%rdi
call   1050 <sdslen@plt>
add    %rax,%rbx
add    $0x1,%rbx
mov    0x10(%r14),%rdi
call   1050 <sdslen@plt>
lea    (%rbx,%rax,1),%r15d
add    $0x3,%r15d
jmp    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    (%r14),%rdi
call   1050 <sdslen@plt>
mov    %rax,%rbp
mov    0x8(%r14),%rdi
call   1050 <sdslen@plt>
jmp    1331 <checkCmdValidAndGetTotalLen+0x201>
mov    (%r14),%rdi
call   1030 <strlen@plt>
mov    %rax,%rbx
mov    0x8(%r14),%rdi
call   1030 <strlen@plt>
add    %rax,%rbx
add    $0x1,%rbx
mov    0x10(%r14),%rdi
call   1030 <strlen@plt>
lea    (%rbx,%rax,1),%r15d
add    $0x3,%r15d
jmp    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    (%r14),%rdi
call   1030 <strlen@plt>
mov    %rax,%rbp
mov    0x8(%r14),%rdi
call   1030 <strlen@plt>
add    %rax,%rbp
add    $0x1,%rbp
cmp    $0x3,%r12d
jne    151e <checkCmdValidAndGetTotalLen+0x3ee>
mov    0x10(%r14),%r14
lea    0xcc7(%rip),%rsi
mov    %r14,%rdi
mov    $0x7,%edx
call   1040 <strncasecmp@plt>
mov    (%rsp),%rcx
test   %eax,%eax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
test   %r13d,%r13d
je     1505 <checkCmdValidAndGetTotalLen+0x3d5>
test   %rcx,%rcx
je     150f <checkCmdValidAndGetTotalLen+0x3df>
mov    0x10(%rcx),%rax
jmp    1517 <checkCmdValidAndGetTotalLen+0x3e7>
mov    0x28(%r14),%rdi
call   1050 <sdslen@plt>
jmp    13a3 <checkCmdValidAndGetTotalLen+0x273>
mov    0x30(%r14),%rdi
call   1050 <sdslen@plt>
jmp    144f <checkCmdValidAndGetTotalLen+0x31f>
mov    0x28(%r14),%rdi
call   1030 <strlen@plt>
cmp    $0x7,%rax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    0x28(%r14),%rdi
lea    0xc5c(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncasecmp@plt>
mov    (%rsp),%r8
test   %eax,%eax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    %r14,%rbx
add    $0xffffffff,%r12d
xor    %ebp,%ebp
xor    %r14d,%r14d
jmp    13f8 <checkCmdValidAndGetTotalLen+0x2c8>
nopl   0x0(%rax)
mov    (%r8,%rbp,8),%rax
lea    (%r14,%rax,1),%r15
add    $0x1,%r15
add    $0x1,%rbp
movslq %r15d,%r14
cmp    %rbp,%r12
je     141f <checkCmdValidAndGetTotalLen+0x2ef>
test   %r13d,%r13d
je     1410 <checkCmdValidAndGetTotalLen+0x2e0>
test   %r8,%r8
jne    13e0 <checkCmdValidAndGetTotalLen+0x2b0>
mov    (%rbx,%rbp,8),%rdi
call   1030 <strlen@plt>
jmp    1419 <checkCmdValidAndGetTotalLen+0x2e9>
nopl   (%rax)
mov    (%rbx,%rbp,8),%rdi
call   1050 <sdslen@plt>
mov    (%rsp),%r8
jmp    13e4 <checkCmdValidAndGetTotalLen+0x2b4>
add    $0x4,%r15
movslq %r12d,%rax
test   %r13d,%r13d
je     143d <checkCmdValidAndGetTotalLen+0x30d>
test   %r8,%r8
jne    14e0 <checkCmdValidAndGetTotalLen+0x3b0>
mov    (%rbx,%rax,8),%rdi
jmp    14fb <checkCmdValidAndGetTotalLen+0x3cb>
mov    (%rbx,%rax,8),%rdi
jmp    14ed <checkCmdValidAndGetTotalLen+0x3bd>
mov    0x30(%r14),%rdi
call   1030 <strlen@plt>
cmp    $0x7,%rax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    0x30(%r14),%rdi
lea    0xbb0(%rip),%rsi
mov    $0x7,%edx
call   1040 <strncasecmp@plt>
mov    (%rsp),%r8
test   %eax,%eax
jne    1524 <checkCmdValidAndGetTotalLen+0x3f4>
add    $0xffffffff,%r12d
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    14a8 <checkCmdValidAndGetTotalLen+0x378>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    (%r8,%rbp,8),%rax
lea    (%rbx,%rax,1),%r15
add    $0x1,%r15
add    $0x1,%rbp
movslq %r15d,%rbx
cmp    %rbp,%r12
je     14cf <checkCmdValidAndGetTotalLen+0x39f>
test   %r13d,%r13d
je     14c0 <checkCmdValidAndGetTotalLen+0x390>
test   %r8,%r8
jne    1490 <checkCmdValidAndGetTotalLen+0x360>
mov    (%r14,%rbp,8),%rdi
call   1030 <strlen@plt>
jmp    14c9 <checkCmdValidAndGetTotalLen+0x399>
nopl   (%rax)
mov    (%r14,%rbp,8),%rdi
call   1050 <sdslen@plt>
mov    (%rsp),%r8
jmp    1494 <checkCmdValidAndGetTotalLen+0x364>
add    $0x4,%r15
movslq %r12d,%rax
test   %r13d,%r13d
je     14e9 <checkCmdValidAndGetTotalLen+0x3b9>
test   %r8,%r8
je     14f7 <checkCmdValidAndGetTotalLen+0x3c7>
mov    (%r8,%rax,8),%rax
add    %eax,%r15d
jmp    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    (%r14,%rax,8),%rdi
call   1050 <sdslen@plt>
add    %eax,%r15d
jmp    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    (%r14,%rax,8),%rdi
call   1030 <strlen@plt>
add    %eax,%r15d
jmp    1524 <checkCmdValidAndGetTotalLen+0x3f4>
mov    %r14,%rdi
call   1050 <sdslen@plt>
jmp    1517 <checkCmdValidAndGetTotalLen+0x3e7>
mov    %r14,%rdi
call   1030 <strlen@plt>
add    %rax,%rbp
add    $0x1,%rbp
add    $0x2,%ebp
mov    %ebp,%r15d
mov    %r15d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [8 x i8] c"noreply\00"
define i32 @checkCmdValidAndGetTotalLen(i32 %0, i32 %1, i32 %2, i8** %3, i64* %4) {
switch i32 %0, label %309 [
i32 1, label %6
i32 2, label %84
i32 4, label %162
i32 3, label %205
i32 5, label %257
]
6: ; preds = %5
%7 = and i32 %2, -2
%8 = icmp eq i32 %7, 6
br i1 %8, label %9, label %309
9: ; preds = %6
%10 = icmp eq i32 %2, 7
br i1 %10, label %11, label %34
11: ; preds = %9
%12 = icmp eq i32 %1, 0
br i1 %12, label %13, label %17
13: ; preds = %11
%14 = getelementptr inbounds i8*, i8** %3, i64 5
%15 = load i8*, i8** %14
%16 = tail call i64 @sdslen(i8* %15)
br label %26
17: ; preds = %11
%18 = icmp eq i64* %4, null
br i1 %18, label %19, label %23
19: ; preds = %17
%20 = getelementptr inbounds i8*, i8** %3, i64 5
%21 = load i8*, i8** %20
%22 = tail call i64 @strlen(i8* dereferenceable(1) %21)
br label %26
23: ; preds = %17
%24 = getelementptr inbounds i64, i64* %4, i64 5
%25 = load i64, i64* %24
br label %26
26: ; preds = %19, %23, %13
%27 = phi i64 [ %16, %13 ], [ %22, %19 ], [ %25, %23 ]
%28 = icmp eq i64 %27, 7
br i1 %28, label %29, label %309
29: ; preds = %26
%30 = getelementptr inbounds i8*, i8** %3, i64 5
%31 = load i8*, i8** %30
%32 = tail call i32 @strncasecmp(i8* %31, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i32 7)
%33 = icmp eq i32 %32, 0
br i1 %33, label %34, label %309
34: ; preds = %9, %29
%35 = add nsw i32 %2, -1
%36 = icmp eq i32 %1, 0
%37 = icmp eq i64* %4, null
%38 = zext i32 %35 to i64
br label %39
39: ; preds = %34, %54
%40 = phi i64 [ 0, %34 ], [ %58, %54 ]
%41 = phi i64 [ 0, %34 ], [ %60, %54 ]
br i1 %36, label %42, label %46
42: ; preds = %39
%43 = getelementptr inbounds i8*, i8** %3, i64 %40
%44 = load i8*, i8** %43
%45 = tail call i64 @sdslen(i8* %44)
br label %54
46: ; preds = %39
br i1 %37, label %47, label %51
47: ; preds = %46
%48 = getelementptr inbounds i8*, i8** %3, i64 %40
%49 = load i8*, i8** %48
%50 = tail call i64 @strlen(i8* dereferenceable(1) %49)
br label %54
51: ; preds = %46
%52 = getelementptr inbounds i64, i64* %4, i64 %40
%53 = load i64, i64* %52
br label %54
54: ; preds = %47, %51, %42
%55 = phi i64 [ %45, %42 ], [ %50, %47 ], [ %53, %51 ]
%56 = add nsw i64 %41, 1
%57 = add i64 %56, %55
%58 = add nuw nsw i64 %40, 1
%59 = shl i64 %57, 32
%60 = ashr exact i64 %59, 32
%61 = icmp eq i64 %58, %38
br i1 %61, label %62, label %39
62: ; preds = %54
%63 = add i64 %57, 4
%64 = icmp eq i32 %1, 0
br i1 %64, label %65, label %70
65: ; preds = %62
%66 = sext i32 %35 to i64
%67 = getelementptr inbounds i8*, i8** %3, i64 %66
%68 = load i8*, i8** %67
%69 = tail call i64 @sdslen(i8* %68)
br label %80
70: ; preds = %62
%71 = icmp eq i64* %4, null
%72 = sext i32 %35 to i64
br i1 %71, label %73, label %77
73: ; preds = %70
%74 = getelementptr inbounds i8*, i8** %3, i64 %72
%75 = load i8*, i8** %74
%76 = tail call i64 @strlen(i8* dereferenceable(1) %75)
br label %80
77: ; preds = %70
%78 = getelementptr inbounds i64, i64* %4, i64 %72
%79 = load i64, i64* %78
br label %80
80: ; preds = %73, %77, %65
%81 = phi i64 [ %69, %65 ], [ %76, %73 ], [ %79, %77 ]
%82 = add i64 %63, %81
%83 = trunc i64 %82 to i32
br label %309
84: ; preds = %5
%85 = add i32 %2, -9
%86 = icmp ult i32 %85, -2
br i1 %86, label %309, label %87
87: ; preds = %84
%88 = icmp eq i32 %2, 8
br i1 %88, label %89, label %112
89: ; preds = %87
%90 = icmp eq i32 %1, 0
br i1 %90, label %91, label %95
91: ; preds = %89
%92 = getelementptr inbounds i8*, i8** %3, i64 6
%93 = load i8*, i8** %92
%94 = tail call i64 @sdslen(i8* %93)
br label %104
95: ; preds = %89
%96 = icmp eq i64* %4, null
br i1 %96, label %97, label %101
97: ; preds = %95
%98 = getelementptr inbounds i8*, i8** %3, i64 6
%99 = load i8*, i8** %98
%100 = tail call i64 @strlen(i8* dereferenceable(1) %99)
br label %104
101: ; preds = %95
%102 = getelementptr inbounds i64, i64* %4, i64 6
%103 = load i64, i64* %102
br label %104
104: ; preds = %97, %101, %91
%105 = phi i64 [ %94, %91 ], [ %100, %97 ], [ %103, %101 ]
%106 = icmp eq i64 %105, 7
br i1 %106, label %107, label %309
107: ; preds = %104
%108 = getelementptr inbounds i8*, i8** %3, i64 6
%109 = load i8*, i8** %108
%110 = tail call i32 @strncasecmp(i8* %109, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i32 7)
%111 = icmp eq i32 %110, 0
br i1 %111, label %112, label %309
112: ; preds = %87, %107
%113 = add nsw i32 %2, -1
%114 = icmp eq i32 %1, 0
%115 = icmp eq i64* %4, null
%116 = zext i32 %113 to i64
br label %117
117: ; preds = %112, %132
%118 = phi i64 [ 0, %112 ], [ %136, %132 ]
%119 = phi i64 [ 0, %112 ], [ %138, %132 ]
br i1 %114, label %120, label %124
120: ; preds = %117
%121 = getelementptr inbounds i8*, i8** %3, i64 %118
%122 = load i8*, i8** %121
%123 = tail call i64 @sdslen(i8* %122)
br label %132
124: ; preds = %117
br i1 %115, label %125, label %129
125: ; preds = %124
%126 = getelementptr inbounds i8*, i8** %3, i64 %118
%127 = load i8*, i8** %126
%128 = tail call i64 @strlen(i8* dereferenceable(1) %127)
br label %132
129: ; preds = %124
%130 = getelementptr inbounds i64, i64* %4, i64 %118
%131 = load i64, i64* %130
br label %132
132: ; preds = %125, %129, %120
%133 = phi i64 [ %123, %120 ], [ %128, %125 ], [ %131, %129 ]
%134 = add nsw i64 %119, 1
%135 = add i64 %134, %133
%136 = add nuw nsw i64 %118, 1
%137 = shl i64 %135, 32
%138 = ashr exact i64 %137, 32
%139 = icmp eq i64 %136, %116
br i1 %139, label %140, label %117
140: ; preds = %132
%141 = add i64 %135, 4
%142 = icmp eq i32 %1, 0
br i1 %142, label %143, label %148
143: ; preds = %140
%144 = sext i32 %113 to i64
%145 = getelementptr inbounds i8*, i8** %3, i64 %144
%146 = load i8*, i8** %145
%147 = tail call i64 @sdslen(i8* %146)
br label %158
148: ; preds = %140
%149 = icmp eq i64* %4, null
%150 = sext i32 %113 to i64
br i1 %149, label %151, label %155
151: ; preds = %148
%152 = getelementptr inbounds i8*, i8** %3, i64 %150
%153 = load i8*, i8** %152
%154 = tail call i64 @strlen(i8* dereferenceable(1) %153)
br label %158
155: ; preds = %148
%156 = getelementptr inbounds i64, i64* %4, i64 %150
%157 = load i64, i64* %156
br label %158
158: ; preds = %151, %155, %143
%159 = phi i64 [ %147, %143 ], [ %154, %151 ], [ %157, %155 ]
%160 = add i64 %141, %159
%161 = trunc i64 %160 to i32
br label %309
162: ; preds = %5
%163 = icmp eq i32 %2, 3
br i1 %163, label %164, label %309
164: ; preds = %162
%165 = icmp eq i32 %1, 0
br i1 %165, label %168, label %166
166: ; preds = %164
%167 = icmp eq i64* %4, null
br i1 %167, label %179, label %190
168: ; preds = %164
%169 = load i8*, i8** %3
%170 = tail call i64 @sdslen(i8* %169)
%171 = add i64 %170, 1
%172 = getelementptr inbounds i8*, i8** %3, i64 1
%173 = load i8*, i8** %172
%174 = tail call i64 @sdslen(i8* %173)
%175 = add i64 %171, %174
%176 = getelementptr inbounds i8*, i8** %3, i64 2
%177 = load i8*, i8** %176
%178 = tail call i64 @sdslen(i8* %177)
br label %198
179: ; preds = %166
%180 = load i8*, i8** %3
%181 = tail call i64 @strlen(i8* dereferenceable(1) %180)
%182 = add i64 %181, 1
%183 = getelementptr inbounds i8*, i8** %3, i64 1
%184 = load i8*, i8** %183
%185 = tail call i64 @strlen(i8* dereferenceable(1) %184)
%186 = add i64 %182, %185
%187 = getelementptr inbounds i8*, i8** %3, i64 2
%188 = load i8*, i8** %187
%189 = tail call i64 @strlen(i8* dereferenceable(1) %188)
br label %198
190: ; preds = %166
%191 = load i64, i64* %4
%192 = add i64 %191, 1
%193 = getelementptr inbounds i64, i64* %4, i64 1
%194 = load i64, i64* %193
%195 = add i64 %192, %194
%196 = getelementptr inbounds i64, i64* %4, i64 2
%197 = load i64, i64* %196
br label %198
198: ; preds = %179, %190, %168
%199 = phi i64 [ %175, %168 ], [ %186, %179 ], [ %195, %190 ]
%200 = phi i64 [ %178, %168 ], [ %189, %179 ], [ %197, %190 ]
%201 = add i64 %199, 1
%202 = add i64 %201, %200
%203 = trunc i64 %202 to i32
%204 = add i32 %203, 2
br label %309
205: ; preds = %5
%206 = icmp slt i32 %2, 2
br i1 %206, label %309, label %207
207: ; preds = %205
%208 = add nsw i32 %2, -1
%209 = icmp eq i32 %1, 0
%210 = icmp eq i64* %4, null
%211 = zext i32 %208 to i64
br label %212
212: ; preds = %207, %227
%213 = phi i64 [ 0, %207 ], [ %231, %227 ]
%214 = phi i64 [ 0, %207 ], [ %233, %227 ]
br i1 %209, label %215, label %219
215: ; preds = %212
%216 = getelementptr inbounds i8*, i8** %3, i64 %213
%217 = load i8*, i8** %216
%218 = tail call i64 @sdslen(i8* %217)
br label %227
219: ; preds = %212
br i1 %210, label %220, label %224
220: ; preds = %219
%221 = getelementptr inbounds i8*, i8** %3, i64 %213
%222 = load i8*, i8** %221
%223 = tail call i64 @strlen(i8* dereferenceable(1) %222)
br label %227
224: ; preds = %219
%225 = getelementptr inbounds i64, i64* %4, i64 %213
%226 = load i64, i64* %225
br label %227
227: ; preds = %220, %224, %215
%228 = phi i64 [ %218, %215 ], [ %223, %220 ], [ %226, %224 ]
%229 = add nsw i64 %214, 1
%230 = add i64 %229, %228
%231 = add nuw nsw i64 %213, 1
%232 = shl i64 %230, 32
%233 = ashr exact i64 %232, 32
%234 = icmp eq i64 %231, %211
br i1 %234, label %235, label %212
235: ; preds = %227
%236 = add i64 %230, 2
%237 = icmp eq i32 %1, 0
br i1 %237, label %238, label %243
238: ; preds = %235
%239 = sext i32 %208 to i64
%240 = getelementptr inbounds i8*, i8** %3, i64 %239
%241 = load i8*, i8** %240
%242 = tail call i64 @sdslen(i8* %241)
br label %253
243: ; preds = %235
%244 = icmp eq i64* %4, null
%245 = sext i32 %208 to i64
br i1 %244, label %246, label %250
246: ; preds = %243
%247 = getelementptr inbounds i8*, i8** %3, i64 %245
%248 = load i8*, i8** %247
%249 = tail call i64 @strlen(i8* dereferenceable(1) %248)
br label %253
250: ; preds = %243
%251 = getelementptr inbounds i64, i64* %4, i64 %245
%252 = load i64, i64* %251
br label %253
253: ; preds = %246, %250, %238
%254 = phi i64 [ %242, %238 ], [ %249, %246 ], [ %252, %250 ]
%255 = add i64 %236, %254
%256 = trunc i64 %255 to i32
br label %309
257: ; preds = %5
%258 = and i32 %2, -2
%259 = icmp eq i32 %258, 2
br i1 %259, label %260, label %309
260: ; preds = %257
%261 = icmp eq i32 %1, 0
br i1 %261, label %264, label %262
262: ; preds = %260
%263 = icmp eq i64* %4, null
br i1 %263, label %270, label %276
264: ; preds = %260
%265 = load i8*, i8** %3
%266 = tail call i64 @sdslen(i8* %265)
%267 = getelementptr inbounds i8*, i8** %3, i64 1
%268 = load i8*, i8** %267
%269 = tail call i64 @sdslen(i8* %268)
br label %280
270: ; preds = %262
%271 = load i8*, i8** %3
%272 = tail call i64 @strlen(i8* dereferenceable(1) %271)
%273 = getelementptr inbounds i8*, i8** %3, i64 1
%274 = load i8*, i8** %273
%275 = tail call i64 @strlen(i8* dereferenceable(1) %274)
br label %280
276: ; preds = %262
%277 = load i64, i64* %4
%278 = getelementptr inbounds i64, i64* %4, i64 1
%279 = load i64, i64* %278
br label %280
280: ; preds = %270, %276, %264
%281 = phi i64 [ %266, %264 ], [ %272, %270 ], [ %277, %276 ]
%282 = phi i64 [ %269, %264 ], [ %275, %270 ], [ %279, %276 ]
%283 = add i64 %281, 1
%284 = add i64 %283, %282
%285 = icmp eq i32 %2, 3
br i1 %285, label %286, label %305
286: ; preds = %280
%287 = getelementptr inbounds i8*, i8** %3, i64 2
%288 = load i8*, i8** %287
%289 = tail call i32 @strncasecmp(i8* %288, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i32 7)
%290 = icmp eq i32 %289, 0
br i1 %290, label %291, label %309
291: ; preds = %286
br i1 %261, label %292, label %294
292: ; preds = %291
%293 = tail call i64 @sdslen(i8* %288)
br label %301
294: ; preds = %291
%295 = icmp eq i64* %4, null
br i1 %295, label %296, label %298
296: ; preds = %294
%297 = tail call i64 @strlen(i8* dereferenceable(1) %288)
br label %301
298: ; preds = %294
%299 = getelementptr inbounds i64, i64* %4, i64 2
%300 = load i64, i64* %299
br label %301
301: ; preds = %296, %298, %292
%302 = phi i64 [ %293, %292 ], [ %297, %296 ], [ %300, %298 ]
%303 = add i64 %284, 1
%304 = add i64 %303, %302
br label %305
305: ; preds = %301, %280
%306 = phi i64 [ %304, %301 ], [ %284, %280 ]
%307 = trunc i64 %306 to i32
%308 = add nsw i32 %307, 2
br label %309
309: ; preds = %80, %158, %198, %253, %305, %5, %286, %257, %205, %162, %104, %107, %84, %26, %29, %6
%310 = phi i32 [ -1, %6 ], [ -1, %29 ], [ -1, %26 ], [ -1, %84 ], [ -1, %107 ], [ -1, %104 ], [ -1, %162 ], [ -1, %205 ], [ -1, %257 ], [ -1, %286 ], [ %308, %305 ], [ %256, %253 ], [ %204, %198 ], [ %161, %158 ], [ %83, %80 ], [ -1, %5 ]
ret i32 %310
}