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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int ddt_func(char *);
int /*<<< orphan*/ isdigit(int);
scalar_t__ strncmp(char *, char *, size_t);
int ddt_fun(int l, char *s) {
  int f = 100;
  int c, i, t = 1, r = 1;
  char s3[4] = "";
  for (i = 1; i < l; i++)
    r *= 3;
  c = *s;
  for (i = 0; i < 3 * r; i++)
    if (c != s[i])
      t = 0;
  if (t && c != '-' && !isdigit(c))
    f = c;
  if (f != c && c != '-' && !isdigit(c)) {
    t = 1;
    c = s[0];
    for (i = 0; i < r; i++)
      if (c != s[i])
        t = 0;
    if (t) {
      s3[0] = (char)c;
      c = s[r];
      for (i = 0; i < r; i++)
        if (c != s[i + r])
          t = 0;
      if (t) {
        s3[1] = (char)c;
        c = s[r + r];
        for (i = 0; i < r; i++)
          if (c != s[i + r + r])
            t = 0;
        if (t) {
          s3[2] = (char)c;
          s3[3] = 0;
          f = ddt_func(s3);
        }
      }
    }
  }
  if (f != 100) {
  } else if (!strncmp(s, &s[r], (size_t)r) &&
             !strncmp(&s[r], &s[r << 1], (size_t)r))
    f = -1;
  else if (strncmp(s, &s[r], (size_t)r) &&
           !strncmp(&s[r], &s[r << 1], (size_t)r))
    f = 1;
  else if (!strncmp(s, &s[r], (size_t)r) &&
           strncmp(&s[r], &s[r << 1], (size_t)r))
    f = 2;
  return f;
}


x86 assembly (clang, -O0):
<ddt_fun>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x64,-0x14(%rbp)
movl   $0x1,-0x20(%rbp)
movl   $0x1,-0x24(%rbp)
lea    -0x28(%rbp),%rdi
xor    %esi,%esi
mov    $0x4,%edx
call   1060 <memset@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    119c <ddt_fun+0x5c>
imul   $0x3,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    117b <ddt_fun+0x3b>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
imul   $0x3,-0x24(%rbp),%ecx
cmp    %ecx,%eax
jge    11ed <ddt_fun+0xad>
mov    -0x18(%rbp),%eax
mov    -0x10(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     11da <ddt_fun+0x9a>
movl   $0x0,-0x20(%rbp)
jmp    11df <ddt_fun+0x9f>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11ad <ddt_fun+0x6d>
cmpl   $0x0,-0x20(%rbp)
je     1218 <ddt_fun+0xd8>
cmpl   $0x2d,-0x18(%rbp)
je     1218 <ddt_fun+0xd8>
mov    -0x18(%rbp),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    1218 <ddt_fun+0xd8>
mov    -0x18(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
je     139b <ddt_fun+0x25b>
cmpl   $0x2d,-0x18(%rbp)
je     139b <ddt_fun+0x25b>
mov    -0x18(%rbp),%edi
call   1040 <isdigit@plt>
cmp    $0x0,%eax
jne    139b <ddt_fun+0x25b>
movl   $0x1,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1294 <ddt_fun+0x154>
mov    -0x18(%rbp),%eax
mov    -0x10(%rbp),%rcx
movslq -0x1c(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     1281 <ddt_fun+0x141>
movl   $0x0,-0x20(%rbp)
jmp    1286 <ddt_fun+0x146>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1257 <ddt_fun+0x117>
cmpl   $0x0,-0x20(%rbp)
je     1396 <ddt_fun+0x256>
mov    -0x18(%rbp),%eax
mov    %al,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    12fc <ddt_fun+0x1bc>
mov    -0x18(%rbp),%eax
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    -0x24(%rbp),%edx
movslq %edx,%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     12e9 <ddt_fun+0x1a9>
movl   $0x0,-0x20(%rbp)
jmp    12ee <ddt_fun+0x1ae>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12ba <ddt_fun+0x17a>
cmpl   $0x0,-0x20(%rbp)
je     1391 <ddt_fun+0x251>
mov    -0x18(%rbp),%eax
mov    %al,-0x27(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x24(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    136c <ddt_fun+0x22c>
mov    -0x18(%rbp),%eax
mov    -0x10(%rbp),%rcx
mov    -0x1c(%rbp),%edx
add    -0x24(%rbp),%edx
add    -0x24(%rbp),%edx
movslq %edx,%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
je     1359 <ddt_fun+0x219>
movl   $0x0,-0x20(%rbp)
jmp    135e <ddt_fun+0x21e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1327 <ddt_fun+0x1e7>
cmpl   $0x0,-0x20(%rbp)
je     138c <ddt_fun+0x24c>
mov    -0x18(%rbp),%eax
mov    %al,-0x26(%rbp)
movb   $0x0,-0x25(%rbp)
lea    -0x28(%rbp),%rdi
call   1050 <ddt_func@plt>
mov    %eax,-0x14(%rbp)
jmp    1391 <ddt_fun+0x251>
jmp    1396 <ddt_fun+0x256>
jmp    139b <ddt_fun+0x25b>
cmpl   $0x64,-0x14(%rbp)
je     13aa <ddt_fun+0x26a>
jmp    14c5 <ddt_fun+0x385>
mov    -0x10(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x24(%rbp),%rax
add    %rax,%rsi
movslq -0x24(%rbp),%rdx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1405 <ddt_fun+0x2c5>
mov    -0x10(%rbp),%rdi
movslq -0x24(%rbp),%rax
add    %rax,%rdi
mov    -0x10(%rbp),%rsi
mov    -0x24(%rbp),%eax
shl    $0x1,%eax
cltq
add    %rax,%rsi
movslq -0x24(%rbp),%rdx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1405 <ddt_fun+0x2c5>
movl   $0xffffffff,-0x14(%rbp)
jmp    14c0 <ddt_fun+0x380>
mov    -0x10(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x24(%rbp),%rax
add    %rax,%rsi
movslq -0x24(%rbp),%rdx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     1460 <ddt_fun+0x320>
mov    -0x10(%rbp),%rdi
movslq -0x24(%rbp),%rax
add    %rax,%rdi
mov    -0x10(%rbp),%rsi
mov    -0x24(%rbp),%eax
shl    $0x1,%eax
cltq
add    %rax,%rsi
movslq -0x24(%rbp),%rdx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1460 <ddt_fun+0x320>
movl   $0x1,-0x14(%rbp)
jmp    14bb <ddt_fun+0x37b>
mov    -0x10(%rbp),%rdi
mov    -0x10(%rbp),%rsi
movslq -0x24(%rbp),%rax
add    %rax,%rsi
movslq -0x24(%rbp),%rdx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    14b6 <ddt_fun+0x376>
mov    -0x10(%rbp),%rdi
movslq -0x24(%rbp),%rax
add    %rax,%rdi
mov    -0x10(%rbp),%rsi
mov    -0x24(%rbp),%eax
shl    $0x1,%eax
cltq
add    %rax,%rsi
movslq -0x24(%rbp),%rdx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     14b6 <ddt_fun+0x376>
movl   $0x2,-0x14(%rbp)
jmp    14bb <ddt_fun+0x37b>
jmp    14c0 <ddt_fun+0x380>
jmp    14c5 <ddt_fun+0x385>
mov    -0x14(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ddt_fun>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rsi,%r12
movl   $0x0,0x4(%rsp)
mov    $0x1,%ecx
mov    $0x1,%r13d
cmp    $0x2,%edi
jl     124a <ddt_fun+0x12a>
lea    -0x1(%rdi),%edx
mov    $0x1,%r13d
mov    $0x1,%eax
cmp    $0x8,%edx
jb     1231 <ddt_fun+0x111>
mov    %edx,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%ebx
mov    %ebx,%esi
shr    $0x3,%esi
add    $0x1,%esi
mov    %esi,%ebp
and    $0x7,%ebp
cmp    $0x38,%ebx
jae    1189 <ddt_fun+0x69>
movdqa 0xe7d(%rip),%xmm0
movdqa %xmm0,%xmm1
jmp    11db <ddt_fun+0xbb>
and    $0xfffffff8,%esi
movdqa 0xe6c(%rip),%xmm0
movdqa 0xe74(%rip),%xmm2
movdqa %xmm0,%xmm1
pshufd $0xf5,%xmm0,%xmm3
pmuludq %xmm2,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm0
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm2,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm2,%xmm3
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm1
add    $0xfffffff8,%esi
jne    11a0 <ddt_fun+0x80>
test   %ebp,%ebp
je     11fd <ddt_fun+0xdd>
nop
movdqa %xmm0,%xmm2
paddd  %xmm0,%xmm2
paddd  %xmm2,%xmm0
movdqa %xmm1,%xmm2
paddd  %xmm1,%xmm2
paddd  %xmm2,%xmm1
add    $0xffffffff,%ebp
jne    11e0 <ddt_fun+0xc0>
pshufd $0xf5,%xmm0,%xmm2
pshufd $0xf5,%xmm1,%xmm3
pmuludq %xmm2,%xmm3
pmuludq %xmm0,%xmm1
pshufd $0xee,%xmm1,%xmm0
pmuludq %xmm1,%xmm0
pshufd $0xaa,%xmm3,%xmm1
pmuludq %xmm3,%xmm1
pmuludq %xmm0,%xmm1
movd   %xmm1,%r13d
cmp    %eax,%edx
je     124a <ddt_fun+0x12a>
or     $0x1,%eax
sub    %eax,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x0(%r13,%r13,2),%r13d
add    $0xffffffff,%edi
jne    1240 <ddt_fun+0x120>
mov    (%r12),%dl
movsbl %dl,%r10d
lea    0x0(%r13,%r13,2),%eax
cmp    $0x2,%eax
cmovb  %ecx,%eax
jb     13b0 <ddt_fun+0x290>
lea    -0x1(%rax),%r8
cmp    $0x8,%r8
jae    127c <ddt_fun+0x15c>
mov    $0x1,%ecx
mov    $0x1,%edi
jmp    1395 <ddt_fun+0x275>
mov    %r8,%rdi
and    $0xfffffffffffffff8,%rdi
movzbl %dl,%ecx
movd   %ecx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm1
lea    -0x8(%rdi),%rcx
mov    %rcx,%r9
shr    $0x3,%r9
add    $0x1,%r9
test   %rcx,%rcx
je     1994 <ddt_fun+0x874>
mov    %r9,%rsi
and    $0xfffffffffffffffe,%rsi
movdqa 0xd46(%rip),%xmm0
xor    %ecx,%ecx
movdqa %xmm0,%xmm2
movd   0x1(%r12,%rcx,1),%xmm3
movd   0x5(%r12,%rcx,1),%xmm4
pcmpeqb %xmm1,%xmm3
pcmpeqb %xmm1,%xmm4
movd   0x9(%r12,%rcx,1),%xmm5
movd   0xd(%r12,%rcx,1),%xmm6
pcmpeqb %xmm1,%xmm5
pand   %xmm3,%xmm5
punpcklbw %xmm5,%xmm3
punpcklwd %xmm3,%xmm3
pcmpeqb %xmm1,%xmm6
pand   %xmm4,%xmm6
punpcklbw %xmm6,%xmm4
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
psrad  $0x18,%xmm4
pand   %xmm4,%xmm2
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rsi
jne    12c0 <ddt_fun+0x1a0>
test   $0x1,%r9b
je     1361 <ddt_fun+0x241>
or     $0x1,%rcx
movd   (%r12,%rcx,1),%xmm3
movd   0x4(%r12,%rcx,1),%xmm4
pcmpeqb %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
pcmpeqb %xmm1,%xmm4
punpcklbw %xmm4,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
pand   %xmm1,%xmm2
movdqa 0xc97(%rip),%xmm1
movdqa %xmm0,%xmm3
pcmpeqd %xmm1,%xmm3
pand   %xmm3,%xmm2
pandn  %xmm0,%xmm3
por    %xmm2,%xmm3
pcmpeqd %xmm1,%xmm3
movmskps %xmm3,%esi
xor    %ecx,%ecx
cmp    $0xf,%esi
sete   %cl
cmp    %rdi,%r8
je     13b0 <ddt_fun+0x290>
or     $0x1,%rdi
xor    %esi,%esi
nopw   0x0(%rax,%rax,1)
cmp    (%r12,%rdi,1),%dl
cmovne %esi,%ecx
add    $0x1,%rdi
cmp    %rdi,%rax
jne    13a0 <ddt_fun+0x280>
lea    -0x30(%r10),%esi
cmp    $0xa,%esi
mov    $0x64,%edi
mov    %r10d,%eax
cmovb  %edi,%eax
cmp    $0x2d,%dl
cmove  %edi,%eax
test   %ecx,%ecx
cmove  %edi,%eax
cmp    $0x2d,%dl
je     18d9 <ddt_fun+0x7b9>
cmp    %r10d,%eax
je     18d9 <ddt_fun+0x7b9>
cmp    $0xa,%esi
jb     18d9 <ddt_fun+0x7b9>
mov    $0x1,%ecx
mov    $0x1,%r8d
cmp    $0x2,%r13d
cmovae %r13d,%r8d
jb     1550 <ddt_fun+0x430>
lea    -0x1(%r8),%r9
cmp    $0x8,%r9
jae    141a <ddt_fun+0x2fa>
mov    $0x1,%ecx
mov    $0x1,%esi
jmp    1535 <ddt_fun+0x415>
mov    %r9,%rsi
and    $0xfffffffffffffff8,%rsi
movzbl %dl,%ecx
movd   %ecx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm1
lea    -0x8(%rsi),%rcx
mov    %rcx,%r10
shr    $0x3,%r10
add    $0x1,%r10
test   %rcx,%rcx
je     19e2 <ddt_fun+0x8c2>
mov    %r10,%rdi
and    $0xfffffffffffffffe,%rdi
movdqa 0xba8(%rip),%xmm0
xor    %ecx,%ecx
movdqa %xmm0,%xmm2
xchg   %ax,%ax
movd   0x1(%r12,%rcx,1),%xmm3
movd   0x5(%r12,%rcx,1),%xmm4
pcmpeqb %xmm1,%xmm3
pcmpeqb %xmm1,%xmm4
movd   0x9(%r12,%rcx,1),%xmm5
movd   0xd(%r12,%rcx,1),%xmm6
pcmpeqb %xmm1,%xmm5
pand   %xmm3,%xmm5
punpcklbw %xmm5,%xmm3
punpcklwd %xmm3,%xmm3
pcmpeqb %xmm1,%xmm6
pand   %xmm4,%xmm6
punpcklbw %xmm6,%xmm4
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
psrad  $0x18,%xmm4
pand   %xmm4,%xmm2
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rdi
jne    1460 <ddt_fun+0x340>
test   $0x1,%r10b
je     1501 <ddt_fun+0x3e1>
or     $0x1,%rcx
movd   (%r12,%rcx,1),%xmm3
movd   0x4(%r12,%rcx,1),%xmm4
pcmpeqb %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
pcmpeqb %xmm1,%xmm4
punpcklbw %xmm4,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
pand   %xmm1,%xmm2
movdqa 0xaf7(%rip),%xmm1
movdqa %xmm0,%xmm3
pcmpeqd %xmm1,%xmm3
pand   %xmm3,%xmm2
pandn  %xmm0,%xmm3
por    %xmm2,%xmm3
pcmpeqd %xmm1,%xmm3
movmskps %xmm3,%edi
xor    %ecx,%ecx
cmp    $0xf,%edi
sete   %cl
cmp    %rsi,%r9
je     1550 <ddt_fun+0x430>
or     $0x1,%rsi
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
cmp    (%r12,%rsi,1),%dl
cmovne %edi,%ecx
add    $0x1,%rsi
cmp    %rsi,%r8
jne    1540 <ddt_fun+0x420>
test   %ecx,%ecx
je     18d9 <ddt_fun+0x7b9>
mov    %dl,0x4(%rsp)
mov    %r13d,%r10d
mov    (%r12,%r10,1),%bpl
xor    %r11d,%r11d
cmp    $0x8,%r8d
jae    1578 <ddt_fun+0x458>
mov    $0x1,%edx
xor    %ecx,%ecx
jmp    169b <ddt_fun+0x57b>
mov    %r8d,%ecx
and    $0xfffffff8,%ecx
movzbl %bpl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm1
lea    -0x8(%rcx),%rdx
mov    %rdx,%r9
shr    $0x3,%r9
add    $0x1,%r9
test   %rdx,%rdx
je     19c5 <ddt_fun+0x8a5>
mov    %r9,%rdi
and    $0xfffffffffffffffe,%rdi
lea    (%r10,%r12,1),%rdx
add    $0xc,%rdx
movdqa 0xa42(%rip),%xmm0
xor    %esi,%esi
movdqa %xmm0,%xmm2
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movd   -0xc(%rdx,%rsi,1),%xmm3
movd   -0x8(%rdx,%rsi,1),%xmm4
pcmpeqb %xmm1,%xmm3
pcmpeqb %xmm1,%xmm4
movd   -0x4(%rdx,%rsi,1),%xmm5
movd   (%rdx,%rsi,1),%xmm6
pcmpeqb %xmm1,%xmm5
pand   %xmm3,%xmm5
punpcklbw %xmm5,%xmm3
punpcklwd %xmm3,%xmm3
pcmpeqb %xmm1,%xmm6
pand   %xmm4,%xmm6
punpcklbw %xmm6,%xmm4
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
psrad  $0x18,%xmm4
pand   %xmm4,%xmm2
add    $0x10,%rsi
add    $0xfffffffffffffffe,%rdi
jne    15d0 <ddt_fun+0x4b0>
test   $0x1,%r9b
je     166b <ddt_fun+0x54b>
add    %r10,%rsi
movd   (%r12,%rsi,1),%xmm3
movd   0x4(%r12,%rsi,1),%xmm4
pcmpeqb %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
pcmpeqb %xmm1,%xmm4
punpcklbw %xmm4,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
pand   %xmm1,%xmm2
movdqa 0x98d(%rip),%xmm1
movdqa %xmm0,%xmm3
pcmpeqd %xmm1,%xmm3
pand   %xmm3,%xmm2
pandn  %xmm0,%xmm3
por    %xmm2,%xmm3
pcmpeqd %xmm1,%xmm3
movmskps %xmm3,%esi
xor    %edx,%edx
cmp    $0xf,%esi
sete   %dl
cmp    %r8,%rcx
je     16b1 <ddt_fun+0x591>
lea    (%r12,%r10,1),%rsi
nop
cmp    (%rsi,%rcx,1),%bpl
cmovne %r11d,%edx
add    $0x1,%rcx
cmp    %rcx,%r8
jne    16a0 <ddt_fun+0x580>
test   %edx,%edx
je     18d9 <ddt_fun+0x7b9>
mov    %bpl,0x5(%rsp)
mov    (%r12,%r10,2),%r11b
add    %r10,%r10
mov    $0x1,%edi
cmp    $0x8,%r8d
jae    1771 <ddt_fun+0x651>
xor    %r15d,%r15d
mov    %r15,%r9
not    %r9
add    %r8,%r9
mov    %r8,%rbp
mov    %r10d,%r14d
and    $0x3,%rbp
je     1709 <ddt_fun+0x5e9>
xor    %r10d,%r10d
nop
lea    (%r14,%r15,1),%edx
movslq %edx,%rdx
cmp    (%r12,%rdx,1),%r11b
cmovne %r10d,%edi
add    $0x1,%r15
add    $0xffffffffffffffff,%rbp
jne    16f0 <ddt_fun+0x5d0>
cmp    $0x3,%r9
jb     18c1 <ddt_fun+0x7a1>
xor    %r9d,%r9d
cs nopw 0x0(%rax,%rax,1)
lea    (%r14,%r15,1),%rbp
movslq %ebp,%rbp
movzbl (%r12,%rbp,1),%edx
xor    %r11b,%dl
lea    0x1(%rbp),%esi
movslq %esi,%rsi
movzbl (%r12,%rsi,1),%ebx
xor    %r11b,%bl
or     %dl,%bl
lea    0x2(%rbp),%edx
movslq %edx,%rdx
movzbl (%r12,%rdx,1),%edx
xor    %r11b,%dl
add    $0x3,%ebp
movslq %ebp,%rsi
movzbl (%r12,%rsi,1),%ecx
xor    %r11b,%cl
or     %dl,%cl
or     %bl,%cl
cmovne %r9d,%edi
add    $0x4,%r15
cmp    %r15,%r8
jne    1720 <ddt_fun+0x600>
jmp    18c1 <ddt_fun+0x7a1>
lea    -0x1(%r8),%rdx
lea    (%r10,%rdx,1),%esi
xor    %r15d,%r15d
cmp    %r10d,%esi
jl     16d7 <ddt_fun+0x5b7>
shr    $0x20,%rdx
jne    16d7 <ddt_fun+0x5b7>
mov    %r8d,%r15d
and    $0xfffffff8,%r15d
movzbl %r11b,%ecx
movd   %ecx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm1
lea    -0x8(%r15),%rcx
mov    %rcx,%r9
shr    $0x3,%r9
add    $0x1,%r9
test   %rcx,%rcx
je     19ff <ddt_fun+0x8df>
mov    %r9,%rsi
and    $0xfffffffffffffffe,%rsi
movdqa 0x832(%rip),%xmm0
xor    %ecx,%ecx
mov    %r10d,%edx
movdqa %xmm0,%xmm2
nopw   0x0(%rax,%rax,1)
movslq %edx,%rdx
movd   (%r12,%rdx,1),%xmm3
movd   0x4(%r12,%rdx,1),%xmm4
pcmpeqb %xmm1,%xmm3
pcmpeqb %xmm1,%xmm4
lea    0x8(%rdx),%ebp
movslq %ebp,%rbp
movd   (%r12,%rbp,1),%xmm5
movd   0x4(%r12,%rbp,1),%xmm6
pcmpeqb %xmm1,%xmm5
pand   %xmm3,%xmm5
punpcklbw %xmm5,%xmm3
punpcklwd %xmm3,%xmm3
pcmpeqb %xmm1,%xmm6
pand   %xmm4,%xmm6
punpcklbw %xmm6,%xmm4
punpcklwd %xmm4,%xmm4
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
psrad  $0x18,%xmm4
pand   %xmm4,%xmm2
add    $0x10,%edx
add    $0x10,%ecx
add    $0xfffffffffffffffe,%rsi
jne    17e0 <ddt_fun+0x6c0>
test   $0x1,%r9b
je     188c <ddt_fun+0x76c>
add    %r10d,%ecx
movslq %ecx,%rcx
movd   (%r12,%rcx,1),%xmm3
movd   0x4(%r12,%rcx,1),%xmm4
pcmpeqb %xmm1,%xmm3
punpcklbw %xmm3,%xmm3
punpcklwd %xmm3,%xmm3
psrad  $0x18,%xmm3
pand   %xmm3,%xmm0
pcmpeqb %xmm1,%xmm4
punpcklbw %xmm4,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
pand   %xmm1,%xmm2
movdqa 0x76c(%rip),%xmm1
movdqa %xmm0,%xmm3
pcmpeqd %xmm1,%xmm3
pand   %xmm3,%xmm2
pandn  %xmm0,%xmm3
por    %xmm2,%xmm3
pcmpeqd %xmm1,%xmm3
movmskps %xmm3,%edx
xor    %edi,%edi
cmp    $0xf,%edx
sete   %dil
cmp    %r8,%r15
jne    16d7 <ddt_fun+0x5b7>
test   %edi,%edi
je     18d9 <ddt_fun+0x7b9>
mov    %r11b,0x6(%rsp)
movb   $0x0,0x7(%rsp)
lea    0x4(%rsp),%rdi
call   1040 <ddt_func@plt>
cmp    $0x64,%eax
jne    19b6 <ddt_fun+0x896>
mov    %r13d,%r14d
lea    (%r12,%r14,1),%r15
mov    %r12,%rdi
mov    %r15,%rsi
mov    %r14,%rdx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    191b <ddt_fun+0x7fb>
lea    0x0(%r13,%r13,1),%eax
movslq %eax,%rsi
add    %r12,%rsi
mov    %r15,%rdi
mov    %r14,%rdx
call   1030 <strncmp@plt>
test   %rax,%rax
je     19b1 <ddt_fun+0x891>
mov    %r12,%rdi
mov    %r15,%rsi
mov    %r14,%rdx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1949 <ddt_fun+0x829>
lea    0x0(%r13,%r13,1),%eax
movslq %eax,%rsi
add    %r12,%rsi
mov    %r15,%rdi
mov    %r14,%rdx
call   1030 <strncmp@plt>
test   %rax,%rax
je     198d <ddt_fun+0x86d>
mov    %r12,%rdi
mov    %r15,%rsi
mov    %r14,%rdx
call   1030 <strncmp@plt>
mov    %rax,%rcx
mov    $0x64,%eax
test   %rcx,%rcx
jne    19b6 <ddt_fun+0x896>
add    %r13d,%r13d
movslq %r13d,%rax
add    %rax,%r12
mov    %r15,%rdi
mov    %r12,%rsi
mov    %r14,%rdx
call   1030 <strncmp@plt>
test   %rax,%rax
mov    $0x64,%ecx
mov    $0x2,%eax
cmove  %ecx,%eax
jmp    19b6 <ddt_fun+0x896>
mov    $0x1,%eax
jmp    19b6 <ddt_fun+0x896>
movdqa 0x664(%rip),%xmm0
xor    %ecx,%ecx
movdqa %xmm0,%xmm2
test   $0x1,%r9b
jne    1326 <ddt_fun+0x206>
jmp    1361 <ddt_fun+0x241>
mov    $0xffffffff,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movdqa 0x633(%rip),%xmm0
xor    %esi,%esi
movdqa %xmm0,%xmm2
test   $0x1,%r9b
jne    1631 <ddt_fun+0x511>
jmp    166b <ddt_fun+0x54b>
movdqa 0x616(%rip),%xmm0
xor    %ecx,%ecx
movdqa %xmm0,%xmm2
test   $0x1,%r10b
jne    14c6 <ddt_fun+0x3a6>
jmp    1501 <ddt_fun+0x3e1>
movdqa 0x5f9(%rip),%xmm0
xor    %ecx,%ecx
movdqa %xmm0,%xmm2
test   $0x1,%r9b
jne    184f <ddt_fun+0x72f>
jmp    188c <ddt_fun+0x76c>

LLVM IR (-O0):
define i32 @ddt_fun(i32 %0, i8* %1) {
%3 = alloca i32
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca [4 x i8]
store i32 %0, i32* %3
store i8* %1, i8** %4
store i32 100, i32* %5
store i32 1, i32* %8
store i32 1, i32* %9
%11 = bitcast [4 x i8]* %10 to i8*
store i32 1, i32* %7
br label %12
12: ; preds = %19, %2
%13 = load i32, i32* %7
%14 = load i32, i32* %3
%15 = icmp slt i32 %13, %14
br i1 %15, label %16, label %22
16: ; preds = %12
%17 = load i32, i32* %9
%18 = mul nsw i32 %17, 3
store i32 %18, i32* %9
br label %19
19: ; preds = %16
%20 = load i32, i32* %7
%21 = add nsw i32 %20, 1
store i32 %21, i32* %7
br label %12
22: ; preds = %12
%23 = load i8*, i8** %4
%24 = load i8, i8* %23
%25 = sext i8 %24 to i32
store i32 %25, i32* %6
store i32 0, i32* %7
br label %26
26: ; preds = %42, %22
%27 = load i32, i32* %7
%28 = load i32, i32* %9
%29 = mul nsw i32 3, %28
%30 = icmp slt i32 %27, %29
br i1 %30, label %31, label %45
31: ; preds = %26
%32 = load i32, i32* %6
%33 = load i8*, i8** %4
%34 = load i32, i32* %7
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds i8, i8* %33, i64 %35
%37 = load i8, i8* %36
%38 = sext i8 %37 to i32
%39 = icmp ne i32 %32, %38
br i1 %39, label %40, label %41
40: ; preds = %31
store i32 0, i32* %8
br label %41
41: ; preds = %40, %31
br label %42
42: ; preds = %41
%43 = load i32, i32* %7
%44 = add nsw i32 %43, 1
store i32 %44, i32* %7
br label %26
45: ; preds = %26
%46 = load i32, i32* %8
%47 = icmp ne i32 %46, 0
br i1 %47, label %48, label %57
48: ; preds = %45
%49 = load i32, i32* %6
%50 = icmp ne i32 %49, 45
br i1 %50, label %51, label %57
51: ; preds = %48
%52 = load i32, i32* %6
%53 = call i32 @isdigit(i32 %52)
%54 = icmp ne i32 %53, 0
br i1 %54, label %57, label %55
55: ; preds = %51
%56 = load i32, i32* %6
store i32 %56, i32* %5
br label %57
57: ; preds = %55, %51, %48, %45
%58 = load i32, i32* %5
%59 = load i32, i32* %6
%60 = icmp ne i32 %58, %59
br i1 %60, label %61, label %174
61: ; preds = %57
%62 = load i32, i32* %6
%63 = icmp ne i32 %62, 45
br i1 %63, label %64, label %174
64: ; preds = %61
%65 = load i32, i32* %6
%66 = call i32 @isdigit(i32 %65)
%67 = icmp ne i32 %66, 0
br i1 %67, label %174, label %68
68: ; preds = %64
store i32 1, i32* %8
%69 = load i8*, i8** %4
%70 = getelementptr inbounds i8, i8* %69, i64 0
%71 = load i8, i8* %70
%72 = sext i8 %71 to i32
store i32 %72, i32* %6
store i32 0, i32* %7
br label %73
73: ; preds = %88, %68
%74 = load i32, i32* %7
%75 = load i32, i32* %9
%76 = icmp slt i32 %74, %75
br i1 %76, label %77, label %91
77: ; preds = %73
%78 = load i32, i32* %6
%79 = load i8*, i8** %4
%80 = load i32, i32* %7
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i8, i8* %79, i64 %81
%83 = load i8, i8* %82
%84 = sext i8 %83 to i32
%85 = icmp ne i32 %78, %84
br i1 %85, label %86, label %87
86: ; preds = %77
store i32 0, i32* %8
br label %87
87: ; preds = %86, %77
br label %88
88: ; preds = %87
%89 = load i32, i32* %7
%90 = add nsw i32 %89, 1
store i32 %90, i32* %7
br label %73
91: ; preds = %73
%92 = load i32, i32* %8
%93 = icmp ne i32 %92, 0
br i1 %93, label %94, label %173
94: ; preds = %91
%95 = load i32, i32* %6
%96 = trunc i32 %95 to i8
%97 = getelementptr inbounds [4 x i8], [4 x i8]* %10, i64 0, i64 0
store i8 %96, i8* %97
%98 = load i8*, i8** %4
%99 = load i32, i32* %9
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds i8, i8* %98, i64 %100
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
store i32 %103, i32* %6
store i32 0, i32* %7
br label %104
104: ; preds = %121, %94
%105 = load i32, i32* %7
%106 = load i32, i32* %9
%107 = icmp slt i32 %105, %106
br i1 %107, label %108, label %124
108: ; preds = %104
%109 = load i32, i32* %6
%110 = load i8*, i8** %4
%111 = load i32, i32* %7
%112 = load i32, i32* %9
%113 = add nsw i32 %111, %112
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds i8, i8* %110, i64 %114
%116 = load i8, i8* %115
%117 = sext i8 %116 to i32
%118 = icmp ne i32 %109, %117
br i1 %118, label %119, label %120
119: ; preds = %108
store i32 0, i32* %8
br label %120
120: ; preds = %119, %108
br label %121
121: ; preds = %120
%122 = load i32, i32* %7
%123 = add nsw i32 %122, 1
store i32 %123, i32* %7
br label %104
124: ; preds = %104
%125 = load i32, i32* %8
%126 = icmp ne i32 %125, 0
br i1 %126, label %127, label %172
127: ; preds = %124
%128 = load i32, i32* %6
%129 = trunc i32 %128 to i8
%130 = getelementptr inbounds [4 x i8], [4 x i8]* %10, i64 0, i64 1
store i8 %129, i8* %130
%131 = load i8*, i8** %4
%132 = load i32, i32* %9
%133 = load i32, i32* %9
%134 = add nsw i32 %132, %133
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %131, i64 %135
%137 = load i8, i8* %136
%138 = sext i8 %137 to i32
store i32 %138, i32* %6
store i32 0, i32* %7
br label %139
139: ; preds = %158, %127
%140 = load i32, i32* %7
%141 = load i32, i32* %9
%142 = icmp slt i32 %140, %141
br i1 %142, label %143, label %161
143: ; preds = %139
%144 = load i32, i32* %6
%145 = load i8*, i8** %4
%146 = load i32, i32* %7
%147 = load i32, i32* %9
%148 = add nsw i32 %146, %147
%149 = load i32, i32* %9
%150 = add nsw i32 %148, %149
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds i8, i8* %145, i64 %151
%153 = load i8, i8* %152
%154 = sext i8 %153 to i32
%155 = icmp ne i32 %144, %154
br i1 %155, label %156, label %157
156: ; preds = %143
store i32 0, i32* %8
br label %157
157: ; preds = %156, %143
br label %158
158: ; preds = %157
%159 = load i32, i32* %7
%160 = add nsw i32 %159, 1
store i32 %160, i32* %7
br label %139
161: ; preds = %139
%162 = load i32, i32* %8
%163 = icmp ne i32 %162, 0
br i1 %163, label %164, label %171
164: ; preds = %161
%165 = load i32, i32* %6
%166 = trunc i32 %165 to i8
%167 = getelementptr inbounds [4 x i8], [4 x i8]* %10, i64 0, i64 2
store i8 %166, i8* %167
%168 = getelementptr inbounds [4 x i8], [4 x i8]* %10, i64 0, i64 3
store i8 0, i8* %168
%169 = getelementptr inbounds [4 x i8], [4 x i8]* %10, i64 0, i64 0
%170 = call i32 @ddt_func(i8* %169)
store i32 %170, i32* %5
br label %171
171: ; preds = %164, %161
br label %172
172: ; preds = %171, %124
br label %173
173: ; preds = %172, %91
br label %174
174: ; preds = %173, %64, %61, %57
%175 = load i32, i32* %5
%176 = icmp ne i32 %175, 100
br i1 %176, label %177, label %178
177: ; preds = %174
br label %256
178: ; preds = %174
%179 = load i8*, i8** %4
%180 = load i8*, i8** %4
%181 = load i32, i32* %9
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds i8, i8* %180, i64 %182
%184 = load i32, i32* %9
%185 = sext i32 %184 to i64
%186 = call i64 @strncmp(i8* %179, i8* %183, i64 %185)
%187 = icmp ne i64 %186, 0
br i1 %187, label %203, label %188
188: ; preds = %178
%189 = load i8*, i8** %4
%190 = load i32, i32* %9
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds i8, i8* %189, i64 %191
%193 = load i8*, i8** %4
%194 = load i32, i32* %9
%195 = shl i32 %194, 1
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds i8, i8* %193, i64 %196
%198 = load i32, i32* %9
%199 = sext i32 %198 to i64
%200 = call i64 @strncmp(i8* %192, i8* %197, i64 %199)
%201 = icmp ne i64 %200, 0
br i1 %201, label %203, label %202
202: ; preds = %188
store i32 -1, i32* %5
br label %255
203: ; preds = %188, %178
%204 = load i8*, i8** %4
%205 = load i8*, i8** %4
%206 = load i32, i32* %9
%207 = sext i32 %206 to i64
%208 = getelementptr inbounds i8, i8* %205, i64 %207
%209 = load i32, i32* %9
%210 = sext i32 %209 to i64
%211 = call i64 @strncmp(i8* %204, i8* %208, i64 %210)
%212 = icmp ne i64 %211, 0
br i1 %212, label %213, label %228
213: ; preds = %203
%214 = load i8*, i8** %4
%215 = load i32, i32* %9
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds i8, i8* %214, i64 %216
%218 = load i8*, i8** %4
%219 = load i32, i32* %9
%220 = shl i32 %219, 1
%221 = sext i32 %220 to i64
%222 = getelementptr inbounds i8, i8* %218, i64 %221
%223 = load i32, i32* %9
%224 = sext i32 %223 to i64
%225 = call i64 @strncmp(i8* %217, i8* %222, i64 %224)
%226 = icmp ne i64 %225, 0
br i1 %226, label %228, label %227
227: ; preds = %213
store i32 1, i32* %5
br label %254
228: ; preds = %213, %203
%229 = load i8*, i8** %4
%230 = load i8*, i8** %4
%231 = load i32, i32* %9
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds i8, i8* %230, i64 %232
%234 = load i32, i32* %9
%235 = sext i32 %234 to i64
%236 = call i64 @strncmp(i8* %229, i8* %233, i64 %235)
%237 = icmp ne i64 %236, 0
br i1 %237, label %253, label %238
238: ; preds = %228
%239 = load i8*, i8** %4
%240 = load i32, i32* %9
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds i8, i8* %239, i64 %241
%243 = load i8*, i8** %4
%244 = load i32, i32* %9
%245 = shl i32 %244, 1
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds i8, i8* %243, i64 %246
%248 = load i32, i32* %9
%249 = sext i32 %248 to i64
%250 = call i64 @strncmp(i8* %242, i8* %247, i64 %249)
%251 = icmp ne i64 %250, 0
br i1 %251, label %252, label %253
252: ; preds = %238
store i32 2, i32* %5
br label %253
253: ; preds = %252, %238, %228
br label %254
254: ; preds = %253, %227
br label %255
255: ; preds = %254, %202
br label %256
256: ; preds = %255, %177
%257 = load i32, i32* %5
ret i32 %257
}

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