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

/* Forward declarations */

/* Type definitions */
typedef int unyb;
typedef int lnyb;

/* Variables and functions */
int qs_strncmp(const char *s, const char *qs, register size_t n) {
  int i = 0;
  register unsigned char u1, u2, unyb, lnyb;
  while (n-- > 0) {
    u1 = (unsigned char)*s++;
    u2 = (unsigned char)*qs++;
    if (!((((u1) == '=') || ((u1) == '#') || ((u1) == '&') || ((u1) == '\0'))
              ? 0
              : 1)) {
      u1 = '\0';
    }
    if (!((((u2) == '=') || ((u2) == '#') || ((u2) == '&') || ((u2) == '\0'))
              ? 0
              : 1)) {
      u2 = '\0';
    }
    if (u1 == '+') {
      u1 = ' ';
    }
    if (u1 == '%') {
      unyb = (unsigned char)*s++;
      lnyb = (unsigned char)*s++;
      if (((((unyb) >= '0' && (unyb) <= '9') ||
            ((unyb) >= 'A' && (unyb) <= 'F') ||
            ((unyb) >= 'a' && (unyb) <= 'f'))
               ? 1
               : 0) &&
          ((((lnyb) >= '0' && (lnyb) <= '9') ||
            ((lnyb) >= 'A' && (lnyb) <= 'F') ||
            ((lnyb) >= 'a' && (lnyb) <= 'f'))
               ? 1
               : 0))
        u1 = ((((unyb) >= '0' && (unyb) <= '9')   ? (unyb)-48
               : ((unyb) >= 'A' && (unyb) <= 'F') ? (unyb)-55
               : ((unyb) >= 'a' && (unyb) <= 'f') ? (unyb)-87
                                                  : 0) *
              16) +
             (((lnyb) >= '0' && (lnyb) <= '9')   ? (lnyb)-48
              : ((lnyb) >= 'A' && (lnyb) <= 'F') ? (lnyb)-55
              : ((lnyb) >= 'a' && (lnyb) <= 'f') ? (lnyb)-87
                                                 : 0);
      else
        u1 = '\0';
    }
    if (u2 == '+') {
      u2 = ' ';
    }
    if (u2 == '%') {
      unyb = (unsigned char)*qs++;
      lnyb = (unsigned char)*qs++;
      if (((((unyb) >= '0' && (unyb) <= '9') ||
            ((unyb) >= 'A' && (unyb) <= 'F') ||
            ((unyb) >= 'a' && (unyb) <= 'f'))
               ? 1
               : 0) &&
          ((((lnyb) >= '0' && (lnyb) <= '9') ||
            ((lnyb) >= 'A' && (lnyb) <= 'F') ||
            ((lnyb) >= 'a' && (lnyb) <= 'f'))
               ? 1
               : 0))
        u2 = ((((unyb) >= '0' && (unyb) <= '9')   ? (unyb)-48
               : ((unyb) >= 'A' && (unyb) <= 'F') ? (unyb)-55
               : ((unyb) >= 'a' && (unyb) <= 'f') ? (unyb)-87
                                                  : 0) *
              16) +
             (((lnyb) >= '0' && (lnyb) <= '9')   ? (lnyb)-48
              : ((lnyb) >= 'A' && (lnyb) <= 'F') ? (lnyb)-55
              : ((lnyb) >= 'a' && (lnyb) <= 'f') ? (lnyb)-87
                                                 : 0);
      else
        u2 = '\0';
    }
    if (u1 != u2)
      return u1 - u2;
    if (u1 == '\0')
      return 0;
    i++;
  }
  if (((((*qs) == '=') || ((*qs) == '#') || ((*qs) == '&') || ((*qs) == '\0'))
           ? 0
           : 1))
    return -1;
  else
    return 0;
}


x86 assembly (clang, -O0):
<qs_strncmp>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x20(%rbp)
cmp    $0x0,%rax
jbe    1711 <qs_strncmp+0x611>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%al
mov    %al,-0x25(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%al
mov    %al,-0x26(%rbp)
movzbl -0x25(%rbp),%eax
cmp    $0x3d,%eax
je     118c <qs_strncmp+0x8c>
movzbl -0x25(%rbp),%eax
cmp    $0x23,%eax
je     118c <qs_strncmp+0x8c>
movzbl -0x25(%rbp),%eax
cmp    $0x26,%eax
je     118c <qs_strncmp+0x8c>
movzbl -0x25(%rbp),%eax
cmp    $0x0,%eax
jne    119b <qs_strncmp+0x9b>
xor    %eax,%eax
test   $0x1,%al
jne    11ae <qs_strncmp+0xae>
jmp    11aa <qs_strncmp+0xaa>
mov    $0x1,%al
test   $0x1,%al
jne    11ae <qs_strncmp+0xae>
jmp    11aa <qs_strncmp+0xaa>
movb   $0x0,-0x25(%rbp)
movzbl -0x26(%rbp),%eax
cmp    $0x3d,%eax
je     11e2 <qs_strncmp+0xe2>
movzbl -0x26(%rbp),%eax
cmp    $0x23,%eax
je     11e2 <qs_strncmp+0xe2>
movzbl -0x26(%rbp),%eax
cmp    $0x26,%eax
je     11e2 <qs_strncmp+0xe2>
movzbl -0x26(%rbp),%eax
cmp    $0x0,%eax
jne    11f1 <qs_strncmp+0xf1>
xor    %eax,%eax
test   $0x1,%al
jne    1204 <qs_strncmp+0x104>
jmp    1200 <qs_strncmp+0x100>
mov    $0x1,%al
test   $0x1,%al
jne    1204 <qs_strncmp+0x104>
jmp    1200 <qs_strncmp+0x100>
movb   $0x0,-0x26(%rbp)
movzbl -0x25(%rbp),%eax
cmp    $0x2b,%eax
jne    1215 <qs_strncmp+0x115>
movb   $0x20,-0x25(%rbp)
movzbl -0x25(%rbp),%eax
cmp    $0x25,%eax
jne    1466 <qs_strncmp+0x366>
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%al
mov    %al,-0x27(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x10(%rbp)
mov    (%rax),%al
mov    %al,-0x28(%rbp)
movzbl -0x27(%rbp),%eax
cmp    $0x30,%eax
jl     1264 <qs_strncmp+0x164>
movzbl -0x27(%rbp),%eax
cmp    $0x39,%eax
jle    1298 <qs_strncmp+0x198>
movzbl -0x27(%rbp),%eax
cmp    $0x41,%eax
jl     127e <qs_strncmp+0x17e>
movzbl -0x27(%rbp),%eax
cmp    $0x46,%eax
jle    1298 <qs_strncmp+0x198>
movzbl -0x27(%rbp),%eax
cmp    $0x61,%eax
jl     12a7 <qs_strncmp+0x1a7>
movzbl -0x27(%rbp),%eax
cmp    $0x66,%eax
jg     12a7 <qs_strncmp+0x1a7>
mov    $0x1,%al
test   $0x1,%al
jne    12b6 <qs_strncmp+0x1b6>
jmp    145d <qs_strncmp+0x35d>
xor    %eax,%eax
test   $0x1,%al
jne    12b6 <qs_strncmp+0x1b6>
jmp    145d <qs_strncmp+0x35d>
movzbl -0x28(%rbp),%eax
cmp    $0x30,%eax
jl     12d0 <qs_strncmp+0x1d0>
movzbl -0x28(%rbp),%eax
cmp    $0x39,%eax
jle    1304 <qs_strncmp+0x204>
movzbl -0x28(%rbp),%eax
cmp    $0x41,%eax
jl     12ea <qs_strncmp+0x1ea>
movzbl -0x28(%rbp),%eax
cmp    $0x46,%eax
jle    1304 <qs_strncmp+0x204>
movzbl -0x28(%rbp),%eax
cmp    $0x61,%eax
jl     1313 <qs_strncmp+0x213>
movzbl -0x28(%rbp),%eax
cmp    $0x66,%eax
jg     1313 <qs_strncmp+0x213>
mov    $0x1,%al
test   $0x1,%al
jne    1322 <qs_strncmp+0x222>
jmp    145d <qs_strncmp+0x35d>
xor    %eax,%eax
test   $0x1,%al
jne    1322 <qs_strncmp+0x222>
jmp    145d <qs_strncmp+0x35d>
movzbl -0x27(%rbp),%eax
cmp    $0x30,%eax
jl     134b <qs_strncmp+0x24b>
movzbl -0x27(%rbp),%eax
cmp    $0x39,%eax
jg     134b <qs_strncmp+0x24b>
movzbl -0x27(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x2c(%rbp)
jmp    13b3 <qs_strncmp+0x2b3>
movzbl -0x27(%rbp),%eax
cmp    $0x41,%eax
jl     1374 <qs_strncmp+0x274>
movzbl -0x27(%rbp),%eax
cmp    $0x46,%eax
jg     1374 <qs_strncmp+0x274>
movzbl -0x27(%rbp),%eax
sub    $0x37,%eax
mov    %eax,-0x30(%rbp)
jmp    13ad <qs_strncmp+0x2ad>
movzbl -0x27(%rbp),%eax
cmp    $0x61,%eax
jl     139d <qs_strncmp+0x29d>
movzbl -0x27(%rbp),%eax
cmp    $0x66,%eax
jg     139d <qs_strncmp+0x29d>
movzbl -0x27(%rbp),%eax
sub    $0x57,%eax
mov    %eax,-0x34(%rbp)
jmp    13a7 <qs_strncmp+0x2a7>
xor    %eax,%eax
mov    %eax,-0x34(%rbp)
jmp    13a7 <qs_strncmp+0x2a7>
mov    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0x38(%rbp)
movzbl -0x28(%rbp),%eax
cmp    $0x30,%eax
jl     13e5 <qs_strncmp+0x2e5>
movzbl -0x28(%rbp),%eax
cmp    $0x39,%eax
jg     13e5 <qs_strncmp+0x2e5>
movzbl -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x3c(%rbp)
jmp    144d <qs_strncmp+0x34d>
movzbl -0x28(%rbp),%eax
cmp    $0x41,%eax
jl     140e <qs_strncmp+0x30e>
movzbl -0x28(%rbp),%eax
cmp    $0x46,%eax
jg     140e <qs_strncmp+0x30e>
movzbl -0x28(%rbp),%eax
sub    $0x37,%eax
mov    %eax,-0x40(%rbp)
jmp    1447 <qs_strncmp+0x347>
movzbl -0x28(%rbp),%eax
cmp    $0x61,%eax
jl     1437 <qs_strncmp+0x337>
movzbl -0x28(%rbp),%eax
cmp    $0x66,%eax
jg     1437 <qs_strncmp+0x337>
movzbl -0x28(%rbp),%eax
sub    $0x57,%eax
mov    %eax,-0x44(%rbp)
jmp    1441 <qs_strncmp+0x341>
xor    %eax,%eax
mov    %eax,-0x44(%rbp)
jmp    1441 <qs_strncmp+0x341>
mov    -0x44(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x3c(%rbp),%ecx
add    %ecx,%eax
mov    %al,-0x25(%rbp)
jmp    1461 <qs_strncmp+0x361>
movb   $0x0,-0x25(%rbp)
jmp    1466 <qs_strncmp+0x366>
movzbl -0x26(%rbp),%eax
cmp    $0x2b,%eax
jne    1477 <qs_strncmp+0x377>
movb   $0x20,-0x26(%rbp)
movzbl -0x26(%rbp),%eax
cmp    $0x25,%eax
jne    16c8 <qs_strncmp+0x5c8>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%al
mov    %al,-0x27(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
mov    (%rax),%al
mov    %al,-0x28(%rbp)
movzbl -0x27(%rbp),%eax
cmp    $0x30,%eax
jl     14c6 <qs_strncmp+0x3c6>
movzbl -0x27(%rbp),%eax
cmp    $0x39,%eax
jle    14fa <qs_strncmp+0x3fa>
movzbl -0x27(%rbp),%eax
cmp    $0x41,%eax
jl     14e0 <qs_strncmp+0x3e0>
movzbl -0x27(%rbp),%eax
cmp    $0x46,%eax
jle    14fa <qs_strncmp+0x3fa>
movzbl -0x27(%rbp),%eax
cmp    $0x61,%eax
jl     1509 <qs_strncmp+0x409>
movzbl -0x27(%rbp),%eax
cmp    $0x66,%eax
jg     1509 <qs_strncmp+0x409>
mov    $0x1,%al
test   $0x1,%al
jne    1518 <qs_strncmp+0x418>
jmp    16bf <qs_strncmp+0x5bf>
xor    %eax,%eax
test   $0x1,%al
jne    1518 <qs_strncmp+0x418>
jmp    16bf <qs_strncmp+0x5bf>
movzbl -0x28(%rbp),%eax
cmp    $0x30,%eax
jl     1532 <qs_strncmp+0x432>
movzbl -0x28(%rbp),%eax
cmp    $0x39,%eax
jle    1566 <qs_strncmp+0x466>
movzbl -0x28(%rbp),%eax
cmp    $0x41,%eax
jl     154c <qs_strncmp+0x44c>
movzbl -0x28(%rbp),%eax
cmp    $0x46,%eax
jle    1566 <qs_strncmp+0x466>
movzbl -0x28(%rbp),%eax
cmp    $0x61,%eax
jl     1575 <qs_strncmp+0x475>
movzbl -0x28(%rbp),%eax
cmp    $0x66,%eax
jg     1575 <qs_strncmp+0x475>
mov    $0x1,%al
test   $0x1,%al
jne    1584 <qs_strncmp+0x484>
jmp    16bf <qs_strncmp+0x5bf>
xor    %eax,%eax
test   $0x1,%al
jne    1584 <qs_strncmp+0x484>
jmp    16bf <qs_strncmp+0x5bf>
movzbl -0x27(%rbp),%eax
cmp    $0x30,%eax
jl     15ad <qs_strncmp+0x4ad>
movzbl -0x27(%rbp),%eax
cmp    $0x39,%eax
jg     15ad <qs_strncmp+0x4ad>
movzbl -0x27(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x48(%rbp)
jmp    1615 <qs_strncmp+0x515>
movzbl -0x27(%rbp),%eax
cmp    $0x41,%eax
jl     15d6 <qs_strncmp+0x4d6>
movzbl -0x27(%rbp),%eax
cmp    $0x46,%eax
jg     15d6 <qs_strncmp+0x4d6>
movzbl -0x27(%rbp),%eax
sub    $0x37,%eax
mov    %eax,-0x4c(%rbp)
jmp    160f <qs_strncmp+0x50f>
movzbl -0x27(%rbp),%eax
cmp    $0x61,%eax
jl     15ff <qs_strncmp+0x4ff>
movzbl -0x27(%rbp),%eax
cmp    $0x66,%eax
jg     15ff <qs_strncmp+0x4ff>
movzbl -0x27(%rbp),%eax
sub    $0x57,%eax
mov    %eax,-0x50(%rbp)
jmp    1609 <qs_strncmp+0x509>
xor    %eax,%eax
mov    %eax,-0x50(%rbp)
jmp    1609 <qs_strncmp+0x509>
mov    -0x50(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
shl    $0x4,%eax
mov    %eax,-0x54(%rbp)
movzbl -0x28(%rbp),%eax
cmp    $0x30,%eax
jl     1647 <qs_strncmp+0x547>
movzbl -0x28(%rbp),%eax
cmp    $0x39,%eax
jg     1647 <qs_strncmp+0x547>
movzbl -0x28(%rbp),%eax
sub    $0x30,%eax
mov    %eax,-0x58(%rbp)
jmp    16af <qs_strncmp+0x5af>
movzbl -0x28(%rbp),%eax
cmp    $0x41,%eax
jl     1670 <qs_strncmp+0x570>
movzbl -0x28(%rbp),%eax
cmp    $0x46,%eax
jg     1670 <qs_strncmp+0x570>
movzbl -0x28(%rbp),%eax
sub    $0x37,%eax
mov    %eax,-0x5c(%rbp)
jmp    16a9 <qs_strncmp+0x5a9>
movzbl -0x28(%rbp),%eax
cmp    $0x61,%eax
jl     1699 <qs_strncmp+0x599>
movzbl -0x28(%rbp),%eax
cmp    $0x66,%eax
jg     1699 <qs_strncmp+0x599>
movzbl -0x28(%rbp),%eax
sub    $0x57,%eax
mov    %eax,-0x60(%rbp)
jmp    16a3 <qs_strncmp+0x5a3>
xor    %eax,%eax
mov    %eax,-0x60(%rbp)
jmp    16a3 <qs_strncmp+0x5a3>
mov    -0x60(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x54(%rbp),%eax
mov    -0x58(%rbp),%ecx
add    %ecx,%eax
mov    %al,-0x26(%rbp)
jmp    16c3 <qs_strncmp+0x5c3>
movb   $0x0,-0x26(%rbp)
jmp    16c8 <qs_strncmp+0x5c8>
movzbl -0x25(%rbp),%eax
movzbl -0x26(%rbp),%ecx
cmp    %ecx,%eax
je     16ea <qs_strncmp+0x5ea>
movzbl -0x25(%rbp),%eax
movzbl -0x26(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x4(%rbp)
jmp    1782 <qs_strncmp+0x682>
movzbl -0x25(%rbp),%eax
cmp    $0x0,%eax
jne    1703 <qs_strncmp+0x603>
movl   $0x0,-0x4(%rbp)
jmp    1782 <qs_strncmp+0x682>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1117 <qs_strncmp+0x17>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3d,%eax
je     1751 <qs_strncmp+0x651>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x23,%eax
je     1751 <qs_strncmp+0x651>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x26,%eax
je     1751 <qs_strncmp+0x651>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1760 <qs_strncmp+0x660>
xor    %eax,%eax
test   $0x1,%al
jne    176f <qs_strncmp+0x66f>
jmp    177b <qs_strncmp+0x67b>
mov    $0x1,%al
test   $0x1,%al
jne    176f <qs_strncmp+0x66f>
jmp    177b <qs_strncmp+0x67b>
movl   $0xffffffff,-0x4(%rbp)
jmp    1782 <qs_strncmp+0x682>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<qs_strncmp>:
push   %rbp
push   %r15
push   %r14
push   %rbx
add    $0x1,%rdx
movdqa 0xeee(%rip),%xmm0
xor    %r8d,%r8d
movabs $0x3f0000003f,%r9
mov    $0x20,%r10d
cs nopw 0x0(%rax,%rax,1)
nop
add    $0xffffffffffffffff,%rdx
je     1321 <qs_strncmp+0x221>
movzbl (%rdi),%eax
movd   %eax,%xmm1
punpcklbw %xmm1,%xmm1
pshuflw $0x0,%xmm1,%xmm1
pcmpeqb %xmm0,%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
movmskps %xmm1,%ecx
xor    %ebp,%ebp
test   %ecx,%ecx
je     1161 <qs_strncmp+0x61>
xor    %eax,%eax
movzbl (%rsi),%ecx
cmp    $0x23,%cl
mov    %ecx,%ebx
cmove  %ebp,%ebx
cmp    $0x3d,%cl
cmove  %ebp,%ebx
cmp    $0x26,%cl
cmove  %ebp,%ebx
test   %cl,%cl
cmove  %ebp,%ebx
mov    $0x20,%r14d
cmp    $0x2b,%al
je     118a <qs_strncmp+0x8a>
mov    %eax,%r14d
cmp    $0x25,%r14b
jne    1200 <qs_strncmp+0x100>
lea    0x3(%rdi),%r11
movzbl 0x1(%rdi),%eax
movzbl 0x2(%rdi),%r15d
lea    -0x30(%rax),%ecx
cmp    $0xa,%cl
jb     11c3 <qs_strncmp+0xc3>
xor    %r14d,%r14d
lea    -0x41(%rax),%ebp
cmp    $0x25,%bpl
ja     124a <qs_strncmp+0x14a>
movzbl %bpl,%edi
bt     %rdi,%r9
jae    124a <qs_strncmp+0x14a>
lea    -0x30(%r15),%ebp
cmp    $0xa,%bpl
jb     11e4 <qs_strncmp+0xe4>
xor    %r14d,%r14d
lea    -0x41(%r15),%edi
cmp    $0x25,%dil
ja     124a <qs_strncmp+0x14a>
movzbl %dil,%edi
bt     %rdi,%r9
jae    124a <qs_strncmp+0x14a>
cmp    $0xa,%cl
jb     1218 <qs_strncmp+0x118>
lea    -0x41(%rax),%ecx
cmp    $0x5,%cl
ja     1209 <qs_strncmp+0x109>
add    $0xc9,%al
mov    %eax,%ecx
jmp    1218 <qs_strncmp+0x118>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rdi
mov    %rdi,%r11
jmp    124a <qs_strncmp+0x14a>
lea    -0x61(%rax),%ecx
add    $0xa9,%al
cmp    $0x6,%cl
movzbl %al,%ecx
cmovae %r8d,%ecx
shl    $0x4,%cl
cmp    $0xa,%bpl
jb     1244 <qs_strncmp+0x144>
lea    -0x41(%r15),%eax
cmp    $0x5,%al
ja     1232 <qs_strncmp+0x132>
add    $0xc9,%r15b
mov    %r15d,%ebp
jmp    1244 <qs_strncmp+0x144>
lea    -0x61(%r15),%eax
add    $0xa9,%r15b
cmp    $0x6,%al
movzbl %r15b,%ebp
cmovae %r8d,%ebp
add    %cl,%bpl
mov    %ebp,%r14d
cmp    $0x2b,%bl
movzbl %bl,%ebp
cmove  %r10d,%ebp
cmp    $0x25,%bpl
jne    12c0 <qs_strncmp+0x1c0>
lea    0x3(%rsi),%r15
movzbl 0x1(%rsi),%eax
movzbl 0x2(%rsi),%esi
lea    -0x30(%rax),%edi
cmp    $0xa,%dil
jb     1282 <qs_strncmp+0x182>
xor    %ebp,%ebp
lea    -0x41(%rax),%ebx
cmp    $0x25,%bl
ja     12c7 <qs_strncmp+0x1c7>
movzbl %bl,%ecx
bt     %rcx,%r9
jae    12c7 <qs_strncmp+0x1c7>
lea    -0x30(%rsi),%ebx
cmp    $0xa,%bl
jb     129d <qs_strncmp+0x19d>
xor    %ebp,%ebp
lea    -0x41(%rsi),%ecx
cmp    $0x25,%cl
ja     12c7 <qs_strncmp+0x1c7>
movzbl %cl,%ecx
bt     %rcx,%r9
jae    12c7 <qs_strncmp+0x1c7>
cmp    $0xa,%dil
jb     12dd <qs_strncmp+0x1dd>
lea    -0x41(%rax),%ecx
cmp    $0x5,%cl
ja     12ce <qs_strncmp+0x1ce>
add    $0xc9,%al
mov    %eax,%edi
jmp    12dd <qs_strncmp+0x1dd>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rsi
mov    %rsi,%r15
cmp    %bpl,%r14b
je     1310 <qs_strncmp+0x210>
jmp    1343 <qs_strncmp+0x243>
lea    -0x61(%rax),%ecx
add    $0xa9,%al
cmp    $0x6,%cl
movzbl %al,%edi
cmovae %r8d,%edi
shl    $0x4,%dil
cmp    $0xa,%bl
jb     1306 <qs_strncmp+0x206>
lea    -0x41(%rsi),%eax
cmp    $0x5,%al
ja     12f5 <qs_strncmp+0x1f5>
add    $0xc9,%sil
mov    %esi,%ebx
jmp    1306 <qs_strncmp+0x206>
lea    -0x61(%rsi),%eax
add    $0xa9,%sil
cmp    $0x6,%al
movzbl %sil,%ebx
cmovae %r8d,%ebx
add    %dil,%bl
mov    %ebx,%ebp
cmp    %bpl,%r14b
jne    1343 <qs_strncmp+0x243>
mov    %r11,%rdi
mov    %r15,%rsi
test   %r14b,%r14b
jne    1130 <qs_strncmp+0x30>
jmp    133f <qs_strncmp+0x23f>
movzbl (%rsi),%ecx
mov    $0xffffffff,%eax
cmp    $0x3d,%rcx
ja     134d <qs_strncmp+0x24d>
movabs $0x2000004800000001,%rdx
bt     %rcx,%rdx
jae    134d <qs_strncmp+0x24d>
xor    %eax,%eax
jmp    134d <qs_strncmp+0x24d>
movzbl %r14b,%eax
movzbl %bpl,%ecx
sub    %ecx,%eax
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @qs_strncmp(i8* %0, i8* %1, i64 %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i64
%8 = alloca i32
%9 = alloca i8
%10 = alloca i8
%11 = alloca i8
%12 = alloca i8
store i8* %0, i8** %5
store i8* %1, i8** %6
store i64 %2, i64* %7
store i32 0, i32* %8
br label %13
13: ; preds = %392, %3
%14 = load i64, i64* %7
%15 = add i64 %14, -1
store i64 %15, i64* %7
%16 = icmp ugt i64 %14, 0
br i1 %16, label %17, label %395
17: ; preds = %13
%18 = load i8*, i8** %5
%19 = getelementptr inbounds i8, i8* %18, i32 1
store i8* %19, i8** %5
%20 = load i8, i8* %18
store i8 %20, i8* %9
%21 = load i8*, i8** %6
%22 = getelementptr inbounds i8, i8* %21, i32 1
store i8* %22, i8** %6
%23 = load i8, i8* %21
store i8 %23, i8* %10
%24 = load i8, i8* %9
%25 = zext i8 %24 to i32
%26 = icmp eq i32 %25, 61
br i1 %26, label %39, label %27
27: ; preds = %17
%28 = load i8, i8* %9
%29 = zext i8 %28 to i32
%30 = icmp eq i32 %29, 35
br i1 %30, label %39, label %31
31: ; preds = %27
%32 = load i8, i8* %9
%33 = zext i8 %32 to i32
%34 = icmp eq i32 %33, 38
br i1 %34, label %39, label %35
35: ; preds = %31
%36 = load i8, i8* %9
%37 = zext i8 %36 to i32
%38 = icmp eq i32 %37, 0
br i1 %38, label %39, label %40
39: ; preds = %35, %31, %27, %17
br i1 false, label %42, label %41
40: ; preds = %35
br i1 true, label %42, label %41
41: ; preds = %40, %39
store i8 0, i8* %9
br label %42
42: ; preds = %41, %40, %39
%43 = load i8, i8* %10
%44 = zext i8 %43 to i32
%45 = icmp eq i32 %44, 61
br i1 %45, label %58, label %46
46: ; preds = %42
%47 = load i8, i8* %10
%48 = zext i8 %47 to i32
%49 = icmp eq i32 %48, 35
br i1 %49, label %58, label %50
50: ; preds = %46
%51 = load i8, i8* %10
%52 = zext i8 %51 to i32
%53 = icmp eq i32 %52, 38
br i1 %53, label %58, label %54
54: ; preds = %50
%55 = load i8, i8* %10
%56 = zext i8 %55 to i32
%57 = icmp eq i32 %56, 0
br i1 %57, label %58, label %59
58: ; preds = %54, %50, %46, %42
br i1 false, label %61, label %60
59: ; preds = %54
br i1 true, label %61, label %60
60: ; preds = %59, %58
store i8 0, i8* %10
br label %61
61: ; preds = %60, %59, %58
%62 = load i8, i8* %9
%63 = zext i8 %62 to i32
%64 = icmp eq i32 %63, 43
br i1 %64, label %65, label %66
65: ; preds = %61
store i8 32, i8* %9
br label %66
66: ; preds = %65, %61
%67 = load i8, i8* %9
%68 = zext i8 %67 to i32
%69 = icmp eq i32 %68, 37
br i1 %69, label %70, label %218
70: ; preds = %66
%71 = load i8*, i8** %5
%72 = getelementptr inbounds i8, i8* %71, i32 1
store i8* %72, i8** %5
%73 = load i8, i8* %71
store i8 %73, i8* %11
%74 = load i8*, i8** %5
%75 = getelementptr inbounds i8, i8* %74, i32 1
store i8* %75, i8** %5
%76 = load i8, i8* %74
store i8 %76, i8* %12
%77 = load i8, i8* %11
%78 = zext i8 %77 to i32
%79 = icmp sge i32 %78, 48
br i1 %79, label %80, label %84
80: ; preds = %70
%81 = load i8, i8* %11
%82 = zext i8 %81 to i32
%83 = icmp sle i32 %82, 57
br i1 %83, label %100, label %84
84: ; preds = %80, %70
%85 = load i8, i8* %11
%86 = zext i8 %85 to i32
%87 = icmp sge i32 %86, 65
br i1 %87, label %88, label %92
88: ; preds = %84
%89 = load i8, i8* %11
%90 = zext i8 %89 to i32
%91 = icmp sle i32 %90, 70
br i1 %91, label %100, label %92
92: ; preds = %88, %84
%93 = load i8, i8* %11
%94 = zext i8 %93 to i32
%95 = icmp sge i32 %94, 97
br i1 %95, label %96, label %101
96: ; preds = %92
%97 = load i8, i8* %11
%98 = zext i8 %97 to i32
%99 = icmp sle i32 %98, 102
br i1 %99, label %100, label %101
100: ; preds = %96, %88, %80
br i1 true, label %102, label %216
101: ; preds = %96, %92
br i1 false, label %102, label %216
102: ; preds = %101, %100
%103 = load i8, i8* %12
%104 = zext i8 %103 to i32
%105 = icmp sge i32 %104, 48
br i1 %105, label %106, label %110
106: ; preds = %102
%107 = load i8, i8* %12
%108 = zext i8 %107 to i32
%109 = icmp sle i32 %108, 57
br i1 %109, label %126, label %110
110: ; preds = %106, %102
%111 = load i8, i8* %12
%112 = zext i8 %111 to i32
%113 = icmp sge i32 %112, 65
br i1 %113, label %114, label %118
114: ; preds = %110
%115 = load i8, i8* %12
%116 = zext i8 %115 to i32
%117 = icmp sle i32 %116, 70
br i1 %117, label %126, label %118
118: ; preds = %114, %110
%119 = load i8, i8* %12
%120 = zext i8 %119 to i32
%121 = icmp sge i32 %120, 97
br i1 %121, label %122, label %127
122: ; preds = %118
%123 = load i8, i8* %12
%124 = zext i8 %123 to i32
%125 = icmp sle i32 %124, 102
br i1 %125, label %126, label %127
126: ; preds = %122, %114, %106
br i1 true, label %128, label %216
127: ; preds = %122, %118
br i1 false, label %128, label %216
128: ; preds = %127, %126
%129 = load i8, i8* %11
%130 = zext i8 %129 to i32
%131 = icmp sge i32 %130, 48
br i1 %131, label %132, label %140
132: ; preds = %128
%133 = load i8, i8* %11
%134 = zext i8 %133 to i32
%135 = icmp sle i32 %134, 57
br i1 %135, label %136, label %140
136: ; preds = %132
%137 = load i8, i8* %11
%138 = zext i8 %137 to i32
%139 = sub nsw i32 %138, 48
br label %169
140: ; preds = %132, %128
%141 = load i8, i8* %11
%142 = zext i8 %141 to i32
%143 = icmp sge i32 %142, 65
br i1 %143, label %144, label %152
144: ; preds = %140
%145 = load i8, i8* %11
%146 = zext i8 %145 to i32
%147 = icmp sle i32 %146, 70
br i1 %147, label %148, label %152
148: ; preds = %144
%149 = load i8, i8* %11
%150 = zext i8 %149 to i32
%151 = sub nsw i32 %150, 55
br label %167
152: ; preds = %144, %140
%153 = load i8, i8* %11
%154 = zext i8 %153 to i32
%155 = icmp sge i32 %154, 97
br i1 %155, label %156, label %164
156: ; preds = %152
%157 = load i8, i8* %11
%158 = zext i8 %157 to i32
%159 = icmp sle i32 %158, 102
br i1 %159, label %160, label %164
160: ; preds = %156
%161 = load i8, i8* %11
%162 = zext i8 %161 to i32
%163 = sub nsw i32 %162, 87
br label %165
164: ; preds = %156, %152
br label %165
165: ; preds = %164, %160
%166 = phi i32 [ %163, %160 ], [ 0, %164 ]
br label %167
167: ; preds = %165, %148
%168 = phi i32 [ %151, %148 ], [ %166, %165 ]
br label %169
169: ; preds = %167, %136
%170 = phi i32 [ %139, %136 ], [ %168, %167 ]
%171 = mul nsw i32 %170, 16
%172 = load i8, i8* %12
%173 = zext i8 %172 to i32
%174 = icmp sge i32 %173, 48
br i1 %174, label %175, label %183
175: ; preds = %169
%176 = load i8, i8* %12
%177 = zext i8 %176 to i32
%178 = icmp sle i32 %177, 57
br i1 %178, label %179, label %183
179: ; preds = %175
%180 = load i8, i8* %12
%181 = zext i8 %180 to i32
%182 = sub nsw i32 %181, 48
br label %212
183: ; preds = %175, %169
%184 = load i8, i8* %12
%185 = zext i8 %184 to i32
%186 = icmp sge i32 %185, 65
br i1 %186, label %187, label %195
187: ; preds = %183
%188 = load i8, i8* %12
%189 = zext i8 %188 to i32
%190 = icmp sle i32 %189, 70
br i1 %190, label %191, label %195
191: ; preds = %187
%192 = load i8, i8* %12
%193 = zext i8 %192 to i32
%194 = sub nsw i32 %193, 55
br label %210
195: ; preds = %187, %183
%196 = load i8, i8* %12
%197 = zext i8 %196 to i32
%198 = icmp sge i32 %197, 97
br i1 %198, label %199, label %207
199: ; preds = %195
%200 = load i8, i8* %12
%201 = zext i8 %200 to i32
%202 = icmp sle i32 %201, 102
br i1 %202, label %203, label %207
203: ; preds = %199
%204 = load i8, i8* %12
%205 = zext i8 %204 to i32
%206 = sub nsw i32 %205, 87
br label %208
207: ; preds = %199, %195
br label %208
208: ; preds = %207, %203
%209 = phi i32 [ %206, %203 ], [ 0, %207 ]
br label %210
210: ; preds = %208, %191
%211 = phi i32 [ %194, %191 ], [ %209, %208 ]
br label %212
212: ; preds = %210, %179
%213 = phi i32 [ %182, %179 ], [ %211, %210 ]
%214 = add nsw i32 %171, %213
%215 = trunc i32 %214 to i8
store i8 %215, i8* %9
br label %217
216: ; preds = %127, %126, %101, %100
store i8 0, i8* %9
br label %217
217: ; preds = %216, %212
br label %218
218: ; preds = %217, %66
%219 = load i8, i8* %10
%220 = zext i8 %219 to i32
%221 = icmp eq i32 %220, 43
br i1 %221, label %222, label %223
222: ; preds = %218
store i8 32, i8* %10
br label %223
223: ; preds = %222, %218
%224 = load i8, i8* %10
%225 = zext i8 %224 to i32
%226 = icmp eq i32 %225, 37
br i1 %226, label %227, label %375
227: ; preds = %223
%228 = load i8*, i8** %6
%229 = getelementptr inbounds i8, i8* %228, i32 1
store i8* %229, i8** %6
%230 = load i8, i8* %228
store i8 %230, i8* %11
%231 = load i8*, i8** %6
%232 = getelementptr inbounds i8, i8* %231, i32 1
store i8* %232, i8** %6
%233 = load i8, i8* %231
store i8 %233, i8* %12
%234 = load i8, i8* %11
%235 = zext i8 %234 to i32
%236 = icmp sge i32 %235, 48
br i1 %236, label %237, label %241
237: ; preds = %227
%238 = load i8, i8* %11
%239 = zext i8 %238 to i32
%240 = icmp sle i32 %239, 57
br i1 %240, label %257, label %241
241: ; preds = %237, %227
%242 = load i8, i8* %11
%243 = zext i8 %242 to i32
%244 = icmp sge i32 %243, 65
br i1 %244, label %245, label %249
245: ; preds = %241
%246 = load i8, i8* %11
%247 = zext i8 %246 to i32
%248 = icmp sle i32 %247, 70
br i1 %248, label %257, label %249
249: ; preds = %245, %241
%250 = load i8, i8* %11
%251 = zext i8 %250 to i32
%252 = icmp sge i32 %251, 97
br i1 %252, label %253, label %258
253: ; preds = %249
%254 = load i8, i8* %11
%255 = zext i8 %254 to i32
%256 = icmp sle i32 %255, 102
br i1 %256, label %257, label %258
257: ; preds = %253, %245, %237
br i1 true, label %259, label %373
258: ; preds = %253, %249
br i1 false, label %259, label %373
259: ; preds = %258, %257
%260 = load i8, i8* %12
%261 = zext i8 %260 to i32
%262 = icmp sge i32 %261, 48
br i1 %262, label %263, label %267
263: ; preds = %259
%264 = load i8, i8* %12
%265 = zext i8 %264 to i32
%266 = icmp sle i32 %265, 57
br i1 %266, label %283, label %267
267: ; preds = %263, %259
%268 = load i8, i8* %12
%269 = zext i8 %268 to i32
%270 = icmp sge i32 %269, 65
br i1 %270, label %271, label %275
271: ; preds = %267
%272 = load i8, i8* %12
%273 = zext i8 %272 to i32
%274 = icmp sle i32 %273, 70
br i1 %274, label %283, label %275
275: ; preds = %271, %267
%276 = load i8, i8* %12
%277 = zext i8 %276 to i32
%278 = icmp sge i32 %277, 97
br i1 %278, label %279, label %284
279: ; preds = %275
%280 = load i8, i8* %12
%281 = zext i8 %280 to i32
%282 = icmp sle i32 %281, 102
br i1 %282, label %283, label %284
283: ; preds = %279, %271, %263
br i1 true, label %285, label %373
284: ; preds = %279, %275
br i1 false, label %285, label %373
285: ; preds = %284, %283
%286 = load i8, i8* %11
%287 = zext i8 %286 to i32
%288 = icmp sge i32 %287, 48
br i1 %288, label %289, label %297
289: ; preds = %285
%290 = load i8, i8* %11
%291 = zext i8 %290 to i32
%292 = icmp sle i32 %291, 57
br i1 %292, label %293, label %297
293: ; preds = %289
%294 = load i8, i8* %11
%295 = zext i8 %294 to i32
%296 = sub nsw i32 %295, 48
br label %326
297: ; preds = %289, %285
%298 = load i8, i8* %11
%299 = zext i8 %298 to i32
%300 = icmp sge i32 %299, 65
br i1 %300, label %301, label %309
301: ; preds = %297
%302 = load i8, i8* %11
%303 = zext i8 %302 to i32
%304 = icmp sle i32 %303, 70
br i1 %304, label %305, label %309
305: ; preds = %301
%306 = load i8, i8* %11
%307 = zext i8 %306 to i32
%308 = sub nsw i32 %307, 55
br label %324
309: ; preds = %301, %297
%310 = load i8, i8* %11
%311 = zext i8 %310 to i32
%312 = icmp sge i32 %311, 97
br i1 %312, label %313, label %321
313: ; preds = %309
%314 = load i8, i8* %11
%315 = zext i8 %314 to i32
%316 = icmp sle i32 %315, 102
br i1 %316, label %317, label %321
317: ; preds = %313
%318 = load i8, i8* %11
%319 = zext i8 %318 to i32
%320 = sub nsw i32 %319, 87
br label %322
321: ; preds = %313, %309
br label %322
322: ; preds = %321, %317
%323 = phi i32 [ %320, %317 ], [ 0, %321 ]
br label %324
324: ; preds = %322, %305
%325 = phi i32 [ %308, %305 ], [ %323, %322 ]
br label %326
326: ; preds = %324, %293
%327 = phi i32 [ %296, %293 ], [ %325, %324 ]
%328 = mul nsw i32 %327, 16
%329 = load i8, i8* %12
%330 = zext i8 %329 to i32
%331 = icmp sge i32 %330, 48
br i1 %331, label %332, label %340
332: ; preds = %326
%333 = load i8, i8* %12
%334 = zext i8 %333 to i32
%335 = icmp sle i32 %334, 57
br i1 %335, label %336, label %340
336: ; preds = %332
%337 = load i8, i8* %12
%338 = zext i8 %337 to i32
%339 = sub nsw i32 %338, 48
br label %369
340: ; preds = %332, %326
%341 = load i8, i8* %12
%342 = zext i8 %341 to i32
%343 = icmp sge i32 %342, 65
br i1 %343, label %344, label %352
344: ; preds = %340
%345 = load i8, i8* %12
%346 = zext i8 %345 to i32
%347 = icmp sle i32 %346, 70
br i1 %347, label %348, label %352
348: ; preds = %344
%349 = load i8, i8* %12
%350 = zext i8 %349 to i32
%351 = sub nsw i32 %350, 55
br label %367
352: ; preds = %344, %340
%353 = load i8, i8* %12
%354 = zext i8 %353 to i32
%355 = icmp sge i32 %354, 97
br i1 %355, label %356, label %364
356: ; preds = %352
%357 = load i8, i8* %12
%358 = zext i8 %357 to i32
%359 = icmp sle i32 %358, 102
br i1 %359, label %360, label %364
360: ; preds = %356
%361 = load i8, i8* %12
%362 = zext i8 %361 to i32
%363 = sub nsw i32 %362, 87
br label %365
364: ; preds = %356, %352
br label %365
365: ; preds = %364, %360
%366 = phi i32 [ %363, %360 ], [ 0, %364 ]
br label %367
367: ; preds = %365, %348
%368 = phi i32 [ %351, %348 ], [ %366, %365 ]
br label %369
369: ; preds = %367, %336
%370 = phi i32 [ %339, %336 ], [ %368, %367 ]
%371 = add nsw i32 %328, %370
%372 = trunc i32 %371 to i8
store i8 %372, i8* %10
br label %374
373: ; preds = %284, %283, %258, %257
store i8 0, i8* %10
br label %374
374: ; preds = %373, %369
br label %375
375: ; preds = %374, %223
%376 = load i8, i8* %9
%377 = zext i8 %376 to i32
%378 = load i8, i8* %10
%379 = zext i8 %378 to i32
%380 = icmp ne i32 %377, %379
br i1 %380, label %381, label %387
381: ; preds = %375
%382 = load i8, i8* %9
%383 = zext i8 %382 to i32
%384 = load i8, i8* %10
%385 = zext i8 %384 to i32
%386 = sub nsw i32 %383, %385
store i32 %386, i32* %4
br label %419
387: ; preds = %375
%388 = load i8, i8* %9
%389 = zext i8 %388 to i32
%390 = icmp eq i32 %389, 0
br i1 %390, label %391, label %392
391: ; preds = %387
store i32 0, i32* %4
br label %419
392: ; preds = %387
%393 = load i32, i32* %8
%394 = add nsw i32 %393, 1
store i32 %394, i32* %8
br label %13
395: ; preds = %13
%396 = load i8*, i8** %6
%397 = load i8, i8* %396
%398 = sext i8 %397 to i32
%399 = icmp eq i32 %398, 61
br i1 %399, label %415, label %400
400: ; preds = %395
%401 = load i8*, i8** %6
%402 = load i8, i8* %401
%403 = sext i8 %402 to i32
%404 = icmp eq i32 %403, 35
br i1 %404, label %415, label %405
405: ; preds = %400
%406 = load i8*, i8** %6
%407 = load i8, i8* %406
%408 = sext i8 %407 to i32
%409 = icmp eq i32 %408, 38
br i1 %409, label %415, label %410
410: ; preds = %405
%411 = load i8*, i8** %6
%412 = load i8, i8* %411
%413 = sext i8 %412 to i32
%414 = icmp eq i32 %413, 0
br i1 %414, label %415, label %416
415: ; preds = %410, %405, %400, %395
br i1 false, label %417, label %418
416: ; preds = %410
br i1 true, label %417, label %418
417: ; preds = %416, %415
store i32 -1, i32* %4
br label %419
418: ; preds = %416, %415
store i32 0, i32* %4
br label %419
419: ; preds = %418, %417, %391, %381
%420 = load i32, i32* %4
ret i32 %420
}

LLVM IR (-O2):
define i32 @qs_strncmp(i8* nocapture %0, i8* nocapture %1, i64 %2) {
br label %4
4: ; preds = %128, %3
%5 = phi i8* [ %0, %3 ], [ %74, %128 ]
%6 = phi i8* [ %1, %3 ], [ %121, %128 ]
%7 = phi i64 [ %2, %3 ], [ %8, %128 ]
%8 = add i64 %7, -1
%9 = icmp eq i64 %7, 0
br i1 %9, label %130, label %10
10: ; preds = %4
%11 = getelementptr inbounds i8, i8* %5, i64 1
%12 = load i8, i8* %5
%13 = getelementptr inbounds i8, i8* %6, i64 1
%14 = load i8, i8* %6
%15 = insertelement <4 x i8> poison, i8 %12, i64 0
%16 = shufflevector <4 x i8> %15, <4 x i8> poison, <4 x i32> zeroinitializer
%17 = icmp eq <4 x i8> %16, <i8 0, i8 38, i8 61, i8 35>
%18 = bitcast <4 x i1> %17 to i4
%19 = icmp eq i4 %18, 0
%20 = select i1 %19, i8 %12, i8 0
%21 = icmp eq i8 %14, 61
%22 = icmp eq i8 %14, 35
%23 = or i1 %21, %22
%24 = icmp eq i8 %14, 38
%25 = or i1 %24, %23
%26 = icmp eq i8 %14, 0
%27 = or i1 %26, %25
%28 = select i1 %27, i8 0, i8 %14
%29 = icmp eq i8 %20, 43
%30 = select i1 %29, i8 32, i8 %20
%31 = icmp eq i8 %30, 37
br i1 %31, label %32, label %73
32: ; preds = %10
%33 = getelementptr inbounds i8, i8* %5, i64 2
%34 = load i8, i8* %11
%35 = getelementptr inbounds i8, i8* %5, i64 3
%36 = load i8, i8* %33
%37 = freeze i8 %34
%38 = add i8 %37, -48
%39 = icmp ult i8 %38, 10
br i1 %39, label %41, label %40
40: ; preds = %32
switch i8 %37, label %73 [
i8 102, label %41
i8 101, label %41
i8 100, label %41
i8 99, label %41
i8 98, label %41
i8 97, label %41
i8 70, label %41
i8 69, label %41
i8 68, label %41
i8 67, label %41
i8 66, label %41
i8 65, label %41
]
41: ; preds = %40, %40, %40, %40, %40, %40, %40, %40, %40, %40, %40, %40, %32
%42 = freeze i8 %36
%43 = add i8 %42, -48
%44 = icmp ult i8 %43, 10
br i1 %44, label %46, label %45
45: ; preds = %41
switch i8 %42, label %73 [
i8 102, label %46
i8 101, label %46
i8 100, label %46
i8 99, label %46
i8 98, label %46
i8 97, label %46
i8 70, label %46
i8 69, label %46
i8 68, label %46
i8 67, label %46
i8 66, label %46
i8 65, label %46
]
46: ; preds = %45, %45, %45, %45, %45, %45, %45, %45, %45, %45, %45, %45, %41
br i1 %39, label %57, label %47
47: ; preds = %46
%48 = add nsw i8 %37, -65
%49 = icmp ult i8 %48, 6
br i1 %49, label %50, label %52
50: ; preds = %47
%51 = add nsw i8 %37, -55
br label %57
52: ; preds = %47
%53 = add nsw i8 %37, -97
%54 = icmp ult i8 %53, 6
%55 = add nsw i8 %37, -87
%56 = select i1 %54, i8 %55, i8 0
br label %57
57: ; preds = %46, %50, %52
%58 = phi i8 [ %51, %50 ], [ %56, %52 ], [ %38, %46 ]
%59 = shl i8 %58, 4
br i1 %44, label %70, label %60
60: ; preds = %57
%61 = add nsw i8 %42, -65
%62 = icmp ult i8 %61, 6
br i1 %62, label %63, label %65
63: ; preds = %60
%64 = add nsw i8 %42, -55
br label %70
65: ; preds = %60
%66 = add nsw i8 %42, -97
%67 = icmp ult i8 %66, 6
%68 = add nsw i8 %42, -87
%69 = select i1 %67, i8 %68, i8 0
br label %70
70: ; preds = %57, %63, %65
%71 = phi i8 [ %64, %63 ], [ %69, %65 ], [ %43, %57 ]
%72 = add i8 %71, %59
br label %73
73: ; preds = %45, %40, %70, %10
%74 = phi i8* [ %35, %70 ], [ %11, %10 ], [ %35, %45 ], [ %35, %40 ]
%75 = phi i8 [ %72, %70 ], [ %30, %10 ], [ 0, %45 ], [ 0, %40 ]
%76 = icmp eq i8 %28, 43
%77 = select i1 %76, i8 32, i8 %28
%78 = icmp eq i8 %77, 37
br i1 %78, label %79, label %120
79: ; preds = %73
%80 = getelementptr inbounds i8, i8* %6, i64 2
%81 = load i8, i8* %13
%82 = getelementptr inbounds i8, i8* %6, i64 3
%83 = load i8, i8* %80
%84 = freeze i8 %81
%85 = add i8 %84, -48
%86 = icmp ult i8 %85, 10
br i1 %86, label %88, label %87
87: ; preds = %79
switch i8 %84, label %120 [
i8 102, label %88
i8 101, label %88
i8 100, label %88
i8 99, label %88
i8 98, label %88
i8 97, label %88
i8 70, label %88
i8 69, label %88
i8 68, label %88
i8 67, label %88
i8 66, label %88
i8 65, label %88
]
88: ; preds = %87, %87, %87, %87, %87, %87, %87, %87, %87, %87, %87, %87, %79
%89 = freeze i8 %83
%90 = add i8 %89, -48
%91 = icmp ult i8 %90, 10
br i1 %91, label %93, label %92
92: ; preds = %88
switch i8 %89, label %120 [
i8 102, label %93
i8 101, label %93
i8 100, label %93
i8 99, label %93
i8 98, label %93
i8 97, label %93
i8 70, label %93
i8 69, label %93
i8 68, label %93
i8 67, label %93
i8 66, label %93
i8 65, label %93
]
93: ; preds = %92, %92, %92, %92, %92, %92, %92, %92, %92, %92, %92, %92, %88
br i1 %86, label %104, label %94
94: ; preds = %93
%95 = add nsw i8 %84, -65
%96 = icmp ult i8 %95, 6
br i1 %96, label %97, label %99
97: ; preds = %94
%98 = add nsw i8 %84, -55
br label %104
99: ; preds = %94
%100 = add nsw i8 %84, -97
%101 = icmp ult i8 %100, 6
%102 = add nsw i8 %84, -87
%103 = select i1 %101, i8 %102, i8 0
br label %104
104: ; preds = %93, %97, %99
%105 = phi i8 [ %98, %97 ], [ %103, %99 ], [ %85, %93 ]
%106 = shl i8 %105, 4
br i1 %91, label %117, label %107
107: ; preds = %104
%108 = add nsw i8 %89, -65
%109 = icmp ult i8 %108, 6
br i1 %109, label %110, label %112
110: ; preds = %107
%111 = add nsw i8 %89, -55
br label %117
112: ; preds = %107
%113 = add nsw i8 %89, -97
%114 = icmp ult i8 %113, 6
%115 = add nsw i8 %89, -87
%116 = select i1 %114, i8 %115, i8 0
br label %117
117: ; preds = %104, %110, %112
%118 = phi i8 [ %111, %110 ], [ %116, %112 ], [ %90, %104 ]
%119 = add i8 %118, %106
br label %120
120: ; preds = %92, %87, %117, %73
%121 = phi i8* [ %82, %117 ], [ %13, %73 ], [ %82, %92 ], [ %82, %87 ]
%122 = phi i8 [ %119, %117 ], [ %77, %73 ], [ 0, %92 ], [ 0, %87 ]
%123 = icmp eq i8 %75, %122
br i1 %123, label %128, label %124
124: ; preds = %120
%125 = zext i8 %75 to i32
%126 = zext i8 %122 to i32
%127 = sub nsw i32 %125, %126
br label %133
128: ; preds = %120
%129 = icmp eq i8 %75, 0
br i1 %129, label %133, label %4
130: ; preds = %4
%131 = load i8, i8* %6
switch i8 %131, label %133 [
i8 61, label %132
i8 35, label %132
i8 38, label %132
i8 0, label %132
]
132: ; preds = %130, %130, %130, %130
br label %133
133: ; preds = %128, %130, %132, %124
%134 = phi i32 [ %127, %124 ], [ 0, %132 ], [ -1, %130 ], [ 0, %128 ]
ret i32 %134
}