void vp8_blit_text(const char *msg, unsigned char *address, const int pitch) {
  int letter_bitmap;
  unsigned char *output_pos = address;
  int colpos;
  const int font[] = {
      0x0,       0x5C00,    0x8020,    0xAFABEA,  0xD7EC0,   0x1111111,
      0x1855740, 0x18000,   0x45C0,    0x74400,   0x51140,   0x23880,
      0xC4000,   0x21080,   0x80000,   0x111110,  0xE9D72E,  0x87E40,
      0x12AD732, 0xAAD62A,  0x4F94C4,  0x4D6B7,   0x456AA,   0x3E8423,
      0xAAD6AA,  0xAAD6A2,  0x2800,    0x2A00,    0x8A880,   0x52940,
      0x22A20,   0x15422,   0x6AD62E,  0x1E4A53E, 0xAAD6BF,  0x8C62E,
      0xE8C63F,  0x118D6BF, 0x1094BF,  0xCAC62E,  0x1F2109F, 0x118FE31,
      0xF8C628,  0x8A89F,   0x108421F, 0x1F1105F, 0x1F4105F, 0xE8C62E,
      0x2294BF,  0x164C62E, 0x12694BF, 0x8AD6A2,  0x10FC21,  0x1F8421F,
      0x744107,  0xF8220F,  0x1151151, 0x117041,  0x119D731, 0x47E0,
      0x1041041, 0xFC400,   0x10440,   0x1084210, 0x820};
  colpos = 0;
  while (msg[colpos] != 0) {
    char letter = msg[colpos];
    int fontcol, fontrow;
    if (letter <= 'Z' && letter >= ' ')
      letter_bitmap = font[letter - ' '];
    else if (letter <= 'z' && letter >= 'a')
      letter_bitmap = font[letter - 'a' + 'A' - ' '];
    else
      letter_bitmap = font[0];
    for (fontcol = 6; fontcol >= 0; fontcol--)
      for (fontrow = 0; fontrow < 5; fontrow++)
        output_pos[fontrow * pitch + fontcol] =
            ((letter_bitmap >> (fontcol * 5)) & (1 << fontrow) ? 255 : 0);
    output_pos += 7;
    colpos++;
  }
}


x86 assembly (clang, -O0):
<vp8_blit_text>:
push   %rbp
mov    %rsp,%rbp
sub    $0x140,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x20(%rbp)
lea    -0x130(%rbp),%rdi
lea    0xec4(%rip),%rsi
mov    $0x104,%edx
call   1030 <memcpy@plt>
movl   $0x0,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     12b6 <vp8_blit_text+0x1a6>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x131(%rbp)
movsbl -0x131(%rbp),%eax
cmp    $0x5a,%eax
jg     11ae <vp8_blit_text+0x9e>
movsbl -0x131(%rbp),%eax
cmp    $0x20,%eax
jl     11ae <vp8_blit_text+0x9e>
movsbl -0x131(%rbp),%eax
sub    $0x20,%eax
cltq
mov    -0x130(%rbp,%rax,4),%eax
mov    %eax,-0x18(%rbp)
jmp    11fd <vp8_blit_text+0xed>
movsbl -0x131(%rbp),%eax
cmp    $0x7a,%eax
jg     11ef <vp8_blit_text+0xdf>
movsbl -0x131(%rbp),%eax
cmp    $0x61,%eax
jl     11ef <vp8_blit_text+0xdf>
movsbl -0x131(%rbp),%eax
sub    $0x61,%eax
add    $0x41,%eax
sub    $0x20,%eax
cltq
mov    -0x130(%rbp,%rax,4),%eax
mov    %eax,-0x18(%rbp)
jmp    11f8 <vp8_blit_text+0xe8>
mov    -0x130(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    11fd <vp8_blit_text+0xed>
movl   $0x6,-0x138(%rbp)
cmpl   $0x0,-0x138(%rbp)
jl     129c <vp8_blit_text+0x18c>
movl   $0x0,-0x13c(%rbp)
cmpl   $0x5,-0x13c(%rbp)
jge    1283 <vp8_blit_text+0x173>
mov    -0x18(%rbp),%edx
imul   $0x5,-0x138(%rbp),%ecx
sar    %cl,%edx
mov    -0x13c(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
and    %eax,%edx
xor    %eax,%eax
mov    $0xff,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,%dl
mov    -0x20(%rbp),%rax
mov    -0x13c(%rbp),%ecx
imul   -0x14(%rbp),%ecx
add    -0x138(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x13c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x13c(%rbp)
jmp    121e <vp8_blit_text+0x10e>
jmp    1288 <vp8_blit_text+0x178>
mov    -0x138(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x138(%rbp)
jmp    1207 <vp8_blit_text+0xf7>
mov    -0x20(%rbp),%rax
add    $0x7,%rax
mov    %rax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    114d <vp8_blit_text+0x3d>
add    $0x140,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<vp8_blit_text>:
push   %rbx
mov    (%rdi),%cl
test   %cl,%cl
je     1357 <vp8_blit_text+0x257>
mov    $0xffffffc0,%r8d
movslq %edx,%rax
lea    (%rax,%rax,2),%r10
add    $0x1,%rdi
add    $0x6,%rsi
not    %r10
lea    0x20(%r8),%r9
lea    0xed2(%rip),%r8
jmp    132d <vp8_blit_text+0x22d>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsbq %cl,%rcx
add    %ecx,%edx
mov    (%r8,%rdx,4),%r11d
mov    %r11d,%ecx
shr    $0x1e,%ecx
and    $0x1,%cl
neg    %cl
mov    %cl,(%rsi)
mov    %r11d,%edx
sar    $0x1f,%edx
lea    (%rsi,%rax,1),%rcx
mov    %dl,(%rsi,%rax,1)
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
sar    $0x19,%edx
mov    %edx,%ebx
and    $0x1,%bl
neg    %bl
mov    %bl,-0x1(%rsi)
mov    %edx,%ebx
shl    $0x1e,%ebx
sar    $0x1f,%ebx
mov    %bl,(%r10,%rcx,1)
add    %r10,%rcx
mov    %edx,%ebx
shl    $0x1d,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %edx,%ebx
shl    $0x1c,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
shl    $0x1b,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
sar    $0x14,%edx
mov    %edx,%ebx
and    $0x1,%bl
neg    %bl
mov    %bl,-0x2(%rsi)
mov    %edx,%ebx
shl    $0x1e,%ebx
sar    $0x1f,%ebx
mov    %bl,(%r10,%rcx,1)
add    %r10,%rcx
mov    %edx,%ebx
shl    $0x1d,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %edx,%ebx
shl    $0x1c,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
shl    $0x1b,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
sar    $0xf,%edx
mov    %edx,%ebx
and    $0x1,%bl
neg    %bl
mov    %bl,-0x3(%rsi)
mov    %edx,%ebx
shl    $0x1e,%ebx
sar    $0x1f,%ebx
mov    %bl,(%r10,%rcx,1)
add    %r10,%rcx
mov    %edx,%ebx
shl    $0x1d,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %edx,%ebx
shl    $0x1c,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
shl    $0x1b,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
sar    $0xa,%edx
mov    %edx,%ebx
and    $0x1,%bl
neg    %bl
mov    %bl,-0x4(%rsi)
mov    %edx,%ebx
shl    $0x1e,%ebx
sar    $0x1f,%ebx
mov    %bl,(%r10,%rcx,1)
add    %r10,%rcx
mov    %edx,%ebx
shl    $0x1d,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %edx,%ebx
shl    $0x1c,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
shl    $0x1b,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
sar    $0x5,%edx
mov    %edx,%ebx
and    $0x1,%bl
neg    %bl
mov    %bl,-0x5(%rsi)
mov    %edx,%ebx
shl    $0x1e,%ebx
sar    $0x1f,%ebx
mov    %bl,(%r10,%rcx,1)
add    %r10,%rcx
mov    %edx,%ebx
shl    $0x1d,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %edx,%ebx
shl    $0x1c,%ebx
sar    $0x1f,%ebx
mov    %bl,(%rax,%rcx,1)
add    %rax,%rcx
shl    $0x1b,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
and    $0x1,%dl
neg    %dl
mov    %dl,-0x6(%rsi)
mov    %r11d,%edx
shl    $0x1e,%edx
sar    $0x1f,%edx
mov    %dl,(%r10,%rcx,1)
add    %r10,%rcx
mov    %r11d,%edx
shl    $0x1d,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
mov    %r11d,%edx
shl    $0x1c,%edx
sar    $0x1f,%edx
mov    %dl,(%rax,%rcx,1)
add    %rax,%rcx
shl    $0x1b,%r11d
sar    $0x1f,%r11d
mov    %r11b,(%rax,%rcx,1)
movzbl (%rdi),%ecx
add    $0x1,%rdi
add    $0x7,%rsi
test   %cl,%cl
je     1357 <vp8_blit_text+0x257>
lea    -0x20(%rcx),%r11d
mov    %r9,%rdx
cmp    $0x3b,%r11b
jb     1140 <vp8_blit_text+0x40>
lea    -0x61(%rcx),%ebx
xor    %r11d,%r11d
mov    $0xffffffc0,%edx
cmp    $0x19,%bl
jbe    1140 <vp8_blit_text+0x40>
jmp    114a <vp8_blit_text+0x4a>
pop    %rbx
ret

LLVM IR (-O0):
@__const.vp8_blit_text.font = [65 x i32] [i32 0, i32 23552, i32 32800, i32 11512810, i32 884416, i32 17895697, i32 25515840, i32 98304, i32 17856, i32 476160, i32 332096, i32 145536, i32 802816, i32 135296, i32 524288, i32 1118480, i32 15324974, i32 556608, i32 19584818, i32 11195946, i32 5215428, i32 317111, i32 284330, i32 4097059, i32 11196074, i32 11196066, i32 10240, i32 10752, i32 567424, i32 338240, i32 141856, i32 87074, i32 7001646, i32 31761726, i32 11196095, i32 575022, i32 15255103, i32 18405055, i32 1086655, i32 13289006, i32 32641183, i32 18415153, i32 16303656, i32 567455, i32 17318431, i32 32575583, i32 32772191, i32 15255086, i32 2266303, i32 23381550, i32 19305663, i32 9098914, i32 1113121, i32 33047071, i32 7618823, i32 16261647, i32 18157905, i32 1142849, i32 18470705, i32 18400, i32 17043521, i32 1033216, i32 66624, i32 17318416, i32 2080]
define void @vp8_blit_text(i8* %0, i8* %1, i32 %2) {
%4 = alloca i8*
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca [65 x i32]
%11 = alloca i8
%12 = alloca i32
%13 = alloca i32
store i8* %0, i8** %4
store i8* %1, i8** %5
store i32 %2, i32* %6
%14 = load i8*, i8** %5
store i8* %14, i8** %8
%15 = bitcast [65 x i32]* %10 to i8*
store i32 0, i32* %9
br label %16
16: ; preds = %100, %3
%17 = load i8*, i8** %4
%18 = load i32, i32* %9
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds i8, i8* %17, i64 %19
%21 = load i8, i8* %20
%22 = sext i8 %21 to i32
%23 = icmp ne i32 %22, 0
br i1 %23, label %24, label %105
24: ; preds = %16
%25 = load i8*, i8** %4
%26 = load i32, i32* %9
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds i8, i8* %25, i64 %27
%29 = load i8, i8* %28
store i8 %29, i8* %11
%30 = load i8, i8* %11
%31 = sext i8 %30 to i32
%32 = icmp sle i32 %31, 90
br i1 %32, label %33, label %44
33: ; preds = %24
%34 = load i8, i8* %11
%35 = sext i8 %34 to i32
%36 = icmp sge i32 %35, 32
br i1 %36, label %37, label %44
37: ; preds = %33
%38 = load i8, i8* %11
%39 = sext i8 %38 to i32
%40 = sub nsw i32 %39, 32
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds [65 x i32], [65 x i32]* %10, i64 0, i64 %41
%43 = load i32, i32* %42
store i32 %43, i32* %7
br label %65
44: ; preds = %33, %24
%45 = load i8, i8* %11
%46 = sext i8 %45 to i32
%47 = icmp sle i32 %46, 122
br i1 %47, label %48, label %61
48: ; preds = %44
%49 = load i8, i8* %11
%50 = sext i8 %49 to i32
%51 = icmp sge i32 %50, 97
br i1 %51, label %52, label %61
52: ; preds = %48
%53 = load i8, i8* %11
%54 = sext i8 %53 to i32
%55 = sub nsw i32 %54, 97
%56 = add nsw i32 %55, 65
%57 = sub nsw i32 %56, 32
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds [65 x i32], [65 x i32]* %10, i64 0, i64 %58
%60 = load i32, i32* %59
store i32 %60, i32* %7
br label %64
61: ; preds = %48, %44
%62 = getelementptr inbounds [65 x i32], [65 x i32]* %10, i64 0, i64 0
%63 = load i32, i32* %62
store i32 %63, i32* %7
br label %64
64: ; preds = %61, %52
br label %65
65: ; preds = %64, %37
store i32 6, i32* %12
br label %66
66: ; preds = %97, %65
%67 = load i32, i32* %12
%68 = icmp sge i32 %67, 0
br i1 %68, label %69, label %100
69: ; preds = %66
store i32 0, i32* %13
br label %70
70: ; preds = %93, %69
%71 = load i32, i32* %13
%72 = icmp slt i32 %71, 5
br i1 %72, label %73, label %96
73: ; preds = %70
%74 = load i32, i32* %7
%75 = load i32, i32* %12
%76 = mul nsw i32 %75, 5
%77 = ashr i32 %74, %76
%78 = load i32, i32* %13
%79 = shl i32 1, %78
%80 = and i32 %77, %79
%81 = icmp ne i32 %80, 0
%82 = zext i1 %81 to i64
%83 = select i1 %81, i32 255, i32 0
%84 = trunc i32 %83 to i8
%85 = load i8*, i8** %8
%86 = load i32, i32* %13
%87 = load i32, i32* %6
%88 = mul nsw i32 %86, %87
%89 = load i32, i32* %12
%90 = add nsw i32 %88, %89
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i8, i8* %85, i64 %91
store i8 %84, i8* %92
br label %93
93: ; preds = %73
%94 = load i32, i32* %13
%95 = add nsw i32 %94, 1
store i32 %95, i32* %13
br label %70
96: ; preds = %70
br label %97
97: ; preds = %96
%98 = load i32, i32* %12
%99 = add nsw i32 %98, -1
store i32 %99, i32* %12
br label %66
100: ; preds = %66
%101 = load i8*, i8** %8
%102 = getelementptr inbounds i8, i8* %101, i64 7
store i8* %102, i8** %8
%103 = load i32, i32* %9
%104 = add nsw i32 %103, 1
store i32 %104, i32* %9
br label %16
105: ; preds = %16
ret void
}

LLVM IR (-O2):
@__const.vp8_blit_text.font = [65 x i32] [i32 0, i32 23552, i32 32800, i32 11512810, i32 884416, i32 17895697, i32 25515840, i32 98304, i32 17856, i32 476160, i32 332096, i32 145536, i32 802816, i32 135296, i32 524288, i32 1118480, i32 15324974, i32 556608, i32 19584818, i32 11195946, i32 5215428, i32 317111, i32 284330, i32 4097059, i32 11196074, i32 11196066, i32 10240, i32 10752, i32 567424, i32 338240, i32 141856, i32 87074, i32 7001646, i32 31761726, i32 11196095, i32 575022, i32 15255103, i32 18405055, i32 1086655, i32 13289006, i32 32641183, i32 18415153, i32 16303656, i32 567455, i32 17318431, i32 32575583, i32 32772191, i32 15255086, i32 2266303, i32 23381550, i32 19305663, i32 9098914, i32 1113121, i32 33047071, i32 7618823, i32 16261647, i32 18157905, i32 1142849, i32 18470705, i32 18400, i32 17043521, i32 1033216, i32 66624, i32 17318416, i32 2080]
define void @vp8_blit_text(i8* nocapture %0, i8* nocapture writeonly %1, i32 %2) {
%4 = load i8, i8* %0
%5 = icmp eq i8 %4, 0
br i1 %5, label %199, label %6
6: ; preds = %3
%7 = sext i32 %2 to i64
%8 = shl nsw i64 %7, 1
%9 = mul nsw i64 %7, 3
%10 = shl nsw i64 %7, 2
%11 = add nsw i64 %7, 6
%12 = add nsw i64 %8, 6
%13 = add nsw i64 %9, 6
%14 = add nsw i64 %10, 6
%15 = add nsw i64 %7, 5
%16 = add nsw i64 %8, 5
%17 = add nsw i64 %9, 5
%18 = add nsw i64 %10, 5
%19 = add nsw i64 %7, 4
%20 = add nsw i64 %8, 4
%21 = add nsw i64 %9, 4
%22 = add nsw i64 %10, 4
%23 = add nsw i64 %7, 3
%24 = add nsw i64 %8, 3
%25 = add nsw i64 %9, 3
%26 = or i64 %10, 3
%27 = add nsw i64 %7, 2
%28 = add nsw i64 %8, 2
%29 = add nsw i64 %9, 2
%30 = or i64 %10, 2
%31 = add nsw i64 %7, 1
%32 = or i64 %8, 1
%33 = add nsw i64 %9, 1
%34 = or i64 %10, 1
br label %35
35: ; preds = %6, %51
%36 = phi i64 [ 0, %6 ], [ %195, %51 ]
%37 = phi i8 [ %4, %6 ], [ %197, %51 ]
%38 = phi i8* [ %1, %6 ], [ %194, %51 ]
%39 = sext i8 %37 to i64
%40 = add i8 %37, -32
%41 = icmp ult i8 %40, 59
br i1 %41, label %45, label %42
42: ; preds = %35
%43 = add i8 %37, -97
%44 = icmp ult i8 %43, 26
br i1 %44, label %45, label %51
45: ; preds = %42, %35
%46 = phi i64 [ 4294967264, %35 ], [ 4294967232, %42 ]
%47 = add nsw i64 %46, %39
%48 = and i64 %47, 4294967295
%49 = getelementptr inbounds [65 x i32], [65 x i32]* @__const.vp8_blit_text.font, i64 0, i64 %48
%50 = load i32, i32* %49
br label %51
51: ; preds = %42, %45
%52 = phi i32 [ 0, %42 ], [ %50, %45 ]
%53 = lshr i32 %52, 30
%54 = trunc i32 %53 to i8
%55 = and i8 %54, 1
%56 = sub nsw i8 0, %55
%57 = getelementptr inbounds i8, i8* %38, i64 6
store i8 %56, i8* %57
%58 = ashr i32 %52, 31
%59 = trunc i32 %58 to i8
%60 = getelementptr inbounds i8, i8* %38, i64 %11
store i8 %59, i8* %60
%61 = ashr i32 %52, 31
%62 = trunc i32 %61 to i8
%63 = getelementptr inbounds i8, i8* %38, i64 %12
store i8 %62, i8* %63
%64 = ashr i32 %52, 31
%65 = trunc i32 %64 to i8
%66 = getelementptr inbounds i8, i8* %38, i64 %13
store i8 %65, i8* %66
%67 = ashr i32 %52, 31
%68 = trunc i32 %67 to i8
%69 = getelementptr inbounds i8, i8* %38, i64 %14
store i8 %68, i8* %69
%70 = ashr i32 %52, 25
%71 = trunc i32 %70 to i8
%72 = and i8 %71, 1
%73 = sub nsw i8 0, %72
%74 = getelementptr inbounds i8, i8* %38, i64 5
store i8 %73, i8* %74
%75 = shl i32 %70, 30
%76 = ashr i32 %75, 31
%77 = trunc i32 %76 to i8
%78 = getelementptr inbounds i8, i8* %38, i64 %15
store i8 %77, i8* %78
%79 = shl i32 %70, 29
%80 = ashr i32 %79, 31
%81 = trunc i32 %80 to i8
%82 = getelementptr inbounds i8, i8* %38, i64 %16
store i8 %81, i8* %82
%83 = shl i32 %70, 28
%84 = ashr i32 %83, 31
%85 = trunc i32 %84 to i8
%86 = getelementptr inbounds i8, i8* %38, i64 %17
store i8 %85, i8* %86
%87 = shl i32 %70, 27
%88 = ashr i32 %87, 31
%89 = trunc i32 %88 to i8
%90 = getelementptr inbounds i8, i8* %38, i64 %18
store i8 %89, i8* %90
%91 = ashr i32 %52, 20
%92 = trunc i32 %91 to i8
%93 = and i8 %92, 1
%94 = sub nsw i8 0, %93
%95 = getelementptr inbounds i8, i8* %38, i64 4
store i8 %94, i8* %95
%96 = shl i32 %91, 30
%97 = ashr i32 %96, 31
%98 = trunc i32 %97 to i8
%99 = getelementptr inbounds i8, i8* %38, i64 %19
store i8 %98, i8* %99
%100 = shl i32 %91, 29
%101 = ashr i32 %100, 31
%102 = trunc i32 %101 to i8
%103 = getelementptr inbounds i8, i8* %38, i64 %20
store i8 %102, i8* %103
%104 = shl i32 %91, 28
%105 = ashr i32 %104, 31
%106 = trunc i32 %105 to i8
%107 = getelementptr inbounds i8, i8* %38, i64 %21
store i8 %106, i8* %107
%108 = shl i32 %91, 27
%109 = ashr i32 %108, 31
%110 = trunc i32 %109 to i8
%111 = getelementptr inbounds i8, i8* %38, i64 %22
store i8 %110, i8* %111
%112 = ashr i32 %52, 15
%113 = trunc i32 %112 to i8
%114 = and i8 %113, 1
%115 = sub nsw i8 0, %114
%116 = getelementptr inbounds i8, i8* %38, i64 3
store i8 %115, i8* %116
%117 = shl i32 %112, 30
%118 = ashr i32 %117, 31
%119 = trunc i32 %118 to i8
%120 = getelementptr inbounds i8, i8* %38, i64 %23
store i8 %119, i8* %120
%121 = shl i32 %112, 29
%122 = ashr i32 %121, 31
%123 = trunc i32 %122 to i8
%124 = getelementptr inbounds i8, i8* %38, i64 %24
store i8 %123, i8* %124
%125 = shl i32 %112, 28
%126 = ashr i32 %125, 31
%127 = trunc i32 %126 to i8
%128 = getelementptr inbounds i8, i8* %38, i64 %25
store i8 %127, i8* %128
%129 = shl i32 %112, 27
%130 = ashr i32 %129, 31
%131 = trunc i32 %130 to i8
%132 = getelementptr inbounds i8, i8* %38, i64 %26
store i8 %131, i8* %132
%133 = ashr i32 %52, 10
%134 = trunc i32 %133 to i8
%135 = and i8 %134, 1
%136 = sub nsw i8 0, %135
%137 = getelementptr inbounds i8, i8* %38, i64 2
store i8 %136, i8* %137
%138 = shl i32 %133, 30
%139 = ashr i32 %138, 31
%140 = trunc i32 %139 to i8
%141 = getelementptr inbounds i8, i8* %38, i64 %27
store i8 %140, i8* %141
%142 = shl i32 %133, 29
%143 = ashr i32 %142, 31
%144 = trunc i32 %143 to i8
%145 = getelementptr inbounds i8, i8* %38, i64 %28
store i8 %144, i8* %145
%146 = shl i32 %133, 28
%147 = ashr i32 %146, 31
%148 = trunc i32 %147 to i8
%149 = getelementptr inbounds i8, i8* %38, i64 %29
store i8 %148, i8* %149
%150 = shl i32 %133, 27
%151 = ashr i32 %150, 31
%152 = trunc i32 %151 to i8
%153 = getelementptr inbounds i8, i8* %38, i64 %30
store i8 %152, i8* %153
%154 = ashr i32 %52, 5
%155 = trunc i32 %154 to i8
%156 = and i8 %155, 1
%157 = sub nsw i8 0, %156
%158 = getelementptr inbounds i8, i8* %38, i64 1
store i8 %157, i8* %158
%159 = shl i32 %154, 30
%160 = ashr i32 %159, 31
%161 = trunc i32 %160 to i8
%162 = getelementptr inbounds i8, i8* %38, i64 %31
store i8 %161, i8* %162
%163 = shl i32 %154, 29
%164 = ashr i32 %163, 31
%165 = trunc i32 %164 to i8
%166 = getelementptr inbounds i8, i8* %38, i64 %32
store i8 %165, i8* %166
%167 = shl i32 %154, 28
%168 = ashr i32 %167, 31
%169 = trunc i32 %168 to i8
%170 = getelementptr inbounds i8, i8* %38, i64 %33
store i8 %169, i8* %170
%171 = shl i32 %154, 27
%172 = ashr i32 %171, 31
%173 = trunc i32 %172 to i8
%174 = getelementptr inbounds i8, i8* %38, i64 %34
store i8 %173, i8* %174
%175 = trunc i32 %52 to i8
%176 = and i8 %175, 1
%177 = sub nsw i8 0, %176
store i8 %177, i8* %38
%178 = shl i32 %52, 30
%179 = ashr i32 %178, 31
%180 = trunc i32 %179 to i8
%181 = getelementptr inbounds i8, i8* %38, i64 %7
store i8 %180, i8* %181
%182 = shl i32 %52, 29
%183 = ashr i32 %182, 31
%184 = trunc i32 %183 to i8
%185 = getelementptr inbounds i8, i8* %38, i64 %8
store i8 %184, i8* %185
%186 = shl i32 %52, 28
%187 = ashr i32 %186, 31
%188 = trunc i32 %187 to i8
%189 = getelementptr inbounds i8, i8* %38, i64 %9
store i8 %188, i8* %189
%190 = shl i32 %52, 27
%191 = ashr i32 %190, 31
%192 = trunc i32 %191 to i8
%193 = getelementptr inbounds i8, i8* %38, i64 %10
store i8 %192, i8* %193
%194 = getelementptr inbounds i8, i8* %38, i64 7
%195 = add nuw i64 %36, 1
%196 = getelementptr inbounds i8, i8* %0, i64 %195
%197 = load i8, i8* %196
%198 = icmp eq i8 %197, 0
br i1 %198, label %199, label %35
199: ; preds = %51, %3
ret void
}