#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 */
long long strlen(char *);
int dpart(char *s, char *s1, char *s2) {
  long long l = 0, l1, l2, i = 0, j = 0, len, length;
  while (s[i++] != '\0')
    if (s[i - 1] == '+' || s[i - 1] == '*')
      break;
  len = i - 1;
  for (i = 0; i < len; i++)
    if (s[i] >= '0' && s[i] <= '9')
      s1[j++] = s[i];
  s1[j] = '\0';
  j = 0;
  length = strlen(s);
  for (i = len + 1; i < length; i++)
    if (s[i] >= '0' && s[i] <= '9')
      s2[j++] = s[i];
  s2[j] = '\0';
  i = 0;
  j = 0;
  l = 0;
  l1 = strlen(s1);
  l2 = strlen(s2);
  i = 0;
  j = 0;
  l = 0;
  while (s1[i++] == '0')
    ;
  for (j = i - 1; j <= l1; j++)
    s1[l++] = s1[j];
  i = 0;
  j = 0;
  l = 0;
  while (s2[i++] == '0')
    ;
  for (j = i - 1; j <= l2; j++)
    s2[l++] = s2[j];
  i = 0;
  j = 0;
  l = 0;
  if (strlen(s1) == 0) {
    s1[0] = '0';
    s1[1] = '\0';
  };
  if (strlen(s2) == 0) {
    s2[0] = '0';
    s2[1] = '\0';
  }
  return len;
}


x86 assembly (clang, -O0):
<dpart>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
movq   $0x0,-0x20(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     1198 <dpart+0x88>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
sub    $0x1,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2b,%eax
je     118e <dpart+0x7e>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
sub    $0x1,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    1193 <dpart+0x83>
jmp    1198 <dpart+0x88>
jmp    113c <dpart+0x2c>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x48(%rbp)
movq   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x48(%rbp),%rax
jge    121b <dpart+0x10b>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     1205 <dpart+0xf5>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     1205 <dpart+0xf5>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    %rcx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x40(%rbp)
mov    %dl,(%rax,%rcx,1)
jmp    120a <dpart+0xfa>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    11ac <dpart+0x9c>
mov    -0x10(%rbp),%rax
mov    -0x40(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movq   $0x0,-0x40(%rbp)
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x50(%rbp)
mov    -0x48(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
cmp    -0x50(%rbp),%rax
jge    12b7 <dpart+0x1a7>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jl     12a1 <dpart+0x191>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jg     12a1 <dpart+0x191>
mov    -0x8(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    %rcx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x40(%rbp)
mov    %dl,(%rax,%rcx,1)
jmp    12a6 <dpart+0x196>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1248 <dpart+0x138>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x20(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x28(%rbp)
mov    -0x18(%rbp),%rdi
call   1030 <strlen@plt>
mov    %rax,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1332 <dpart+0x222>
jmp    130d <dpart+0x1fd>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x28(%rbp),%rax
jg     137e <dpart+0x26e>
mov    -0x10(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    %rcx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x20(%rbp)
mov    %dl,(%rax,%rcx,1)
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
jmp    133e <dpart+0x22e>
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    13bb <dpart+0x2ab>
jmp    1396 <dpart+0x286>
mov    -0x38(%rbp),%rax
sub    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x30(%rbp),%rax
jg     1407 <dpart+0x2f7>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%rcx
mov    %rcx,%rsi
add    $0x1,%rsi
mov    %rsi,-0x20(%rbp)
mov    %dl,(%rax,%rcx,1)
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
jmp    13c7 <dpart+0x2b7>
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x20(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <strlen@plt>
cmp    $0x0,%rax
jne    1441 <dpart+0x331>
mov    -0x10(%rbp),%rax
movb   $0x30,(%rax)
mov    -0x10(%rbp),%rax
movb   $0x0,0x1(%rax)
mov    -0x18(%rbp),%rdi
call   1030 <strlen@plt>
cmp    $0x0,%rax
jne    1463 <dpart+0x353>
mov    -0x18(%rbp),%rax
movb   $0x30,(%rax)
mov    -0x18(%rbp),%rax
movb   $0x0,0x1(%rax)
mov    -0x48(%rbp),%rax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dpart>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r15
mov    %rsi,%r13
mov    %rdi,%rbx
xor    %r14d,%r14d
movabs $0xc0000000001,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl (%rbx,%r14,1),%ecx
add    $0x1,%r14
cmp    $0x2b,%rcx
ja     1140 <dpart+0x30>
bt     %rcx,%rax
jae    1140 <dpart+0x30>
cmp    $0x1,%r14
jne    115f <dpart+0x4f>
xor    %eax,%eax
jmp    118b <dpart+0x7b>
lea    -0x1(%r14),%r8
cmp    $0x2,%r14
jne    1244 <dpart+0x134>
xor    %edx,%edx
xor    %eax,%eax
test   $0x1,%r8b
je     118b <dpart+0x7b>
mov    (%rbx,%rdx,1),%cl
lea    -0x30(%rcx),%edx
cmp    $0x9,%dl
ja     118b <dpart+0x7b>
mov    %cl,0x0(%r13,%rax,1)
add    $0x1,%rax
movb   $0x0,0x0(%r13,%rax,1)
mov    %rbx,%rdi
call   1030 <strlen@plt>
mov    %rax,%r8
sub    %r14,%r8
jle    11ce <dpart+0xbe>
add    $0xffffffffffffffff,%rax
cmp    %r14,%rax
jne    129a <dpart+0x18a>
xor    %eax,%eax
mov    %r14,%rdx
test   $0x1,%r8b
je     11d0 <dpart+0xc0>
mov    (%rbx,%rdx,1),%cl
lea    -0x30(%rcx),%edx
cmp    $0x9,%dl
ja     11d0 <dpart+0xc0>
mov    %cl,(%r15,%rax,1)
add    $0x1,%rax
jmp    11d0 <dpart+0xc0>
xor    %eax,%eax
movb   $0x0,(%r15,%rax,1)
mov    %r13,%rdi
call   1030 <strlen@plt>
mov    %rax,%r12
mov    %r15,%rdi
call   1030 <strlen@plt>
lea    0x1(%r12),%rdx
xor    %ecx,%ecx
nop
movzbl 0x0(%r13,%rcx,1),%ebx
add    $0x1,%rcx
add    $0xffffffffffffffff,%rdx
cmp    $0x30,%bl
je     11f0 <dpart+0xe0>
lea    -0x1(%rcx),%rsi
cmp    %rsi,%r12
jl     1451 <dpart+0x341>
lea    0x1(%r12),%rsi
mov    %bl,0x0(%r13)
cmp    %rcx,%rsi
je     1451 <dpart+0x341>
mov    %r12,%r9
sub    %rcx,%r9
add    $0x1,%r9
mov    $0x1,%r8d
cmp    $0x8,%r9
jae    12e9 <dpart+0x1d9>
mov    %rcx,%r10
jmp    142d <dpart+0x31d>
mov    %r8,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %edx,%edx
xor    %eax,%eax
jmp    126d <dpart+0x15d>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x2,%rdx
cmp    %rdx,%rsi
je     1171 <dpart+0x61>
movzbl (%rbx,%rdx,1),%edi
lea    -0x30(%rdi),%ecx
cmp    $0x9,%cl
ja     1282 <dpart+0x172>
mov    %dil,0x0(%r13,%rax,1)
add    $0x1,%rax
movzbl 0x1(%rbx,%rdx,1),%edi
lea    -0x30(%rdi),%ecx
cmp    $0x9,%cl
ja     1260 <dpart+0x150>
mov    %dil,0x0(%r13,%rax,1)
add    $0x1,%rax
jmp    1260 <dpart+0x150>
mov    %r8,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %eax,%eax
mov    %r14,%rdx
jmp    12be <dpart+0x1ae>
nopl   0x0(%rax,%rax,1)
add    $0x2,%rdx
add    $0xfffffffffffffffe,%rsi
je     11b3 <dpart+0xa3>
movzbl (%rbx,%rdx,1),%edi
lea    -0x30(%rdi),%ecx
cmp    $0x9,%cl
ja     12d2 <dpart+0x1c2>
mov    %dil,(%r15,%rax,1)
add    $0x1,%rax
movzbl 0x1(%rbx,%rdx,1),%edi
lea    -0x30(%rdi),%ecx
cmp    $0x9,%cl
ja     12b0 <dpart+0x1a0>
mov    %dil,(%r15,%rax,1)
add    $0x1,%rax
jmp    12b0 <dpart+0x1a0>
lea    0x1(%r13),%rdi
add    %r13,%rsi
cmp    %rsi,%rdi
jae    1310 <dpart+0x200>
lea    (%r12,%r13,1),%rsi
sub    %rcx,%rsi
add    $0x2,%rsi
lea    (%rcx,%r13,1),%rdi
mov    %rcx,%r10
cmp    %rsi,%rdi
jb     142d <dpart+0x31d>
cmp    $0x20,%r9
jae    131e <dpart+0x20e>
xor    %r11d,%r11d
jmp    13d1 <dpart+0x2c1>
mov    %r9,%r11
and    $0xffffffffffffffe0,%r11
lea    -0x20(%r11),%rsi
mov    %rsi,%r8
shr    $0x5,%r8
add    $0x1,%r8
test   %rsi,%rsi
je     139b <dpart+0x28b>
mov    %r9,%rsi
and    $0xffffffffffffffe0,%rsi
add    $0xffffffffffffffe0,%rsi
shr    $0x5,%rsi
add    $0x1,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    (%rbx,%r13,1),%rdi
movups (%rcx,%rdi,1),%xmm0
movups 0x10(%rcx,%rdi,1),%xmm1
movups %xmm0,0x1(%r13,%rbx,1)
movups %xmm1,0x11(%r13,%rbx,1)
movups 0x20(%rcx,%rdi,1),%xmm0
movups 0x30(%rcx,%rdi,1),%xmm1
movups %xmm0,0x21(%r13,%rbx,1)
movups %xmm1,0x31(%r13,%rbx,1)
add    $0x40,%rbx
add    $0xfffffffffffffffe,%rsi
jne    1360 <dpart+0x250>
jmp    139d <dpart+0x28d>
xor    %ebx,%ebx
test   $0x1,%r8b
je     13c2 <dpart+0x2b2>
mov    %rbx,%rsi
or     $0x1,%rsi
add    %r13,%rbx
movups (%rcx,%rbx,1),%xmm0
movups 0x10(%rcx,%rbx,1),%xmm1
movups %xmm0,0x0(%r13,%rsi,1)
movups %xmm1,0x10(%r13,%rsi,1)
cmp    %r11,%r9
je     1451 <dpart+0x341>
test   $0x18,%r9b
je     141c <dpart+0x30c>
mov    %r9,%rbx
and    $0xfffffffffffffff8,%rbx
and    $0xfffffffffffffff8,%rdx
mov    %rdx,%r10
add    %rcx,%r10
lea    0x1(%rbx),%r8
lea    (%r11,%r13,1),%rdx
add    $0x1,%rdx
mov    %rbx,%rsi
sub    %r11,%rsi
add    %r13,%r11
xor    %edi,%edi
nopl   0x0(%rax)
lea    (%r11,%rdi,1),%rbp
mov    (%rcx,%rbp,1),%rbp
mov    %rbp,(%rdx,%rdi,1)
add    $0x8,%rdi
cmp    %rdi,%rsi
jne    1400 <dpart+0x2f0>
cmp    %rbx,%r9
jne    142d <dpart+0x31d>
jmp    1451 <dpart+0x341>
or     $0x1,%r11
and    $0xffffffffffffffe0,%rdx
add    %rcx,%rdx
mov    %rdx,%r10
mov    %r11,%r8
add    %r13,%r10
lea    (%r8,%r13,1),%rdx
sub    %r8,%r12
sub    %rcx,%r12
add    $0x2,%r12
xor    %ecx,%ecx
movzbl (%r10,%rcx,1),%ebx
mov    %bl,(%rdx,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%r12
jne    1440 <dpart+0x330>
lea    0x1(%rax),%rdx
xor    %ecx,%ecx
nopw   0x0(%rax,%rax,1)
movzbl (%r15,%rcx,1),%ebx
add    $0x1,%rcx
add    $0xffffffffffffffff,%rdx
cmp    $0x30,%bl
je     1460 <dpart+0x350>
lea    -0x1(%rcx),%rsi
cmp    %rsi,%rax
jl     1610 <dpart+0x500>
lea    0x1(%rax),%rsi
mov    %bl,(%r15)
cmp    %rcx,%rsi
je     1610 <dpart+0x500>
mov    %rax,%r9
sub    %rcx,%r9
add    $0x1,%r9
mov    $0x1,%r8d
cmp    $0x8,%r9
jae    14ad <dpart+0x39d>
mov    %rcx,%rsi
jmp    15ed <dpart+0x4dd>
lea    0x1(%r15),%rdi
add    %r15,%rsi
cmp    %rsi,%rdi
jae    14d4 <dpart+0x3c4>
lea    (%rax,%r15,1),%rbp
sub    %rcx,%rbp
add    $0x2,%rbp
lea    (%r15,%rcx,1),%rdi
mov    %rcx,%rsi
cmp    %rbp,%rdi
jb     15ed <dpart+0x4dd>
cmp    $0x20,%r9
jae    14e2 <dpart+0x3d2>
xor    %r11d,%r11d
jmp    1590 <dpart+0x480>
mov    %r9,%r11
and    $0xffffffffffffffe0,%r11
lea    -0x20(%r11),%rsi
mov    %rsi,%r8
shr    $0x5,%r8
add    $0x1,%r8
test   %rsi,%rsi
je     155b <dpart+0x44b>
mov    %r9,%rsi
and    $0xffffffffffffffe0,%rsi
add    $0xffffffffffffffe0,%rsi
shr    $0x5,%rsi
add    $0x1,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
lea    (%r15,%rbx,1),%rdi
movups (%rcx,%rdi,1),%xmm0
movups 0x10(%rcx,%rdi,1),%xmm1
movups %xmm0,0x1(%r15,%rbx,1)
movups %xmm1,0x11(%r15,%rbx,1)
movups 0x20(%rcx,%rdi,1),%xmm0
movups 0x30(%rcx,%rdi,1),%xmm1
movups %xmm0,0x21(%r15,%rbx,1)
movups %xmm1,0x31(%r15,%rbx,1)
add    $0x40,%rbx
add    $0xfffffffffffffffe,%rsi
jne    1520 <dpart+0x410>
jmp    155d <dpart+0x44d>
xor    %ebx,%ebx
test   $0x1,%r8b
je     1581 <dpart+0x471>
mov    %rbx,%rsi
or     $0x1,%rsi
add    %r15,%rbx
movups (%rcx,%rbx,1),%xmm0
movups 0x10(%rcx,%rbx,1),%xmm1
movups %xmm0,(%r15,%rsi,1)
movups %xmm1,0x10(%r15,%rsi,1)
cmp    %r11,%r9
je     1610 <dpart+0x500>
test   $0x18,%r9b
je     15dc <dpart+0x4cc>
mov    %r9,%r10
and    $0xfffffffffffffff8,%r10
and    $0xfffffffffffffff8,%rdx
mov    %rdx,%rsi
add    %rcx,%rsi
lea    0x1(%r10),%r8
lea    (%r15,%r11,1),%rdx
add    $0x1,%rdx
mov    %r10,%rbx
sub    %r11,%rbx
add    %r15,%r11
xor    %edi,%edi
nopl   0x0(%rax,%rax,1)
lea    (%r11,%rdi,1),%rbp
mov    (%rcx,%rbp,1),%rbp
mov    %rbp,(%rdx,%rdi,1)
add    $0x8,%rdi
cmp    %rdi,%rbx
jne    15c0 <dpart+0x4b0>
cmp    %r10,%r9
jne    15ed <dpart+0x4dd>
jmp    1610 <dpart+0x500>
or     $0x1,%r11
and    $0xffffffffffffffe0,%rdx
add    %rcx,%rdx
mov    %rdx,%rsi
mov    %r11,%r8
add    %r15,%rsi
lea    (%r15,%r8,1),%rdx
sub    %r8,%rax
sub    %rcx,%rax
add    $0x2,%rax
xor    %ecx,%ecx
movzbl (%rsi,%rcx,1),%ebx
mov    %bl,(%rdx,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1600 <dpart+0x4f0>
cmpb   $0x0,0x0(%r13)
je     1633 <dpart+0x523>
cmpb   $0x0,(%r15)
je     1640 <dpart+0x530>
add    $0xffffffff,%r14d
mov    %r14d,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movw   $0x30,0x0(%r13)
cmpb   $0x0,(%r15)
jne    161d <dpart+0x50d>
movw   $0x30,(%r15)
jmp    161d <dpart+0x50d>

LLVM IR (-O0):
define i32 @dpart(i8* %0, i8* %1, i8* %2) {
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca i64
store i8* %0, i8** %4
store i8* %1, i8** %5
store i8* %2, i8** %6
store i64 0, i64* %7
store i64 0, i64* %10
store i64 0, i64* %11
br label %14
14: ; preds = %39, %3
%15 = load i8*, i8** %4
%16 = load i64, i64* %10
%17 = add nsw i64 %16, 1
store i64 %17, i64* %10
%18 = getelementptr inbounds i8, i8* %15, i64 %16
%19 = load i8, i8* %18
%20 = sext i8 %19 to i32
%21 = icmp ne i32 %20, 0
br i1 %21, label %22, label %40
22: ; preds = %14
%23 = load i8*, i8** %4
%24 = load i64, i64* %10
%25 = sub nsw i64 %24, 1
%26 = getelementptr inbounds i8, i8* %23, i64 %25
%27 = load i8, i8* %26
%28 = sext i8 %27 to i32
%29 = icmp eq i32 %28, 43
br i1 %29, label %38, label %30
30: ; preds = %22
%31 = load i8*, i8** %4
%32 = load i64, i64* %10
%33 = sub nsw i64 %32, 1
%34 = getelementptr inbounds i8, i8* %31, i64 %33
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = icmp eq i32 %36, 42
br i1 %37, label %38, label %39
38: ; preds = %30, %22
br label %40
39: ; preds = %30
br label %14
40: ; preds = %38, %14
%41 = load i64, i64* %10
%42 = sub nsw i64 %41, 1
store i64 %42, i64* %12
store i64 0, i64* %10
br label %43
43: ; preds = %71, %40
%44 = load i64, i64* %10
%45 = load i64, i64* %12
%46 = icmp slt i64 %44, %45
br i1 %46, label %47, label %74
47: ; preds = %43
%48 = load i8*, i8** %4
%49 = load i64, i64* %10
%50 = getelementptr inbounds i8, i8* %48, i64 %49
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = icmp sge i32 %52, 48
br i1 %53, label %54, label %70
54: ; preds = %47
%55 = load i8*, i8** %4
%56 = load i64, i64* %10
%57 = getelementptr inbounds i8, i8* %55, i64 %56
%58 = load i8, i8* %57
%59 = sext i8 %58 to i32
%60 = icmp sle i32 %59, 57
br i1 %60, label %61, label %70
61: ; preds = %54
%62 = load i8*, i8** %4
%63 = load i64, i64* %10
%64 = getelementptr inbounds i8, i8* %62, i64 %63
%65 = load i8, i8* %64
%66 = load i8*, i8** %5
%67 = load i64, i64* %11
%68 = add nsw i64 %67, 1
store i64 %68, i64* %11
%69 = getelementptr inbounds i8, i8* %66, i64 %67
store i8 %65, i8* %69
br label %70
70: ; preds = %61, %54, %47
br label %71
71: ; preds = %70
%72 = load i64, i64* %10
%73 = add nsw i64 %72, 1
store i64 %73, i64* %10
br label %43
74: ; preds = %43
%75 = load i8*, i8** %5
%76 = load i64, i64* %11
%77 = getelementptr inbounds i8, i8* %75, i64 %76
store i8 0, i8* %77
store i64 0, i64* %11
%78 = load i8*, i8** %4
%79 = call i64 @strlen(i8* %78)
store i64 %79, i64* %13
%80 = load i64, i64* %12
%81 = add nsw i64 %80, 1
store i64 %81, i64* %10
br label %82
82: ; preds = %110, %74
%83 = load i64, i64* %10
%84 = load i64, i64* %13
%85 = icmp slt i64 %83, %84
br i1 %85, label %86, label %113
86: ; preds = %82
%87 = load i8*, i8** %4
%88 = load i64, i64* %10
%89 = getelementptr inbounds i8, i8* %87, i64 %88
%90 = load i8, i8* %89
%91 = sext i8 %90 to i32
%92 = icmp sge i32 %91, 48
br i1 %92, label %93, label %109
93: ; preds = %86
%94 = load i8*, i8** %4
%95 = load i64, i64* %10
%96 = getelementptr inbounds i8, i8* %94, i64 %95
%97 = load i8, i8* %96
%98 = sext i8 %97 to i32
%99 = icmp sle i32 %98, 57
br i1 %99, label %100, label %109
100: ; preds = %93
%101 = load i8*, i8** %4
%102 = load i64, i64* %10
%103 = getelementptr inbounds i8, i8* %101, i64 %102
%104 = load i8, i8* %103
%105 = load i8*, i8** %6
%106 = load i64, i64* %11
%107 = add nsw i64 %106, 1
store i64 %107, i64* %11
%108 = getelementptr inbounds i8, i8* %105, i64 %106
store i8 %104, i8* %108
br label %109
109: ; preds = %100, %93, %86
br label %110
110: ; preds = %109
%111 = load i64, i64* %10
%112 = add nsw i64 %111, 1
store i64 %112, i64* %10
br label %82
113: ; preds = %82
%114 = load i8*, i8** %6
%115 = load i64, i64* %11
%116 = getelementptr inbounds i8, i8* %114, i64 %115
store i8 0, i8* %116
store i64 0, i64* %10
store i64 0, i64* %11
store i64 0, i64* %7
%117 = load i8*, i8** %5
%118 = call i64 @strlen(i8* %117)
store i64 %118, i64* %8
%119 = load i8*, i8** %6
%120 = call i64 @strlen(i8* %119)
store i64 %120, i64* %9
store i64 0, i64* %10
store i64 0, i64* %11
store i64 0, i64* %7
br label %121
121: ; preds = %129, %113
%122 = load i8*, i8** %5
%123 = load i64, i64* %10
%124 = add nsw i64 %123, 1
store i64 %124, i64* %10
%125 = getelementptr inbounds i8, i8* %122, i64 %123
%126 = load i8, i8* %125
%127 = sext i8 %126 to i32
%128 = icmp eq i32 %127, 48
br i1 %128, label %129, label %130
129: ; preds = %121
br label %121
130: ; preds = %121
%131 = load i64, i64* %10
%132 = sub nsw i64 %131, 1
store i64 %132, i64* %11
br label %133
133: ; preds = %146, %130
%134 = load i64, i64* %11
%135 = load i64, i64* %8
%136 = icmp sle i64 %134, %135
br i1 %136, label %137, label %149
137: ; preds = %133
%138 = load i8*, i8** %5
%139 = load i64, i64* %11
%140 = getelementptr inbounds i8, i8* %138, i64 %139
%141 = load i8, i8* %140
%142 = load i8*, i8** %5
%143 = load i64, i64* %7
%144 = add nsw i64 %143, 1
store i64 %144, i64* %7
%145 = getelementptr inbounds i8, i8* %142, i64 %143
store i8 %141, i8* %145
br label %146
146: ; preds = %137
%147 = load i64, i64* %11
%148 = add nsw i64 %147, 1
store i64 %148, i64* %11
br label %133
149: ; preds = %133
store i64 0, i64* %10
store i64 0, i64* %11
store i64 0, i64* %7
br label %150
150: ; preds = %158, %149
%151 = load i8*, i8** %6
%152 = load i64, i64* %10
%153 = add nsw i64 %152, 1
store i64 %153, i64* %10
%154 = getelementptr inbounds i8, i8* %151, i64 %152
%155 = load i8, i8* %154
%156 = sext i8 %155 to i32
%157 = icmp eq i32 %156, 48
br i1 %157, label %158, label %159
158: ; preds = %150
br label %150
159: ; preds = %150
%160 = load i64, i64* %10
%161 = sub nsw i64 %160, 1
store i64 %161, i64* %11
br label %162
162: ; preds = %175, %159
%163 = load i64, i64* %11
%164 = load i64, i64* %9
%165 = icmp sle i64 %163, %164
br i1 %165, label %166, label %178
166: ; preds = %162
%167 = load i8*, i8** %6
%168 = load i64, i64* %11
%169 = getelementptr inbounds i8, i8* %167, i64 %168
%170 = load i8, i8* %169
%171 = load i8*, i8** %6
%172 = load i64, i64* %7
%173 = add nsw i64 %172, 1
store i64 %173, i64* %7
%174 = getelementptr inbounds i8, i8* %171, i64 %172
store i8 %170, i8* %174
br label %175
175: ; preds = %166
%176 = load i64, i64* %11
%177 = add nsw i64 %176, 1
store i64 %177, i64* %11
br label %162
178: ; preds = %162
store i64 0, i64* %10
store i64 0, i64* %11
store i64 0, i64* %7
%179 = load i8*, i8** %5
%180 = call i64 @strlen(i8* %179)
%181 = icmp eq i64 %180, 0
br i1 %181, label %182, label %187
182: ; preds = %178
%183 = load i8*, i8** %5
%184 = getelementptr inbounds i8, i8* %183, i64 0
store i8 48, i8* %184
%185 = load i8*, i8** %5
%186 = getelementptr inbounds i8, i8* %185, i64 1
store i8 0, i8* %186
br label %187
187: ; preds = %182, %178
%188 = load i8*, i8** %6
%189 = call i64 @strlen(i8* %188)
%190 = icmp eq i64 %189, 0
br i1 %190, label %191, label %196
191: ; preds = %187
%192 = load i8*, i8** %6
%193 = getelementptr inbounds i8, i8* %192, i64 0
store i8 48, i8* %193
%194 = load i8*, i8** %6
%195 = getelementptr inbounds i8, i8* %194, i64 1
store i8 0, i8* %195
br label %196
196: ; preds = %191, %187
%197 = load i64, i64* %12
%198 = trunc i64 %197 to i32
ret i32 %198
}

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