void _left_right_solid_src_dest_mask(unsigned char *source_row_start,
                                     unsigned char *source_row_end,
                                     unsigned char *destination_row_start,
                                     int srcMask, int destMask) {
  unsigned char *source_row_ptr;
  unsigned char *destination_row_ptr = destination_row_start;
  for (source_row_ptr = source_row_start; source_row_ptr < source_row_end;
       source_row_ptr++) {
    *destination_row_ptr =
        (*destination_row_ptr & ~destMask) | (srcMask & *source_row_ptr);
    destination_row_ptr++;
  }
}


x86 assembly (clang, -O0):
<_left_right_solid_src_dest_mask>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x10(%rbp),%rax
jae    1177 <_left_right_solid_src_dest_mask+0x77>
mov    -0x30(%rbp),%rax
movzbl (%rax),%eax
mov    -0x20(%rbp),%ecx
xor    $0xffffffff,%ecx
and    %ecx,%eax
mov    -0x1c(%rbp),%ecx
mov    -0x28(%rbp),%rdx
movzbl (%rdx),%edx
and    %edx,%ecx
or     %ecx,%eax
mov    %al,%cl
mov    -0x30(%rbp),%rax
mov    %cl,(%rax)
mov    -0x30(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1127 <_left_right_solid_src_dest_mask+0x27>
pop    %rbp
ret

x86 assembly (clang, -O2):
<_left_right_solid_src_dest_mask>:
push   %r14
push   %rbx
cmp    %rsi,%rdi
jae    11e6 <_left_right_solid_src_dest_mask+0xe6>
not    %r8d
mov    %rsi,%r9
sub    %rdi,%r9
cmp    $0x8,%r9
jb     1131 <_left_right_solid_src_dest_mask+0x31>
cmp    %rdx,%rsi
jbe    11ea <_left_right_solid_src_dest_mask+0xea>
lea    (%rdx,%r9,1),%rax
cmp    %rdi,%rax
jbe    11ea <_left_right_solid_src_dest_mask+0xea>
mov    %rdx,%rax
mov    %rdi,%r10
mov    %esi,%edi
sub    %r10d,%edi
mov    %r10,%r9
not    %r9
add    %rsi,%r9
and    $0x3,%rdi
je     116e <_left_right_solid_src_dest_mask+0x6e>
nopl   0x0(%rax,%rax,1)
movzbl (%rax),%ebx
and    %r8d,%ebx
movzbl (%r10),%edx
and    %ecx,%edx
or     %ebx,%edx
mov    %dl,(%rax)
add    $0x1,%rax
add    $0x1,%r10
add    $0xffffffffffffffff,%rdi
jne    1150 <_left_right_solid_src_dest_mask+0x50>
cmp    $0x3,%r9
jb     11e6 <_left_right_solid_src_dest_mask+0xe6>
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
movzbl (%rax,%rdx,1),%edi
and    %r8d,%edi
movzbl (%r10,%rdx,1),%ebx
and    %ecx,%ebx
or     %edi,%ebx
mov    %bl,(%rax,%rdx,1)
movzbl 0x1(%rax,%rdx,1),%edi
and    %r8d,%edi
movzbl 0x1(%r10,%rdx,1),%ebx
and    %ecx,%ebx
or     %edi,%ebx
mov    %bl,0x1(%rax,%rdx,1)
movzbl 0x2(%rax,%rdx,1),%edi
and    %r8d,%edi
movzbl 0x2(%r10,%rdx,1),%ebx
and    %ecx,%ebx
or     %edi,%ebx
mov    %bl,0x2(%rax,%rdx,1)
movzbl 0x3(%rax,%rdx,1),%edi
and    %r8d,%edi
movzbl 0x3(%r10,%rdx,1),%ebx
and    %ecx,%ebx
or     %edi,%ebx
mov    %bl,0x3(%rax,%rdx,1)
lea    (%r10,%rdx,1),%rdi
add    $0x4,%rdi
add    $0x4,%rdx
cmp    %rsi,%rdi
jne    1180 <_left_right_solid_src_dest_mask+0x80>
pop    %rbx
pop    %r14
ret
movd   %r8d,%xmm8
movd   %ecx,%xmm9
cmp    $0x10,%r9
jae    1202 <_left_right_solid_src_dest_mask+0x102>
xor    %r11d,%r11d
jmp    1494 <_left_right_solid_src_dest_mask+0x394>
mov    %r9,%r11
and    $0xfffffffffffffff0,%r11
pshufd $0x0,%xmm8,%xmm12
pshufd $0x0,%xmm9,%xmm11
lea    -0x10(%r11),%rax
mov    %rax,%r14
shr    $0x4,%r14
add    $0x1,%r14
test   %rax,%rax
je     1531 <_left_right_solid_src_dest_mask+0x431>
mov    %r14,%rbx
and    $0xfffffffffffffffe,%rbx
xor    %r10d,%r10d
movdqa 0xdc0(%rip),%xmm10
movdqu (%rdx,%r10,1),%xmm7
movdqu 0x10(%rdx,%r10,1),%xmm13
movdqa %xmm7,%xmm6
punpcklbw %xmm6,%xmm6
movdqa %xmm6,%xmm4
punpcklwd %xmm4,%xmm4
punpckhwd %xmm6,%xmm6
punpckhbw %xmm7,%xmm7
movdqa %xmm7,%xmm5
punpcklwd %xmm5,%xmm5
punpckhwd %xmm7,%xmm7
pand   %xmm12,%xmm7
pand   %xmm12,%xmm5
pand   %xmm12,%xmm6
pand   %xmm12,%xmm4
movdqu (%rdi,%r10,1),%xmm1
movdqa %xmm1,%xmm2
punpcklbw %xmm2,%xmm2
movdqa %xmm2,%xmm0
punpcklwd %xmm0,%xmm0
punpckhwd %xmm2,%xmm2
punpckhbw %xmm1,%xmm1
movdqa %xmm1,%xmm3
punpcklwd %xmm3,%xmm3
punpckhwd %xmm1,%xmm1
pand   %xmm11,%xmm1
por    %xmm7,%xmm1
pand   %xmm11,%xmm3
por    %xmm5,%xmm3
pand   %xmm11,%xmm2
por    %xmm6,%xmm2
pand   %xmm11,%xmm0
por    %xmm4,%xmm0
pand   %xmm10,%xmm1
pand   %xmm10,%xmm3
packuswb %xmm1,%xmm3
pand   %xmm10,%xmm2
pand   %xmm10,%xmm0
packuswb %xmm2,%xmm0
packuswb %xmm3,%xmm0
movdqu %xmm0,(%rdx,%r10,1)
movdqa %xmm13,%xmm7
punpcklbw %xmm7,%xmm7
movdqa %xmm7,%xmm6
punpcklwd %xmm6,%xmm6
punpckhwd %xmm7,%xmm7
punpckhbw %xmm13,%xmm13
movdqa %xmm13,%xmm4
punpcklwd %xmm4,%xmm4
punpckhwd %xmm13,%xmm13
pand   %xmm12,%xmm13
pand   %xmm12,%xmm4
pand   %xmm12,%xmm7
pand   %xmm12,%xmm6
movdqu 0x10(%rdi,%r10,1),%xmm2
movdqa %xmm2,%xmm1
punpcklbw %xmm1,%xmm1
movdqa %xmm1,%xmm0
punpcklwd %xmm0,%xmm0
punpckhwd %xmm1,%xmm1
punpckhbw %xmm2,%xmm2
movdqa %xmm2,%xmm3
punpcklwd %xmm3,%xmm3
punpckhwd %xmm2,%xmm2
pand   %xmm11,%xmm2
por    %xmm13,%xmm2
pand   %xmm11,%xmm3
por    %xmm4,%xmm3
pand   %xmm11,%xmm1
por    %xmm7,%xmm1
pand   %xmm11,%xmm0
por    %xmm6,%xmm0
pand   %xmm10,%xmm2
pand   %xmm10,%xmm3
packuswb %xmm2,%xmm3
pand   %xmm10,%xmm1
pand   %xmm10,%xmm0
packuswb %xmm1,%xmm0
packuswb %xmm3,%xmm0
movdqu %xmm0,0x10(%rdx,%r10,1)
add    $0x20,%r10
add    $0xfffffffffffffffe,%rbx
jne    1240 <_left_right_solid_src_dest_mask+0x140>
test   $0x1,%r14b
je     147a <_left_right_solid_src_dest_mask+0x37a>
movdqu (%rdx,%r10,1),%xmm1
movdqa %xmm1,%xmm5
punpcklbw %xmm5,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm4,%xmm4
punpckhwd %xmm5,%xmm5
punpckhbw %xmm1,%xmm1
movdqa %xmm1,%xmm7
punpcklwd %xmm7,%xmm7
punpckhwd %xmm1,%xmm1
pand   %xmm12,%xmm1
pand   %xmm12,%xmm7
pand   %xmm12,%xmm5
pand   %xmm12,%xmm4
movdqu (%rdi,%r10,1),%xmm6
movdqa %xmm6,%xmm0
punpcklbw %xmm0,%xmm0
movdqa %xmm0,%xmm3
punpcklwd %xmm3,%xmm3
punpckhwd %xmm0,%xmm0
punpckhbw %xmm6,%xmm6
movdqa %xmm6,%xmm2
punpcklwd %xmm2,%xmm2
punpckhwd %xmm6,%xmm6
pand   %xmm11,%xmm6
por    %xmm1,%xmm6
pand   %xmm11,%xmm2
por    %xmm7,%xmm2
pand   %xmm11,%xmm0
por    %xmm5,%xmm0
pand   %xmm11,%xmm3
por    %xmm4,%xmm3
movdqa 0xba8(%rip),%xmm1
pand   %xmm1,%xmm6
pand   %xmm1,%xmm2
packuswb %xmm6,%xmm2
pand   %xmm1,%xmm0
pand   %xmm1,%xmm3
packuswb %xmm0,%xmm3
packuswb %xmm2,%xmm3
movdqu %xmm3,(%rdx,%r10,1)
cmp    %r11,%r9
je     11e6 <_left_right_solid_src_dest_mask+0xe6>
test   $0x8,%r9b
jne    1494 <_left_right_solid_src_dest_mask+0x394>
add    %r11,%rdi
add    %r11,%rdx
jmp    1131 <_left_right_solid_src_dest_mask+0x31>
mov    %r9,%rbx
and    $0xfffffffffffffff8,%rbx
lea    (%rdx,%rbx,1),%rax
lea    (%rdi,%rbx,1),%r10
pshufd $0x0,%xmm8,%xmm0
pshufd $0x0,%xmm9,%xmm1
movdqa 0xb49(%rip),%xmm2
nopw   0x0(%rax,%rax,1)
movq   (%rdx,%r11,1),%xmm3
punpcklbw %xmm3,%xmm3
movdqa %xmm3,%xmm4
punpcklwd %xmm4,%xmm4
punpckhwd %xmm3,%xmm3
pand   %xmm0,%xmm3
pand   %xmm0,%xmm4
movq   (%rdi,%r11,1),%xmm5
punpcklbw %xmm5,%xmm5
movdqa %xmm5,%xmm6
punpcklwd %xmm6,%xmm6
punpckhwd %xmm5,%xmm5
pand   %xmm1,%xmm5
por    %xmm3,%xmm5
pand   %xmm1,%xmm6
por    %xmm4,%xmm6
pand   %xmm2,%xmm5
pand   %xmm2,%xmm6
packuswb %xmm5,%xmm6
packuswb %xmm6,%xmm6
movq   %xmm6,(%rdx,%r11,1)
add    $0x8,%r11
cmp    %r11,%rbx
jne    14c0 <_left_right_solid_src_dest_mask+0x3c0>
cmp    %rbx,%r9
jne    1137 <_left_right_solid_src_dest_mask+0x37>
jmp    11e6 <_left_right_solid_src_dest_mask+0xe6>
xor    %r10d,%r10d
test   $0x1,%r14b
jne    13c4 <_left_right_solid_src_dest_mask+0x2c4>
jmp    147a <_left_right_solid_src_dest_mask+0x37a>

LLVM IR (-O0):
define void @_left_right_solid_src_dest_mask(i8* %0, i8* %1, i8* %2, i32 %3, i32 %4) {
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i8*
%12 = alloca i8*
store i8* %0, i8** %6
store i8* %1, i8** %7
store i8* %2, i8** %8
store i32 %3, i32* %9
store i32 %4, i32* %10
%13 = load i8*, i8** %8
store i8* %13, i8** %12
%14 = load i8*, i8** %6
store i8* %14, i8** %11
br label %15
15: ; preds = %36, %5
%16 = load i8*, i8** %11
%17 = load i8*, i8** %7
%18 = icmp ult i8* %16, %17
br i1 %18, label %19, label %39
19: ; preds = %15
%20 = load i8*, i8** %12
%21 = load i8, i8* %20
%22 = zext i8 %21 to i32
%23 = load i32, i32* %10
%24 = xor i32 %23, -1
%25 = and i32 %22, %24
%26 = load i32, i32* %9
%27 = load i8*, i8** %11
%28 = load i8, i8* %27
%29 = zext i8 %28 to i32
%30 = and i32 %26, %29
%31 = or i32 %25, %30
%32 = trunc i32 %31 to i8
%33 = load i8*, i8** %12
store i8 %32, i8* %33
%34 = load i8*, i8** %12
%35 = getelementptr inbounds i8, i8* %34, i32 1
store i8* %35, i8** %12
br label %36
36: ; preds = %19
%37 = load i8*, i8** %11
%38 = getelementptr inbounds i8, i8* %37, i32 1
store i8* %38, i8** %11
br label %15
39: ; preds = %15
ret void
}

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