int hide_pixels(cover_image, message_image, mie, cie, lsb, n, mlength)
int cie, lsb, mie, n;
long mlength;
short **cover_image, **message_image;
{
  char result, new_message, sample;
  char mask1[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
  char mask2[8] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
  int c_counter, i, j;
  printf("\nHP> mie=%d   cie=%d   lsb=%d", mie, cie, lsb);
  for (i = 0; i < mlength; i++) {
    c_counter = 0;
    sample = message_image[i][mie];
    for (j = n - 1; j > -1; j--) {
      new_message = cover_image[i][cie + c_counter];
      result = sample & mask1[j];
      if (result != 0x00) {
        if (lsb)
          new_message = new_message | mask1[0];
        else
          new_message = new_message | mask1[7];
      } else {
        if (lsb)
          new_message = new_message & mask2[0];
        else
          new_message = new_message & mask2[7];
      }
      cover_image[i][cie + c_counter] = new_message;
      c_counter++;
    }
  }
  return (1);
}


x86 assembly (clang, -O0):
<hide_pixels>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
mov    0xec7(%rip),%rax
mov    %rax,-0x2b(%rbp)
mov    0xec4(%rip),%rax
mov    %rax,-0x33(%rbp)
mov    -0x14(%rbp),%esi
mov    -0x18(%rbp),%edx
mov    -0x1c(%rbp),%ecx
lea    0xeb8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x3c(%rbp)
movslq -0x3c(%rbp),%rax
cmp    0x10(%rbp),%rax
jge    1286 <hide_pixels+0x176>
movl   $0x0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,2),%ax
mov    %al,-0x23(%rbp)
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0xffffffff,-0x40(%rbp)
jle    1273 <hide_pixels+0x163>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x18(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,2),%ax
mov    %al,-0x22(%rbp)
movsbl -0x23(%rbp),%eax
movslq -0x40(%rbp),%rcx
movsbl -0x2b(%rbp,%rcx,1),%ecx
and    %ecx,%eax
mov    %al,-0x21(%rbp)
movsbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     120e <hide_pixels+0xfe>
cmpl   $0x0,-0x1c(%rbp)
je     11fc <hide_pixels+0xec>
movsbl -0x22(%rbp),%eax
movsbl -0x2b(%rbp),%ecx
or     %ecx,%eax
mov    %al,-0x22(%rbp)
jmp    1209 <hide_pixels+0xf9>
movsbl -0x22(%rbp),%eax
movsbl -0x24(%rbp),%ecx
or     %ecx,%eax
mov    %al,-0x22(%rbp)
jmp    123c <hide_pixels+0x12c>
cmpl   $0x0,-0x1c(%rbp)
je     122a <hide_pixels+0x11a>
movsbl -0x22(%rbp),%eax
movsbl -0x33(%rbp),%ecx
and    %ecx,%eax
mov    %al,-0x22(%rbp)
jmp    1237 <hide_pixels+0x127>
movsbl -0x22(%rbp),%eax
movsbl -0x2c(%rbp),%ecx
and    %ecx,%eax
mov    %al,-0x22(%rbp)
jmp    123c <hide_pixels+0x12c>
movsbl -0x22(%rbp),%eax
mov    %ax,%dx
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x18(%rbp),%ecx
add    -0x38(%rbp),%ecx
movslq %ecx,%rcx
mov    %dx,(%rax,%rcx,2)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x40(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x40(%rbp)
jmp    119b <hide_pixels+0x8b>
jmp    1278 <hide_pixels+0x168>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1166 <hide_pixels+0x56>
mov    $0x1,%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<hide_pixels>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %r9d,%r14d
mov    %r8d,%r12d
mov    %ecx,%ebx
mov    %edx,%r13d
mov    %rsi,0x30(%rsp)
mov    %rdi,0x28(%rsp)
mov    0x70(%rsp),%rbp
lea    0xf09(%rip),%rdi
mov    %edx,%esi
mov    %ecx,%edx
mov    %r8d,%ecx
xor    %eax,%eax
call   1030 <printf@plt>
test   %rbp,%rbp
jle    13d6 <hide_pixels+0x2c6>
mov    %rbp,%r8
movslq %r13d,%r9
xor    %eax,%eax
test   %r12d,%r12d
sete   %al
mov    %r14d,%r15d
movslq %ebx,%rcx
mov    %rcx,0x10(%rsp)
lea    -0x1(%r15),%rdx
lea    -0x1(%r14),%ecx
cmp    %edx,%ecx
setb   %cl
mov    %rdx,0x20(%rsp)
shr    $0x20,%rdx
setne  %dl
or     %cl,%dl
mov    %dl,0xf(%rsp)
mov    %r15d,%r10d
and    $0xfffffff8,%r10d
mov    %r15d,%ecx
and    $0x7,%ecx
mov    %rcx,0x18(%rsp)
movd   %eax,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm15
movdqa 0xe48(%rip),%xmm13
pxor   %xmm15,%xmm13
xor    %r11d,%r11d
lea    0xe79(%rip),%rax
pxor   %xmm14,%xmm14
pcmpeqd %xmm8,%xmm8
movdqa 0xe26(%rip),%xmm9
movdqa 0xe2d(%rip),%xmm10
movdqa 0xe34(%rip),%xmm11
movdqa 0xe3b(%rip),%xmm12
jmp    120d <hide_pixels+0xfd>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r11
cmp    %r8,%r11
je     13d6 <hide_pixels+0x2c6>
test   %r14d,%r14d
jle    1200 <hide_pixels+0xf0>
cmp    $0x8,%r14d
setb   %cl
mov    0x30(%rsp),%rdx
mov    (%rdx,%r11,8),%rdx
mov    (%rdx,%r9,2),%dl
mov    0x28(%rsp),%rsi
mov    (%rsi,%r11,8),%r13
or     0xf(%rsp),%cl
je     1240 <hide_pixels+0x130>
xor    %esi,%esi
mov    %r15,%rcx
jmp    135f <hide_pixels+0x24f>
nop
mov    %r9,%rbp
mov    %r8,%rdi
movzbl %dl,%ecx
movd   %ecx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm3
mov    0x10(%rsp),%rcx
lea    0x0(,%rcx,2),%rbx
add    %r13,%rbx
mov    0x20(%rsp),%r8
xor    %r9d,%r9d
xchg   %ax,%ax
movdqu (%rbx,%r9,2),%xmm0
mov    %r8d,%ecx
movq   -0x7(%rcx,%rax,1),%xmm1
punpcklbw %xmm14,%xmm1
pshufd $0x4e,%xmm1,%xmm1
pshuflw $0x1b,%xmm1,%xmm1
pshufhw $0x1b,%xmm1,%xmm5
packuswb %xmm5,%xmm5
pand   %xmm3,%xmm5
pcmpeqb %xmm14,%xmm5
punpcklbw %xmm5,%xmm1
pxor   %xmm8,%xmm5
punpcklbw %xmm5,%xmm5
psraw  $0x8,%xmm1
movdqa %xmm0,%xmm4
psllw  $0x8,%xmm4
psraw  $0x8,%xmm4
movdqa %xmm4,%xmm2
por    %xmm9,%xmm2
movdqa %xmm0,%xmm7
por    %xmm10,%xmm7
movdqa %xmm1,%xmm6
pand   %xmm13,%xmm6
psllw  $0xf,%xmm6
psraw  $0xf,%xmm6
pand   %xmm6,%xmm4
pand   %xmm11,%xmm4
pand   %xmm15,%xmm1
psllw  $0xf,%xmm1
psraw  $0xf,%xmm1
pand   %xmm1,%xmm0
pand   %xmm12,%xmm0
pand   %xmm15,%xmm5
psllw  $0xf,%xmm5
psraw  $0xf,%xmm5
pand   %xmm5,%xmm7
pandn  %xmm2,%xmm5
por    %xmm7,%xmm5
pandn  %xmm5,%xmm6
por    %xmm4,%xmm6
pandn  %xmm6,%xmm1
por    %xmm0,%xmm1
movdqu %xmm1,(%rbx,%r9,2)
add    $0x8,%r9
add    $0xfffffffffffffff8,%r8
cmp    %r9,%r10
jne    1270 <hide_pixels+0x160>
mov    %r10,%rsi
mov    0x18(%rsp),%rcx
cmp    %r15,%r10
mov    %rdi,%r8
mov    %rbp,%r9
je     1200 <hide_pixels+0xf0>
mov    0x10(%rsp),%rdi
lea    0x0(,%rdi,2),%rbx
add    %r13,%rbx
add    $0xffffffffffffffff,%rcx
jmp    139c <hide_pixels+0x28c>
cs nopw 0x0(%rax,%rax,1)
nop
movsbl %dil,%edi
or     $0x1,%edi
mov    %di,(%rbx,%rsi,2)
add    $0x1,%rsi
add    $0xffffffffffffffff,%rcx
cmp    %rsi,%r15
je     1200 <hide_pixels+0xf0>
movzwl (%rbx,%rsi,2),%edi
mov    %ecx,%ebp
test   %dl,0x0(%rbp,%rax,1)
je     13c0 <hide_pixels+0x2b0>
test   %r12d,%r12d
jne    1380 <hide_pixels+0x270>
or     $0xff80,%edi
jmp    1387 <hide_pixels+0x277>
cs nopw 0x0(%rax,%rax,1)
nop
test   %r12d,%r12d
je     13d1 <hide_pixels+0x2c1>
movsbl %dil,%edi
and    $0xfffe,%edi
jmp    1387 <hide_pixels+0x277>
and    $0x7f,%edi
jmp    1387 <hide_pixels+0x277>
mov    $0x1,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.hide_pixels.mask1 = [8 x i8] c"\01\02\04\08\10 @\80"
@__const.hide_pixels.mask2 = [8 x i8] c"\FE\FD\FB\F7\EF\DF\BF\7F"
@.str = [30 x i8] c"\0AHP> mie=%d cie=%d lsb=%d\00"
define i32 @hide_pixels(i16** %0, i16** %1, i32 %2, i32 %3, i32 %4, i32 %5, i64 %6) {
%8 = alloca i16**
%9 = alloca i16**
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i64
%15 = alloca i8
%16 = alloca i8
%17 = alloca i8
%18 = alloca [8 x i8]
%19 = alloca [8 x i8]
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
store i16** %0, i16*** %8
store i16** %1, i16*** %9
store i32 %2, i32* %10
store i32 %3, i32* %11
store i32 %4, i32* %12
store i32 %5, i32* %13
store i64 %6, i64* %14
%23 = bitcast [8 x i8]* %18 to i8*
%24 = bitcast [8 x i8]* %19 to i8*
%25 = load i32, i32* %10
%26 = load i32, i32* %11
%27 = load i32, i32* %12
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str, i64 0, i64 0), i32 %25, i32 %26, i32 %27)
store i32 0, i32* %21
br label %29
29: ; preds = %134, %7
%30 = load i32, i32* %21
%31 = sext i32 %30 to i64
%32 = load i64, i64* %14
%33 = icmp slt i64 %31, %32
br i1 %33, label %34, label %137
34: ; preds = %29
store i32 0, i32* %20
%35 = load i16**, i16*** %9
%36 = load i32, i32* %21
%37 = sext i32 %36 to i64
%38 = getelementptr inbounds i16*, i16** %35, i64 %37
%39 = load i16*, i16** %38
%40 = load i32, i32* %10
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds i16, i16* %39, i64 %41
%43 = load i16, i16* %42
%44 = trunc i16 %43 to i8
store i8 %44, i8* %17
%45 = load i32, i32* %13
%46 = sub nsw i32 %45, 1
store i32 %46, i32* %22
br label %47
47: ; preds = %130, %34
%48 = load i32, i32* %22
%49 = icmp sgt i32 %48, -1
br i1 %49, label %50, label %133
50: ; preds = %47
%51 = load i16**, i16*** %8
%52 = load i32, i32* %21
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i16*, i16** %51, i64 %53
%55 = load i16*, i16** %54
%56 = load i32, i32* %11
%57 = load i32, i32* %20
%58 = add nsw i32 %56, %57
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds i16, i16* %55, i64 %59
%61 = load i16, i16* %60
%62 = trunc i16 %61 to i8
store i8 %62, i8* %16
%63 = load i8, i8* %17
%64 = sext i8 %63 to i32
%65 = load i32, i32* %22
%66 = sext i32 %65 to i64
%67 = getelementptr inbounds [8 x i8], [8 x i8]* %18, i64 0, i64 %66
%68 = load i8, i8* %67
%69 = sext i8 %68 to i32
%70 = and i32 %64, %69
%71 = trunc i32 %70 to i8
store i8 %71, i8* %15
%72 = load i8, i8* %15
%73 = sext i8 %72 to i32
%74 = icmp ne i32 %73, 0
br i1 %74, label %75, label %95
75: ; preds = %50
%76 = load i32, i32* %12
%77 = icmp ne i32 %76, 0
br i1 %77, label %78, label %86
78: ; preds = %75
%79 = load i8, i8* %16
%80 = sext i8 %79 to i32
%81 = getelementptr inbounds [8 x i8], [8 x i8]* %18, i64 0, i64 0
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = or i32 %80, %83
%85 = trunc i32 %84 to i8
store i8 %85, i8* %16
br label %94
86: ; preds = %75
%87 = load i8, i8* %16
%88 = sext i8 %87 to i32
%89 = getelementptr inbounds [8 x i8], [8 x i8]* %18, i64 0, i64 7
%90 = load i8, i8* %89
%91 = sext i8 %90 to i32
%92 = or i32 %88, %91
%93 = trunc i32 %92 to i8
store i8 %93, i8* %16
br label %94
94: ; preds = %86, %78
br label %115
95: ; preds = %50
%96 = load i32, i32* %12
%97 = icmp ne i32 %96, 0
br i1 %97, label %98, label %106
98: ; preds = %95
%99 = load i8, i8* %16
%100 = sext i8 %99 to i32
%101 = getelementptr inbounds [8 x i8], [8 x i8]* %19, i64 0, i64 0
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
%104 = and i32 %100, %103
%105 = trunc i32 %104 to i8
store i8 %105, i8* %16
br label %114
106: ; preds = %95
%107 = load i8, i8* %16
%108 = sext i8 %107 to i32
%109 = getelementptr inbounds [8 x i8], [8 x i8]* %19, i64 0, i64 7
%110 = load i8, i8* %109
%111 = sext i8 %110 to i32
%112 = and i32 %108, %111
%113 = trunc i32 %112 to i8
store i8 %113, i8* %16
br label %114
114: ; preds = %106, %98
br label %115
115: ; preds = %114, %94
%116 = load i8, i8* %16
%117 = sext i8 %116 to i16
%118 = load i16**, i16*** %8
%119 = load i32, i32* %21
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds i16*, i16** %118, i64 %120
%122 = load i16*, i16** %121
%123 = load i32, i32* %11
%124 = load i32, i32* %20
%125 = add nsw i32 %123, %124
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i16, i16* %122, i64 %126
store i16 %117, i16* %127
%128 = load i32, i32* %20
%129 = add nsw i32 %128, 1
store i32 %129, i32* %20
br label %130
130: ; preds = %115
%131 = load i32, i32* %22
%132 = add nsw i32 %131, -1
store i32 %132, i32* %22
br label %47
133: ; preds = %47
br label %134
134: ; preds = %133
%135 = load i32, i32* %21
%136 = add nsw i32 %135, 1
store i32 %136, i32* %21
br label %29
137: ; preds = %29
ret i32 1
}

LLVM IR (-O2):
@__const.hide_pixels.mask1 = [8 x i8] c"\01\02\04\08\10 @\80"
@.str = [30 x i8] c"\0AHP> mie=%d cie=%d lsb=%d\00"
define i32 @hide_pixels(i16** nocapture %0, i16** nocapture %1, i32 %2, i32 %3, i32 %4, i32 %5, i64 %6) {
%8 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str, i64 0, i64 0), i32 %2, i32 %3, i32 %4)
%9 = icmp sgt i64 %6, 0
br i1 %9, label %10, label %114
10: ; preds = %7
%11 = sext i32 %2 to i64
%12 = icmp sgt i32 %5, 0
%13 = icmp eq i32 %4, 0
%14 = zext i32 %5 to i64
%15 = sext i32 %3 to i64
%16 = add nsw i64 %14, -1
%17 = add i32 %5, -1
%18 = icmp ult i32 %5, 8
%19 = trunc i64 %16 to i32
%20 = icmp ult i32 %17, %19
%21 = icmp ugt i64 %16, 4294967295
%22 = or i1 %20, %21
%23 = and i64 %14, 4294967288
%24 = and i64 %14, 7
%25 = insertelement <8 x i1> poison, i1 %13, i64 0
%26 = shufflevector <8 x i1> %25, <8 x i1> poison, <8 x i32> zeroinitializer
%27 = xor <8 x i1> %26, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
%28 = icmp eq i64 %23, %14
br label %29
29: ; preds = %10, %111
%30 = phi i64 [ 0, %10 ], [ %112, %111 ]
br i1 %12, label %31, label %111
31: ; preds = %29
%32 = getelementptr inbounds i16*, i16** %1, i64 %30
%33 = load i16*, i16** %32
%34 = getelementptr inbounds i16, i16* %33, i64 %11
%35 = load i16, i16* %34
%36 = getelementptr inbounds i16*, i16** %0, i64 %30
%37 = load i16*, i16** %36
%38 = trunc i16 %35 to i8
%39 = select i1 %18, i1 true, i1 %22
br i1 %39, label %78, label %40
40: ; preds = %31
%41 = insertelement <8 x i8> poison, i8 %38, i64 0
%42 = shufflevector <8 x i8> %41, <8 x i8> poison, <8 x i32> zeroinitializer
br label %43
43: ; preds = %43, %40
%44 = phi i64 [ 0, %40 ], [ %75, %43 ]
%45 = xor i64 %44, -1
%46 = add i64 %45, %14
%47 = add nsw i64 %44, %15
%48 = getelementptr inbounds i16, i16* %37, i64 %47
%49 = bitcast i16* %48 to <8 x i16>*
%50 = load <8 x i16>, <8 x i16>* %49
%51 = and i64 %46, 4294967295
%52 = getelementptr inbounds [8 x i8], [8 x i8]* @__const.hide_pixels.mask1, i64 0, i64 %51
%53 = getelementptr inbounds i8, i8* %52, i64 -7
%54 = bitcast i8* %53 to <8 x i8>*
%55 = load <8 x i8>, <8 x i8>* %54
%56 = shufflevector <8 x i8> %55, <8 x i8> poison, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
%57 = and <8 x i8> %56, %42
%58 = icmp eq <8 x i8> %57, zeroinitializer
%59 = shl <8 x i16> %50, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
%60 = ashr exact <8 x i16> %59, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
%61 = or <8 x i16> %60, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
%62 = or <8 x i16> %50, <i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128, i16 -128>
%63 = shl <8 x i16> %50, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
%64 = ashr exact <8 x i16> %63, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
%65 = and <8 x i16> %64, <i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2, i16 -2>
%66 = and <8 x i16> %50, <i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127, i16 127>
%67 = xor <8 x i1> %58, <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
%68 = select <8 x i1> %67, <8 x i1> %26, <8 x i1> zeroinitializer
%69 = select <8 x i1> %58, <8 x i1> %27, <8 x i1> zeroinitializer
%70 = select <8 x i1> %58, <8 x i1> %26, <8 x i1> zeroinitializer
%71 = select <8 x i1> %68, <8 x i16> %62, <8 x i16> %61
%72 = select <8 x i1> %69, <8 x i16> %65, <8 x i16> %71
%73 = select <8 x i1> %70, <8 x i16> %66, <8 x i16> %72
%74 = bitcast i16* %48 to <8 x i16>*
store <8 x i16> %73, <8 x i16>* %74
%75 = add nuw i64 %44, 8
%76 = icmp eq i64 %75, %23
br i1 %76, label %77, label %43
77: ; preds = %43
br i1 %28, label %111, label %78
78: ; preds = %31, %77
%79 = phi i64 [ 0, %31 ], [ %23, %77 ]
%80 = phi i64 [ %14, %31 ], [ %24, %77 ]
br label %81
81: ; preds = %78, %107
%82 = phi i64 [ %109, %107 ], [ %79, %78 ]
%83 = phi i64 [ %84, %107 ], [ %80, %78 ]
%84 = add nsw i64 %83, -1
%85 = add nsw i64 %82, %15
%86 = getelementptr inbounds i16, i16* %37, i64 %85
%87 = load i16, i16* %86
%88 = and i64 %84, 4294967295
%89 = getelementptr inbounds [8 x i8], [8 x i8]* @__const.hide_pixels.mask1, i64 0, i64 %88
%90 = load i8, i8* %89
%91 = and i8 %90, %38
%92 = icmp eq i8 %91, 0
br i1 %92, label %100, label %93
93: ; preds = %81
br i1 %13, label %98, label %94
94: ; preds = %93
%95 = shl i16 %87, 8
%96 = ashr exact i16 %95, 8
%97 = or i16 %96, 1
br label %107
98: ; preds = %93
%99 = or i16 %87, -128
br label %107
100: ; preds = %81
br i1 %13, label %105, label %101
101: ; preds = %100
%102 = shl i16 %87, 8
%103 = ashr exact i16 %102, 8
%104 = and i16 %103, -2
br label %107
105: ; preds = %100
%106 = and i16 %87, 127
br label %107
107: ; preds = %101, %105, %94, %98
%108 = phi i16 [ %97, %94 ], [ %99, %98 ], [ %104, %101 ], [ %106, %105 ]
store i16 %108, i16* %86
%109 = add nuw nsw i64 %82, 1
%110 = icmp eq i64 %109, %14
br i1 %110, label %111, label %81
111: ; preds = %107, %77, %29
%112 = add nuw nsw i64 %30, 1
%113 = icmp eq i64 %112, %6
br i1 %113, label %114, label %29
114: ; preds = %111, %7
ret i32 1
}