unsigned char *image_rgb24_from_rgb96f(signed int xres, signed int yres,
                                       float *fimg) {
  unsigned char *img;
  signed int x;
  signed int y;
  signed int R;
  signed int G;
  signed int B;
  void *return_value_malloc$1;
  return_value_malloc$1 = malloc((unsigned long int)(xres * yres * 3));
  img = (unsigned char *)return_value_malloc$1;
  y = 0;
  while (!(y >= yres)) {
    x = 0;
    while (!(x >= xres)) {
      signed int addr = (xres * y + x) * 3;
      R = (signed int)(fimg[(signed long int)addr] * 255.000000f);
      G = (signed int)(fimg[(signed long int)(addr + 1)] * 255.000000f);
      B = (signed int)(fimg[(signed long int)(addr + 2)] * 255.000000f);
      if (R > 255)
        R = 255;
      if (R < 0)
        R = 0;
      img[(signed long int)addr] = (unsigned char)R;
      if (G > 255)
        G = 255;
      if (G < 0)
        G = 0;
      img[(signed long int)(addr + 1)] = (unsigned char)G;
      if (B > 255)
        B = 255;
      if (B < 0)
        B = 0;
      img[(signed long int)(addr + 2)] = (unsigned char)B;
      x = x + 1;
    }
    y = y + 1;
  }
  return img;
}


x86 assembly (clang, -O0):
<image_rgb24_from_rgb96f>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    -0x4(%rbp),%eax
imul   -0x8(%rbp),%eax
imul   $0x3,%eax,%eax
movslq %eax,%rdi
call   1030 <malloc@plt>
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x18(%rbp)
movl   $0x0,-0x20(%rbp)
mov    -0x20(%rbp),%eax
cmp    -0x8(%rbp),%eax
setge  %al
xor    $0xff,%al
test   $0x1,%al
jne    115f <image_rgb24_from_rgb96f+0x4f>
jmp    12b1 <image_rgb24_from_rgb96f+0x1a1>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x4(%rbp),%eax
setge  %al
xor    $0xff,%al
test   $0x1,%al
jne    117e <image_rgb24_from_rgb96f+0x6e>
jmp    12a3 <image_rgb24_from_rgb96f+0x193>
mov    -0x4(%rbp),%eax
imul   -0x20(%rbp),%eax
add    -0x1c(%rbp),%eax
imul   $0x3,%eax,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movss  0xe62(%rip),%xmm0
mulss  (%rax,%rcx,4),%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movss  0xe41(%rip),%xmm0
mulss  (%rax,%rcx,4),%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movss  0xe20(%rip),%xmm0
mulss  (%rax,%rcx,4),%xmm0
cvttss2si %xmm0,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0xff,-0x24(%rbp)
jle    1200 <image_rgb24_from_rgb96f+0xf0>
movl   $0xff,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
jge    1211 <image_rgb24_from_rgb96f+0x101>
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
cmpl   $0xff,-0x28(%rbp)
jle    1235 <image_rgb24_from_rgb96f+0x125>
movl   $0xff,-0x28(%rbp)
cmpl   $0x0,-0x28(%rbp)
jge    1246 <image_rgb24_from_rgb96f+0x136>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
cmpl   $0xff,-0x2c(%rbp)
jle    126f <image_rgb24_from_rgb96f+0x15f>
movl   $0xff,-0x2c(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jge    1280 <image_rgb24_from_rgb96f+0x170>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
mov    -0x3c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1166 <image_rgb24_from_rgb96f+0x56>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1147 <image_rgb24_from_rgb96f+0x37>
mov    -0x18(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<image_rgb24_from_rgb96f>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdx,%rbx
mov    %esi,%r14d
mov    %edi,%r15d
mov    %edi,%eax
imul   %esi,%eax
lea    (%rax,%rax,2),%eax
movslq %eax,%rdi
call   1030 <malloc@plt>
mov    %rax,(%rsp)
test   %r14d,%r14d
jle    13cf <image_rgb24_from_rgb96f+0x2bf>
movslq %r15d,%rcx
mov    %r14d,%r10d
mov    %ecx,%r9d
mov    %r9d,%eax
and    $0xfffffffc,%eax
lea    (%rcx,%rcx,2),%r11
shl    $0x2,%rcx
lea    (%rcx,%rcx,2),%r14
lea    (%rax,%rax,2),%r13
xor    %r12d,%r12d
movss  0xee4(%rip),%xmm8
movaps 0xebc(%rip),%xmm9
movdqa 0xec3(%rip),%xmm10
movaps 0xe7b(%rip),%xmm12
movdqa 0xe83(%rip),%xmm4
pxor   %xmm5,%xmm5
movdqa 0xe86(%rip),%xmm11
mov    (%rsp),%rdi
jmp    11b3 <image_rgb24_from_rgb96f+0xa3>
add    $0x1,%r12
add    %r11,%rdi
add    %r14,%rbx
cmp    %r10,%r12
je     13cf <image_rgb24_from_rgb96f+0x2bf>
test   %r15d,%r15d
jle    11a0 <image_rgb24_from_rgb96f+0x90>
cmp    $0x4,%r15d
jae    11d0 <image_rgb24_from_rgb96f+0xc0>
xor    %ecx,%ecx
jmp    1319 <image_rgb24_from_rgb96f+0x209>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups (%rbx,%rsi,4),%xmm3
movups 0x10(%rbx,%rsi,4),%xmm0
movups 0x20(%rbx,%rsi,4),%xmm6
movaps %xmm6,%xmm1
shufps $0xe5,%xmm0,%xmm1
movaps %xmm6,%xmm2
shufps $0xf6,%xmm0,%xmm2
movaps %xmm3,%xmm7
shufps $0x1,%xmm0,%xmm7
shufps $0x21,%xmm3,%xmm0
shufps $0x2c,%xmm1,%xmm3
shufps $0x28,%xmm2,%xmm7
shufps $0xc2,%xmm6,%xmm0
mulps  %xmm12,%xmm3
cvttps2dq %xmm3,%xmm1
mulps  %xmm12,%xmm7
cvttps2dq %xmm7,%xmm2
mulps  %xmm12,%xmm0
cvttps2dq %xmm0,%xmm0
movdqa %xmm4,%xmm7
pcmpgtd %xmm1,%xmm7
pand   %xmm7,%xmm1
pandn  %xmm4,%xmm7
por    %xmm1,%xmm7
movdqa %xmm7,%xmm1
pcmpgtd %xmm5,%xmm1
movdqa %xmm4,%xmm3
pcmpgtd %xmm2,%xmm3
pand   %xmm3,%xmm2
pandn  %xmm4,%xmm3
por    %xmm2,%xmm3
movdqa %xmm3,%xmm2
pcmpgtd %xmm5,%xmm2
movdqa %xmm4,%xmm6
pcmpgtd %xmm0,%xmm6
pand   %xmm6,%xmm0
pandn  %xmm4,%xmm6
por    %xmm0,%xmm6
movdqa %xmm6,%xmm0
pcmpgtd %xmm5,%xmm0
pand   %xmm6,%xmm0
pand   %xmm4,%xmm3
pand   %xmm2,%xmm3
pand   %xmm4,%xmm7
pand   %xmm1,%xmm7
packuswb %xmm3,%xmm7
packuswb %xmm7,%xmm7
punpcklbw %xmm5,%xmm7
pshufd $0xe7,%xmm7,%xmm1
pshuflw $0xdc,%xmm1,%xmm1
pshufhw $0xc6,%xmm7,%xmm2
pshufd $0x6c,%xmm2,%xmm2
pshuflw $0x68,%xmm2,%xmm2
pshufhw $0x25,%xmm2,%xmm2
packuswb %xmm1,%xmm2
pand   %xmm11,%xmm2
pshuflw $0xe8,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0xe0,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
movdqa %xmm11,%xmm1
pandn  %xmm0,%xmm1
por    %xmm2,%xmm1
movq   %xmm1,(%rdi,%rsi,1)
pshufd $0xee,%xmm1,%xmm0
movd   %xmm0,0x8(%rdi,%rsi,1)
add    $0xc,%rsi
cmp    %rsi,%r13
jne    11e0 <image_rgb24_from_rgb96f+0xd0>
mov    %rax,%rcx
cmp    %r9,%rax
je     11a0 <image_rgb24_from_rgb96f+0x90>
lea    (%rcx,%rcx,2),%rsi
mov    %r9,%rbp
sub    %rcx,%rbp
jmp    1342 <image_rgb24_from_rgb96f+0x232>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %cl,0x2(%rdi,%rsi,1)
add    $0x3,%rsi
add    $0xffffffffffffffff,%rbp
je     11a0 <image_rgb24_from_rgb96f+0x90>
movss  (%rbx,%rsi,4),%xmm0
mulss  %xmm8,%xmm0
cvttss2si %xmm0,%edx
movsd  0x4(%rbx,%rsi,4),%xmm7
mulps  %xmm9,%xmm7
mov    $0xff,%ecx
cmp    $0xff,%edx
jl     136c <image_rgb24_from_rgb96f+0x25c>
mov    $0xff,%edx
test   %edx,%edx
jg     1372 <image_rgb24_from_rgb96f+0x262>
xor    %edx,%edx
cvttps2dq %xmm7,%xmm7
mov    %dl,(%rdi,%rsi,1)
movdqa %xmm10,%xmm0
pcmpgtd %xmm7,%xmm0
pshufd $0x50,%xmm0,%xmm0
movmskpd %xmm0,%edx
test   $0x1,%dl
jne    13a0 <image_rgb24_from_rgb96f+0x290>
mov    $0xff,%r8d
test   %r8d,%r8d
jle    13aa <image_rgb24_from_rgb96f+0x29a>
jmp    13ad <image_rgb24_from_rgb96f+0x29d>
nopl   (%rax)
movd   %xmm7,%r8d
test   %r8d,%r8d
jg     13ad <image_rgb24_from_rgb96f+0x29d>
xor    %r8d,%r8d
mov    %r8b,0x1(%rdi,%rsi,1)
test   $0x2,%dl
je     13c0 <image_rgb24_from_rgb96f+0x2b0>
pshufd $0x55,%xmm7,%xmm0
movd   %xmm0,%ecx
test   %ecx,%ecx
jg     1330 <image_rgb24_from_rgb96f+0x220>
xor    %ecx,%ecx
jmp    1330 <image_rgb24_from_rgb96f+0x220>
mov    (%rsp),%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i8* @image_rgb24_from_rgb96f(i32 %0, i32 %1, float* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca float*
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i8*
%14 = alloca i32
store i32 %0, i32* %4
store i32 %1, i32* %5
store float* %2, float** %6
%15 = load i32, i32* %4
%16 = load i32, i32* %5
%17 = mul nsw i32 %15, %16
%18 = mul nsw i32 %17, 3
%19 = sext i32 %18 to i64
%20 = call i8* @malloc(i64 %19)
store i8* %20, i8** %13
%21 = load i8*, i8** %13
store i8* %21, i8** %7
store i32 0, i32* %9
br label %22
22: ; preds = %109, %3
%23 = load i32, i32* %9
%24 = load i32, i32* %5
%25 = icmp sge i32 %23, %24
%26 = xor i1 %25, true
br i1 %26, label %27, label %112
27: ; preds = %22
store i32 0, i32* %8
br label %28
28: ; preds = %99, %27
%29 = load i32, i32* %8
%30 = load i32, i32* %4
%31 = icmp sge i32 %29, %30
%32 = xor i1 %31, true
br i1 %32, label %33, label %109
33: ; preds = %28
%34 = load i32, i32* %4
%35 = load i32, i32* %9
%36 = mul nsw i32 %34, %35
%37 = load i32, i32* %8
%38 = add nsw i32 %36, %37
%39 = mul nsw i32 %38, 3
store i32 %39, i32* %14
%40 = load float*, float** %6
%41 = load i32, i32* %14
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds float, float* %40, i64 %42
%44 = load float, float* %43
%45 = fmul float %44, 2.550000e+02
%46 = fptosi float %45 to i32
store i32 %46, i32* %10
%47 = load float*, float** %6
%48 = load i32, i32* %14
%49 = add nsw i32 %48, 1
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds float, float* %47, i64 %50
%52 = load float, float* %51
%53 = fmul float %52, 2.550000e+02
%54 = fptosi float %53 to i32
store i32 %54, i32* %11
%55 = load float*, float** %6
%56 = load i32, i32* %14
%57 = add nsw i32 %56, 2
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds float, float* %55, i64 %58
%60 = load float, float* %59
%61 = fmul float %60, 2.550000e+02
%62 = fptosi float %61 to i32
store i32 %62, i32* %12
%63 = load i32, i32* %10
%64 = icmp sgt i32 %63, 255
br i1 %64, label %65, label %66
65: ; preds = %33
store i32 255, i32* %10
br label %66
66: ; preds = %65, %33
%67 = load i32, i32* %10
%68 = icmp slt i32 %67, 0
br i1 %68, label %69, label %70
69: ; preds = %66
store i32 0, i32* %10
br label %70
70: ; preds = %69, %66
%71 = load i32, i32* %10
%72 = trunc i32 %71 to i8
%73 = load i8*, i8** %7
%74 = load i32, i32* %14
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds i8, i8* %73, i64 %75
store i8 %72, i8* %76
%77 = load i32, i32* %11
%78 = icmp sgt i32 %77, 255
br i1 %78, label %79, label %80
79: ; preds = %70
store i32 255, i32* %11
br label %80
80: ; preds = %79, %70
%81 = load i32, i32* %11
%82 = icmp slt i32 %81, 0
br i1 %82, label %83, label %84
83: ; preds = %80
store i32 0, i32* %11
br label %84
84: ; preds = %83, %80
%85 = load i32, i32* %11
%86 = trunc i32 %85 to i8
%87 = load i8*, i8** %7
%88 = load i32, i32* %14
%89 = add nsw i32 %88, 1
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds i8, i8* %87, i64 %90
store i8 %86, i8* %91
%92 = load i32, i32* %12
%93 = icmp sgt i32 %92, 255
br i1 %93, label %94, label %95
94: ; preds = %84
store i32 255, i32* %12
br label %95
95: ; preds = %94, %84
%96 = load i32, i32* %12
%97 = icmp slt i32 %96, 0
br i1 %97, label %98, label %99
98: ; preds = %95
store i32 0, i32* %12
br label %99
99: ; preds = %98, %95
%100 = load i32, i32* %12
%101 = trunc i32 %100 to i8
%102 = load i8*, i8** %7
%103 = load i32, i32* %14
%104 = add nsw i32 %103, 2
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds i8, i8* %102, i64 %105
store i8 %101, i8* %106
%107 = load i32, i32* %8
%108 = add nsw i32 %107, 1
store i32 %108, i32* %8
br label %28
109: ; preds = %28
%110 = load i32, i32* %9
%111 = add nsw i32 %110, 1
store i32 %111, i32* %9
br label %22
112: ; preds = %22
%113 = load i8*, i8** %7
ret i8* %113
}

LLVM IR (-O2):
define noalias i8* @image_rgb24_from_rgb96f(i32 %0, i32 %1, float* nocapture %2) {
%4 = mul i32 %0, 3
%5 = mul i32 %4, %1
%6 = sext i32 %5 to i64
%7 = tail call i8* @malloc(i64 %6)
%8 = icmp sgt i32 %1, 0
br i1 %8, label %9, label %103
9: ; preds = %3
%10 = icmp sgt i32 %0, 0
%11 = sext i32 %0 to i64
%12 = zext i32 %1 to i64
%13 = zext i32 %0 to i64
%14 = icmp ult i32 %0, 4
%15 = and i64 %13, 4294967292
%16 = icmp eq i64 %15, %13
br label %17
17: ; preds = %9, %100
%18 = phi i64 [ 0, %9 ], [ %101, %100 ]
br i1 %10, label %19, label %100
19: ; preds = %17
%20 = mul nsw i64 %18, %11
br i1 %14, label %60, label %21
21: ; preds = %19, %21
%22 = phi i64 [ %57, %21 ], [ 0, %19 ]
%23 = add nsw i64 %22, %20
%24 = mul nsw i64 %23, 3
%25 = getelementptr inbounds float, float* %2, i64 %24
%26 = bitcast float* %25 to <12 x float>*
%27 = load <12 x float>, <12 x float>* %26
%28 = shufflevector <12 x float> %27, <12 x float> poison, <4 x i32> <i32 0, i32 3, i32 6, i32 9>
%29 = shufflevector <12 x float> %27, <12 x float> poison, <4 x i32> <i32 1, i32 4, i32 7, i32 10>
%30 = shufflevector <12 x float> %27, <12 x float> poison, <4 x i32> <i32 2, i32 5, i32 8, i32 11>
%31 = fmul <4 x float> %28, <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>
%32 = fptosi <4 x float> %31 to <4 x i32>
%33 = fmul <4 x float> %29, <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>
%34 = fptosi <4 x float> %33 to <4 x i32>
%35 = fmul <4 x float> %30, <float 2.550000e+02, float 2.550000e+02, float 2.550000e+02, float 2.550000e+02>
%36 = fptosi <4 x float> %35 to <4 x i32>
%37 = icmp slt <4 x i32> %32, <i32 255, i32 255, i32 255, i32 255>
%38 = select <4 x i1> %37, <4 x i32> %32, <4 x i32> <i32 255, i32 255, i32 255, i32 255>
%39 = icmp sgt <4 x i32> %38, zeroinitializer
%40 = select <4 x i1> %39, <4 x i32> %38, <4 x i32> zeroinitializer
%41 = trunc <4 x i32> %40 to <4 x i8>
%42 = icmp slt <4 x i32> %34, <i32 255, i32 255, i32 255, i32 255>
%43 = select <4 x i1> %42, <4 x i32> %34, <4 x i32> <i32 255, i32 255, i32 255, i32 255>
%44 = icmp sgt <4 x i32> %43, zeroinitializer
%45 = select <4 x i1> %44, <4 x i32> %43, <4 x i32> zeroinitializer
%46 = trunc <4 x i32> %45 to <4 x i8>
%47 = icmp slt <4 x i32> %36, <i32 255, i32 255, i32 255, i32 255>
%48 = select <4 x i1> %47, <4 x i32> %36, <4 x i32> <i32 255, i32 255, i32 255, i32 255>
%49 = icmp sgt <4 x i32> %48, zeroinitializer
%50 = select <4 x i1> %49, <4 x i32> %48, <4 x i32> zeroinitializer
%51 = trunc <4 x i32> %50 to <4 x i8>
%52 = getelementptr inbounds i8, i8* %7, i64 %24
%53 = bitcast i8* %52 to <12 x i8>*
%54 = shufflevector <4 x i8> %41, <4 x i8> %46, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%55 = shufflevector <4 x i8> %51, <4 x i8> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
%56 = shufflevector <8 x i8> %54, <8 x i8> %55, <12 x i32> <i32 0, i32 4, i32 8, i32 1, i32 5, i32 9, i32 2, i32 6, i32 10, i32 3, i32 7, i32 11>
store <12 x i8> %56, <12 x i8>* %53
%57 = add nuw i64 %22, 4
%58 = icmp eq i64 %57, %15
br i1 %58, label %59, label %21
59: ; preds = %21
br i1 %16, label %100, label %60
60: ; preds = %19, %59
%61 = phi i64 [ 0, %19 ], [ %15, %59 ]
br label %62
62: ; preds = %60, %62
%63 = phi i64 [ %98, %62 ], [ %61, %60 ]
%64 = add nsw i64 %63, %20
%65 = mul nsw i64 %64, 3
%66 = getelementptr inbounds float, float* %2, i64 %65
%67 = load float, float* %66
%68 = fmul float %67, 2.550000e+02
%69 = fptosi float %68 to i32
%70 = add nsw i64 %65, 1
%71 = getelementptr inbounds float, float* %2, i64 %70
%72 = add nsw i64 %65, 2
%73 = bitcast float* %71 to <2 x float>*
%74 = load <2 x float>, <2 x float>* %73
%75 = fmul <2 x float> %74, <float 2.550000e+02, float 2.550000e+02>
%76 = fptosi <2 x float> %75 to <2 x i32>
%77 = icmp slt i32 %69, 255
%78 = select i1 %77, i32 %69, i32 255
%79 = icmp sgt i32 %78, 0
%80 = select i1 %79, i32 %78, i32 0
%81 = trunc i32 %80 to i8
%82 = getelementptr inbounds i8, i8* %7, i64 %65
store i8 %81, i8* %82
%83 = icmp slt <2 x i32> %76, <i32 255, i32 255>
%84 = extractelement <2 x i1> %83, i64 0
%85 = extractelement <2 x i32> %76, i64 0
%86 = select i1 %84, i32 %85, i32 255
%87 = icmp sgt i32 %86, 0
%88 = select i1 %87, i32 %86, i32 0
%89 = trunc i32 %88 to i8
%90 = getelementptr inbounds i8, i8* %7, i64 %70
store i8 %89, i8* %90
%91 = extractelement <2 x i1> %83, i64 1
%92 = extractelement <2 x i32> %76, i64 1
%93 = select i1 %91, i32 %92, i32 255
%94 = icmp sgt i32 %93, 0
%95 = select i1 %94, i32 %93, i32 0
%96 = trunc i32 %95 to i8
%97 = getelementptr inbounds i8, i8* %7, i64 %72
store i8 %96, i8* %97
%98 = add nuw nsw i64 %63, 1
%99 = icmp eq i64 %98, %13
br i1 %99, label %100, label %62
100: ; preds = %62, %59, %17
%101 = add nuw nsw i64 %18, 1
%102 = icmp eq i64 %101, %12
br i1 %102, label %103, label %17
103: ; preds = %100, %3
ret i8* %7
}