void yuyv_to_bgra(int width, int height, const unsigned char *src,
                  unsigned char *dst) {
  const unsigned char *s;
  int l, c;
  int r, g, b, cr, cg, cb, y1, y2;
  l = height;
  s = src;
  while (l--) {
    c = width >> 1;
    while (c--) {
      y1 = *s++;
      cb = ((*s - 128) * 454) >> 8;
      cg = (*s++ - 128) * 88;
      y2 = *s++;
      cr = ((*s - 128) * 359) >> 8;
      cg = (cg + (*s++ - 128) * 183) >> 8;
      r = y1 + cr;
      b = y1 + cb;
      g = y1 - cg;
      if (r < 0)
        r = 0;
      if (r > 255)
        r = 255;
      if (g < 0)
        g = 0;
      if (g > 255)
        g = 255;
      if (b < 0)
        b = 0;
      if (b > 255)
        b = 255;
      *dst++ = b;
      *dst++ = g;
      *dst++ = r;
      *dst++ = 0;
      r = y2 + cr;
      b = y2 + cb;
      g = y2 - cg;
      if (r < 0)
        r = 0;
      if (r > 255)
        r = 255;
      if (g < 0)
        g = 0;
      if (g > 255)
        g = 255;
      if (b < 0)
        b = 0;
      if (b > 255)
        b = 255;
      *dst++ = b;
      *dst++ = g;
      *dst++ = r;
      *dst++ = 0;
    }
  }
}


x86 assembly (clang, -O0):
<yuyv_to_bgra>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x24(%rbp)
cmp    $0x0,%eax
je     13b7 <yuyv_to_bgra+0x2b7>
mov    -0x4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x28(%rbp)
cmp    $0x0,%eax
je     13b2 <yuyv_to_bgra+0x2b2>
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x44(%rbp)
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
sub    $0x80,%eax
imul   $0x1c6,%eax,%eax
sar    $0x8,%eax
mov    %eax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
movzbl (%rax),%eax
sub    $0x80,%eax
imul   $0x58,%eax,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x20(%rbp)
movzbl (%rax),%eax
mov    %eax,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movzbl (%rax),%eax
sub    $0x80,%eax
imul   $0x167,%eax,%eax
sar    $0x8,%eax
mov    %eax,-0x38(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x20(%rbp),%rcx
mov    %rcx,%rdx
add    $0x1,%rdx
mov    %rdx,-0x20(%rbp)
movzbl (%rcx),%ecx
sub    $0x80,%ecx
imul   $0xb7,%ecx,%ecx
add    %ecx,%eax
sar    $0x8,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x44(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x44(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x44(%rbp),%eax
sub    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jge    121d <yuyv_to_bgra+0x11d>
movl   $0x0,-0x2c(%rbp)
cmpl   $0xff,-0x2c(%rbp)
jle    1231 <yuyv_to_bgra+0x131>
movl   $0xff,-0x2c(%rbp)
cmpl   $0x0,-0x30(%rbp)
jge    1242 <yuyv_to_bgra+0x142>
movl   $0x0,-0x30(%rbp)
cmpl   $0xff,-0x30(%rbp)
jle    1256 <yuyv_to_bgra+0x156>
movl   $0xff,-0x30(%rbp)
cmpl   $0x0,-0x34(%rbp)
jge    1267 <yuyv_to_bgra+0x167>
movl   $0x0,-0x34(%rbp)
cmpl   $0xff,-0x34(%rbp)
jle    127b <yuyv_to_bgra+0x17b>
movl   $0xff,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x0,(%rax)
mov    -0x48(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x48(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jge    12fb <yuyv_to_bgra+0x1fb>
movl   $0x0,-0x2c(%rbp)
cmpl   $0xff,-0x2c(%rbp)
jle    130f <yuyv_to_bgra+0x20f>
movl   $0xff,-0x2c(%rbp)
cmpl   $0x0,-0x30(%rbp)
jge    1320 <yuyv_to_bgra+0x220>
movl   $0x0,-0x30(%rbp)
cmpl   $0xff,-0x30(%rbp)
jle    1334 <yuyv_to_bgra+0x234>
movl   $0xff,-0x30(%rbp)
cmpl   $0x0,-0x34(%rbp)
jge    1345 <yuyv_to_bgra+0x245>
movl   $0x0,-0x34(%rbp)
cmpl   $0xff,-0x34(%rbp)
jle    1359 <yuyv_to_bgra+0x259>
movl   $0xff,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x30(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x2c(%rbp),%eax
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x18(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movb   $0x0,(%rax)
jmp    113d <yuyv_to_bgra+0x3d>
jmp    1120 <yuyv_to_bgra+0x20>
pop    %rbp
ret

x86 assembly (clang, -O2):
<yuyv_to_bgra>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
test   %esi,%esi
je     1278 <yuyv_to_bgra+0x178>
mov    %edi,%r8d
sar    %r8d
jmp    112b <yuyv_to_bgra+0x2b>
nopl   0x0(%rax,%rax,1)
mov    %rbx,%rcx
test   %esi,%esi
je     1278 <yuyv_to_bgra+0x178>
add    $0xffffffff,%esi
cmp    $0x2,%edi
jb     1123 <yuyv_to_bgra+0x23>
mov    %r8d,%r9d
jmp    116f <yuyv_to_bgra+0x6f>
nopl   0x0(%rax,%rax,1)
add    $0x4,%rdx
lea    0x8(%rcx),%rbx
mov    %r14b,(%rcx)
mov    %r10b,0x1(%rcx)
mov    %r11b,0x2(%rcx)
movb   $0x0,0x3(%rcx)
mov    %r15b,0x4(%rcx)
mov    %bpl,0x5(%rcx)
mov    %al,0x6(%rcx)
movb   $0x0,0x7(%rcx)
mov    %rbx,%rcx
add    $0xffffffff,%r9d
je     1120 <yuyv_to_bgra+0x20>
movzbl (%rdx),%r10d
movzbl 0x1(%rdx),%eax
add    $0xffffff80,%eax
imul   $0x1c6,%eax,%r12d
sar    $0x8,%r12d
imul   $0x58,%eax,%ebp
movzbl 0x3(%rdx),%ebx
add    $0xffffff80,%ebx
imul   $0x167,%ebx,%eax
sar    $0x8,%eax
imul   $0xb7,%ebx,%ebx
add    %ebp,%ebx
sar    $0x8,%ebx
lea    (%rax,%r10,1),%r11d
lea    (%r12,%r10,1),%r14d
sub    %ebx,%r10d
xor    %r15d,%r15d
test   %r11d,%r11d
cmovs  %r15d,%r11d
test   %r10d,%r10d
jns    11c0 <yuyv_to_bgra+0xc0>
xor    %r10d,%r10d
test   %r14d,%r14d
cmovs  %r15d,%r14d
cmp    $0xff,%r14d
jae    1230 <yuyv_to_bgra+0x130>
cmp    $0xff,%r10d
jae    123f <yuyv_to_bgra+0x13f>
cmp    $0xff,%r11d
jb     11e8 <yuyv_to_bgra+0xe8>
mov    $0xff,%r11d
movzbl 0x2(%rdx),%ebp
add    %ebp,%eax
add    %ebp,%r12d
sub    %ebx,%ebp
test   %eax,%eax
cmovs  %r15d,%eax
test   %ebp,%ebp
jns    11ff <yuyv_to_bgra+0xff>
xor    %ebp,%ebp
test   %r12d,%r12d
cmovns %r12d,%r15d
cmp    $0xff,%r15d
jae    1250 <yuyv_to_bgra+0x150>
cmp    $0xff,%ebp
jae    125e <yuyv_to_bgra+0x15e>
cmp    $0xff,%eax
jb     1140 <yuyv_to_bgra+0x40>
jmp    126e <yuyv_to_bgra+0x16e>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    $0xff,%r14d
cmp    $0xff,%r10d
jb     11d9 <yuyv_to_bgra+0xd9>
mov    $0xff,%r10d
cmp    $0xff,%r11d
jae    11e2 <yuyv_to_bgra+0xe2>
jmp    11e8 <yuyv_to_bgra+0xe8>
mov    $0xff,%r15d
cmp    $0xff,%ebp
jb     1217 <yuyv_to_bgra+0x117>
mov    $0xff,%ebp
cmp    $0xff,%eax
jb     1140 <yuyv_to_bgra+0x40>
mov    $0xff,%eax
jmp    1140 <yuyv_to_bgra+0x40>
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @yuyv_to_bgra(i32 %0, i32 %1, i8* nocapture %2, i8* nocapture writeonly %3) {
%5 = icmp eq i32 %1, 0
br i1 %5, label %90, label %6
6: ; preds = %4
%7 = ashr i32 %0, 1
%8 = icmp ult i32 %0, 2
br label %13
9: ; preds = %18, %13
%10 = phi i8* [ %16, %13 ], [ %41, %18 ]
%11 = phi i8* [ %15, %13 ], [ %88, %18 ]
%12 = icmp eq i32 %17, 0
br i1 %12, label %90, label %13
13: ; preds = %6, %9
%14 = phi i32 [ %1, %6 ], [ %17, %9 ]
%15 = phi i8* [ %3, %6 ], [ %11, %9 ]
%16 = phi i8* [ %2, %6 ], [ %10, %9 ]
%17 = add nsw i32 %14, -1
br i1 %8, label %9, label %18
18: ; preds = %13, %18
%19 = phi i8* [ %88, %18 ], [ %15, %13 ]
%20 = phi i8* [ %41, %18 ], [ %16, %13 ]
%21 = phi i32 [ %22, %18 ], [ %7, %13 ]
%22 = add nsw i32 %21, -1
%23 = getelementptr inbounds i8, i8* %20, i64 1
%24 = load i8, i8* %20
%25 = zext i8 %24 to i32
%26 = load i8, i8* %23
%27 = zext i8 %26 to i32
%28 = add nsw i32 %27, -128
%29 = mul nsw i32 %28, 454
%30 = ashr i32 %29, 8
%31 = getelementptr inbounds i8, i8* %20, i64 2
%32 = mul nsw i32 %28, 88
%33 = getelementptr inbounds i8, i8* %20, i64 3
%34 = load i8, i8* %31
%35 = zext i8 %34 to i32
%36 = load i8, i8* %33
%37 = zext i8 %36 to i32
%38 = add nsw i32 %37, -128
%39 = mul nsw i32 %38, 359
%40 = ashr i32 %39, 8
%41 = getelementptr inbounds i8, i8* %20, i64 4
%42 = mul nsw i32 %38, 183
%43 = add nsw i32 %42, %32
%44 = ashr i32 %43, 8
%45 = add nsw i32 %40, %25
%46 = add nsw i32 %30, %25
%47 = sub nsw i32 %25, %44
%48 = icmp sgt i32 %45, 0
%49 = select i1 %48, i32 %45, i32 0
%50 = icmp ult i32 %49, 255
%51 = select i1 %50, i32 %49, i32 255
%52 = icmp sgt i32 %47, 0
%53 = select i1 %52, i32 %47, i32 0
%54 = icmp ult i32 %53, 255
%55 = select i1 %54, i32 %53, i32 255
%56 = icmp sgt i32 %46, 0
%57 = select i1 %56, i32 %46, i32 0
%58 = icmp ult i32 %57, 255
%59 = select i1 %58, i32 %57, i32 255
%60 = trunc i32 %59 to i8
%61 = getelementptr inbounds i8, i8* %19, i64 1
store i8 %60, i8* %19
%62 = trunc i32 %55 to i8
%63 = getelementptr inbounds i8, i8* %19, i64 2
store i8 %62, i8* %61
%64 = trunc i32 %51 to i8
%65 = getelementptr inbounds i8, i8* %19, i64 3
store i8 %64, i8* %63
%66 = getelementptr inbounds i8, i8* %19, i64 4
store i8 0, i8* %65
%67 = add nsw i32 %40, %35
%68 = add nsw i32 %30, %35
%69 = sub nsw i32 %35, %44
%70 = icmp sgt i32 %67, 0
%71 = select i1 %70, i32 %67, i32 0
%72 = icmp ult i32 %71, 255
%73 = select i1 %72, i32 %71, i32 255
%74 = icmp sgt i32 %69, 0
%75 = select i1 %74, i32 %69, i32 0
%76 = icmp ult i32 %75, 255
%77 = select i1 %76, i32 %75, i32 255
%78 = icmp sgt i32 %68, 0
%79 = select i1 %78, i32 %68, i32 0
%80 = icmp ult i32 %79, 255
%81 = select i1 %80, i32 %79, i32 255
%82 = trunc i32 %81 to i8
%83 = getelementptr inbounds i8, i8* %19, i64 5
store i8 %82, i8* %66
%84 = trunc i32 %77 to i8
%85 = getelementptr inbounds i8, i8* %19, i64 6
store i8 %84, i8* %83
%86 = trunc i32 %73 to i8
%87 = getelementptr inbounds i8, i8* %19, i64 7
store i8 %86, i8* %85
%88 = getelementptr inbounds i8, i8* %19, i64 8
store i8 0, i8* %87
%89 = icmp eq i32 %22, 0
br i1 %89, label %9, label %18
90: ; preds = %9, %4
ret void
}