#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 */
unsigned char *Ptngc_warnmalloc_x(int const, char *, int);
int /*<<< orphan*/ comp_conv_to_mtf_byte(unsigned char *, int const,
                                         unsigned char *);
int /*<<< orphan*/ free(unsigned char *);
void Ptngc_comp_conv_to_mtf_partial3(unsigned int *vals, const int nvals,
                                     unsigned char *valsmtf) {
  unsigned char *tmp = Ptngc_warnmalloc_x(
      nvals,
      "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
      "2022-01-22/02-19-57/repos/ctk3b/mdtraj/refs/heads/master/mdtraj/formats/"
      "tng/src/compression/mtf.c",
      84);
  int i, j;
  for (j = 0; j < 3; j++) {
    for (i = 0; i < nvals; i++)
      tmp[i] = (unsigned char)((vals[i] >> (8 * j)) & 0xFF);
    comp_conv_to_mtf_byte(tmp, nvals, valsmtf + j * nvals);
  }
  free(tmp);
}


x86 assembly (clang, -O0):
<Ptngc_comp_conv_to_mtf_partial3>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0xc(%rbp),%edi
lea    0xeb3(%rip),%rsi
mov    $0x54,%edx
call   1050 <Ptngc_warnmalloc_x@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x3,-0x28(%rbp)
jge    11dc <Ptngc_comp_conv_to_mtf_partial3+0xac>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    11b2 <Ptngc_comp_conv_to_mtf_partial3+0x82>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x28(%rbp),%ecx
shl    $0x3,%ecx
shr    %cl,%eax
and    $0xff,%eax
mov    %al,%dl
mov    -0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    1173 <Ptngc_comp_conv_to_mtf_partial3+0x43>
mov    -0x20(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%rdx
mov    -0x28(%rbp),%eax
imul   -0xc(%rbp),%eax
cltq
add    %rax,%rdx
call   1040 <comp_conv_to_mtf_byte@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1162 <Ptngc_comp_conv_to_mtf_partial3+0x32>
mov    -0x20(%rbp),%rdi
call   1030 <free@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Ptngc_comp_conv_to_mtf_partial3>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r14
mov    %esi,%r15d
mov    %rdi,%rbp
lea    0xec5(%rip),%rsi
mov    %r15d,%edi
mov    $0x54,%edx
call   1050 <Ptngc_warnmalloc_x@plt>
mov    %rax,%rbx
movslq %r15d,%r12
test   %r15d,%r15d
jle    1201 <Ptngc_comp_conv_to_mtf_partial3+0xd1>
mov    %r15d,%r13d
cmp    $0x8,%r15d
jb     1191 <Ptngc_comp_conv_to_mtf_partial3+0x61>
lea    0x0(,%r13,4),%rax
add    %rbp,%rax
cmp    %rax,%rbx
jae    1214 <Ptngc_comp_conv_to_mtf_partial3+0xe4>
lea    (%rbx,%r13,1),%rax
cmp    %rbp,%rax
jbe    1214 <Ptngc_comp_conv_to_mtf_partial3+0xe4>
xor    %eax,%eax
mov    %rax,%rsi
not    %rsi
add    %r13,%rsi
mov    %r13,%rdx
and    $0x3,%rdx
je     11c2 <Ptngc_comp_conv_to_mtf_partial3+0x92>
cs nopw 0x0(%rax,%rax,1)
nop
movzbl 0x0(%rbp,%rax,4),%ecx
mov    %cl,(%rbx,%rax,1)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    11b0 <Ptngc_comp_conv_to_mtf_partial3+0x80>
cmp    $0x3,%rsi
jb     12fe <Ptngc_comp_conv_to_mtf_partial3+0x1ce>
nopl   0x0(%rax)
movzbl 0x0(%rbp,%rax,4),%ecx
mov    %cl,(%rbx,%rax,1)
movzbl 0x4(%rbp,%rax,4),%ecx
mov    %cl,0x1(%rbx,%rax,1)
movzbl 0x8(%rbp,%rax,4),%ecx
mov    %cl,0x2(%rbx,%rax,1)
movzbl 0xc(%rbp,%rax,4),%ecx
mov    %cl,0x3(%rbx,%rax,1)
add    $0x4,%rax
cmp    %rax,%r13
jne    11d0 <Ptngc_comp_conv_to_mtf_partial3+0xa0>
jmp    12fe <Ptngc_comp_conv_to_mtf_partial3+0x1ce>
mov    %rbx,%rdi
mov    %r15d,%esi
mov    %r14,%rdx
call   1040 <comp_conv_to_mtf_byte@plt>
jmp    13a1 <Ptngc_comp_conv_to_mtf_partial3+0x271>
mov    %r13d,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rcx
mov    %rcx,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1681 <Ptngc_comp_conv_to_mtf_partial3+0x551>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
movdqa 0xdbd(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movdqu 0x0(%rbp,%rcx,4),%xmm1
movdqu 0x10(%rbp,%rcx,4),%xmm2
pand   %xmm0,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
pand   %xmm0,%xmm2
packuswb %xmm2,%xmm2
packuswb %xmm2,%xmm2
movd   %xmm1,(%rbx,%rcx,1)
movd   %xmm2,0x4(%rbx,%rcx,1)
movdqu 0x20(%rbp,%rcx,4),%xmm1
movdqu 0x30(%rbp,%rcx,4),%xmm2
pand   %xmm0,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
pand   %xmm0,%xmm2
packuswb %xmm2,%xmm2
packuswb %xmm2,%xmm2
movd   %xmm1,0x8(%rbx,%rcx,1)
movd   %xmm2,0xc(%rbx,%rcx,1)
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1250 <Ptngc_comp_conv_to_mtf_partial3+0x120>
test   $0x1,%dl
je     12f5 <Ptngc_comp_conv_to_mtf_partial3+0x1c5>
movdqu 0x0(%rbp,%rcx,4),%xmm0
movdqu 0x10(%rbp,%rcx,4),%xmm1
movdqa 0xd2e(%rip),%xmm2
pand   %xmm2,%xmm0
packuswb %xmm0,%xmm0
packuswb %xmm0,%xmm0
pand   %xmm2,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
movd   %xmm0,(%rbx,%rcx,1)
movd   %xmm1,0x4(%rbx,%rcx,1)
cmp    %r13,%rax
jne    1193 <Ptngc_comp_conv_to_mtf_partial3+0x63>
mov    %rbx,%rdi
mov    %r15d,%esi
mov    %r14,%rdx
call   1040 <comp_conv_to_mtf_byte@plt>
test   %r15d,%r15d
jle    13a1 <Ptngc_comp_conv_to_mtf_partial3+0x271>
cmp    $0x8,%r15d
jb     133c <Ptngc_comp_conv_to_mtf_partial3+0x20c>
lea    0x0(,%r13,4),%rax
add    %rbp,%rax
cmp    %rax,%rbx
jae    13d5 <Ptngc_comp_conv_to_mtf_partial3+0x2a5>
lea    (%rbx,%r13,1),%rax
cmp    %rbp,%rax
jbe    13d5 <Ptngc_comp_conv_to_mtf_partial3+0x2a5>
xor    %eax,%eax
mov    %rax,%rsi
not    %rsi
add    %r13,%rsi
mov    %r13,%rdx
and    $0x3,%rdx
je     1362 <Ptngc_comp_conv_to_mtf_partial3+0x232>
movzbl 0x1(%rbp,%rax,4),%ecx
mov    %cl,(%rbx,%rax,1)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1350 <Ptngc_comp_conv_to_mtf_partial3+0x220>
cmp    $0x3,%rsi
jb     14dc <Ptngc_comp_conv_to_mtf_partial3+0x3ac>
nopl   0x0(%rax)
movzbl 0x1(%rbp,%rax,4),%ecx
mov    %cl,(%rbx,%rax,1)
movzbl 0x5(%rbp,%rax,4),%ecx
mov    %cl,0x1(%rbx,%rax,1)
movzbl 0x9(%rbp,%rax,4),%ecx
mov    %cl,0x2(%rbx,%rax,1)
movzbl 0xd(%rbp,%rax,4),%ecx
mov    %cl,0x3(%rbx,%rax,1)
add    $0x4,%rax
cmp    %rax,%r13
jne    1370 <Ptngc_comp_conv_to_mtf_partial3+0x240>
jmp    14dc <Ptngc_comp_conv_to_mtf_partial3+0x3ac>
lea    (%r14,%r12,1),%rdx
mov    %rbx,%rdi
mov    %r15d,%esi
call   1040 <comp_conv_to_mtf_byte@plt>
lea    (%r14,%r12,2),%rdx
mov    %rbx,%rdi
mov    %r15d,%esi
call   1040 <comp_conv_to_mtf_byte@plt>
mov    %rbx,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <free@plt>
mov    %r13d,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rcx
mov    %rcx,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     1691 <Ptngc_comp_conv_to_mtf_partial3+0x561>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
movdqa 0xbfc(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movdqu 0x0(%rbp,%rcx,4),%xmm1
movdqu 0x10(%rbp,%rcx,4),%xmm2
psrld  $0x8,%xmm1
psrld  $0x8,%xmm2
pand   %xmm0,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
pand   %xmm0,%xmm2
packuswb %xmm2,%xmm2
packuswb %xmm2,%xmm2
movd   %xmm1,(%rbx,%rcx,1)
movd   %xmm2,0x4(%rbx,%rcx,1)
movdqu 0x20(%rbp,%rcx,4),%xmm1
movdqu 0x30(%rbp,%rcx,4),%xmm2
psrld  $0x8,%xmm1
psrld  $0x8,%xmm2
pand   %xmm0,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
pand   %xmm0,%xmm2
packuswb %xmm2,%xmm2
packuswb %xmm2,%xmm2
movd   %xmm1,0x8(%rbx,%rcx,1)
movd   %xmm2,0xc(%rbx,%rcx,1)
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1410 <Ptngc_comp_conv_to_mtf_partial3+0x2e0>
test   $0x1,%dl
je     14d3 <Ptngc_comp_conv_to_mtf_partial3+0x3a3>
movdqu 0x0(%rbp,%rcx,4),%xmm0
movdqu 0x10(%rbp,%rcx,4),%xmm1
psrld  $0x8,%xmm0
psrld  $0x8,%xmm1
movdqa 0xb50(%rip),%xmm2
pand   %xmm2,%xmm0
packuswb %xmm0,%xmm0
packuswb %xmm0,%xmm0
pand   %xmm2,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
movd   %xmm0,(%rbx,%rcx,1)
movd   %xmm1,0x4(%rbx,%rcx,1)
cmp    %r13,%rax
jne    133e <Ptngc_comp_conv_to_mtf_partial3+0x20e>
lea    (%r14,%r12,1),%rdx
mov    %rbx,%rdi
mov    %r15d,%esi
call   1040 <comp_conv_to_mtf_byte@plt>
test   %r15d,%r15d
jle    13b0 <Ptngc_comp_conv_to_mtf_partial3+0x280>
cmp    $0x8,%r15d
jb     1515 <Ptngc_comp_conv_to_mtf_partial3+0x3e5>
lea    0x0(,%r13,4),%rax
add    %rbp,%rax
cmp    %rax,%rbx
jae    1581 <Ptngc_comp_conv_to_mtf_partial3+0x451>
mov    %rbx,%rax
add    %r13,%rax
cmp    %rbp,%rax
jbe    1581 <Ptngc_comp_conv_to_mtf_partial3+0x451>
xor    %eax,%eax
mov    %rax,%rsi
not    %rsi
add    %r13,%rsi
mov    %r13,%rdx
and    $0x3,%rdx
je     1542 <Ptngc_comp_conv_to_mtf_partial3+0x412>
nopl   0x0(%rax)
movzbl 0x2(%rbp,%rax,4),%ecx
mov    %cl,(%rbx,%rax,1)
add    $0x1,%rax
add    $0xffffffffffffffff,%rdx
jne    1530 <Ptngc_comp_conv_to_mtf_partial3+0x400>
cmp    $0x3,%rsi
jb     13b0 <Ptngc_comp_conv_to_mtf_partial3+0x280>
nopl   0x0(%rax)
movzbl 0x2(%rbp,%rax,4),%ecx
mov    %cl,(%rbx,%rax,1)
movzbl 0x6(%rbp,%rax,4),%ecx
mov    %cl,0x1(%rbx,%rax,1)
movzbl 0xa(%rbp,%rax,4),%ecx
mov    %cl,0x2(%rbx,%rax,1)
movzbl 0xe(%rbp,%rax,4),%ecx
mov    %cl,0x3(%rbx,%rax,1)
add    $0x4,%rax
cmp    %rax,%r13
jne    1550 <Ptngc_comp_conv_to_mtf_partial3+0x420>
jmp    13b0 <Ptngc_comp_conv_to_mtf_partial3+0x280>
mov    %r13d,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rcx
mov    %rcx,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     16a1 <Ptngc_comp_conv_to_mtf_partial3+0x571>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
movdqa 0xa50(%rip),%xmm0
movdqu 0x0(%rbp,%rcx,4),%xmm1
movdqu 0x10(%rbp,%rcx,4),%xmm2
psrld  $0x10,%xmm1
psrld  $0x10,%xmm2
pand   %xmm0,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
pand   %xmm0,%xmm2
packuswb %xmm2,%xmm2
packuswb %xmm2,%xmm2
movd   %xmm1,(%rbx,%rcx,1)
movd   %xmm2,0x4(%rbx,%rcx,1)
movdqu 0x20(%rbp,%rcx,4),%xmm1
movdqu 0x30(%rbp,%rcx,4),%xmm2
psrld  $0x10,%xmm1
psrld  $0x10,%xmm2
pand   %xmm0,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
pand   %xmm0,%xmm2
packuswb %xmm2,%xmm2
packuswb %xmm2,%xmm2
movd   %xmm1,0x8(%rbx,%rcx,1)
movd   %xmm2,0xc(%rbx,%rcx,1)
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rsi
jne    15b0 <Ptngc_comp_conv_to_mtf_partial3+0x480>
test   $0x1,%dl
je     1673 <Ptngc_comp_conv_to_mtf_partial3+0x543>
movdqu 0x0(%rbp,%rcx,4),%xmm0
movdqu 0x10(%rbp,%rcx,4),%xmm1
psrld  $0x10,%xmm0
psrld  $0x10,%xmm1
movdqa 0x9b0(%rip),%xmm2
pand   %xmm2,%xmm0
packuswb %xmm0,%xmm0
packuswb %xmm0,%xmm0
pand   %xmm2,%xmm1
packuswb %xmm1,%xmm1
packuswb %xmm1,%xmm1
movd   %xmm0,(%rbx,%rcx,1)
movd   %xmm1,0x4(%rbx,%rcx,1)
cmp    %r13,%rax
je     13b0 <Ptngc_comp_conv_to_mtf_partial3+0x280>
jmp    1517 <Ptngc_comp_conv_to_mtf_partial3+0x3e7>
xor    %ecx,%ecx
test   $0x1,%dl
jne    12be <Ptngc_comp_conv_to_mtf_partial3+0x18e>
jmp    12f5 <Ptngc_comp_conv_to_mtf_partial3+0x1c5>
xor    %ecx,%ecx
test   $0x1,%dl
jne    1492 <Ptngc_comp_conv_to_mtf_partial3+0x362>
jmp    14d3 <Ptngc_comp_conv_to_mtf_partial3+0x3a3>
xor    %ecx,%ecx
test   $0x1,%dl
jne    1632 <Ptngc_comp_conv_to_mtf_partial3+0x502>
jmp    1673 <Ptngc_comp_conv_to_mtf_partial3+0x543>

LLVM IR (-O0):
@.str = [162 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/ctk3b/mdtraj/refs/heads/master/mdtraj/formats/tng/src/compression/mtf.c\00"
define void @Ptngc_comp_conv_to_mtf_partial3(i32* %0, i32 %1, i8* %2) {
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
store i32* %0, i32** %4
store i32 %1, i32* %5
store i8* %2, i8** %6
%10 = load i32, i32* %5
%11 = call i8* @Ptngc_warnmalloc_x(i32 %10, i8* getelementptr inbounds ([162 x i8], [162 x i8]* @.str, i64 0, i64 0), i32 84)
store i8* %11, i8** %7
store i32 0, i32* %9
br label %12
12: ; preds = %48, %3
%13 = load i32, i32* %9
%14 = icmp slt i32 %13, 3
br i1 %14, label %15, label %51
15: ; preds = %12
store i32 0, i32* %8
br label %16
16: ; preds = %35, %15
%17 = load i32, i32* %8
%18 = load i32, i32* %5
%19 = icmp slt i32 %17, %18
br i1 %19, label %20, label %38
20: ; preds = %16
%21 = load i32*, i32** %4
%22 = load i32, i32* %8
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds i32, i32* %21, i64 %23
%25 = load i32, i32* %24
%26 = load i32, i32* %9
%27 = mul nsw i32 8, %26
%28 = lshr i32 %25, %27
%29 = and i32 %28, 255
%30 = trunc i32 %29 to i8
%31 = load i8*, i8** %7
%32 = load i32, i32* %8
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds i8, i8* %31, i64 %33
store i8 %30, i8* %34
br label %35
35: ; preds = %20
%36 = load i32, i32* %8
%37 = add nsw i32 %36, 1
store i32 %37, i32* %8
br label %16
38: ; preds = %16
%39 = load i8*, i8** %7
%40 = load i32, i32* %5
%41 = load i8*, i8** %6
%42 = load i32, i32* %9
%43 = load i32, i32* %5
%44 = mul nsw i32 %42, %43
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i8, i8* %41, i64 %45
%47 = call i32 @comp_conv_to_mtf_byte(i8* %39, i32 %40, i8* %46)
br label %48
48: ; preds = %38
%49 = load i32, i32* %9
%50 = add nsw i32 %49, 1
store i32 %50, i32* %9
br label %12
51: ; preds = %12
%52 = load i8*, i8** %7
%53 = call i32 @free(i8* %52)
ret void
}

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